存储引擎

存储引擎的概念

数据库管理系统DBMS可以对数据库进行增删改查的操作,其中底层使用的就是数据库的存储引擎机制,不同的存储引擎提供不同的存储机制、索引机制、锁定水平,是否使用事务和其他特定功能,默认情况下创建新表会有默认的存储引擎MyISAM。

存储引擎主要有4个:MyIASM、InnoDB、Memory、Merge;

MyISAM

1、MyISAM默认的存储引擎,使用的是表级别锁,每个MyISAM创建后会生成三个文件,分别是.frm(存储表定义) .myd(存储数据) .myi(存储引擎)

2、优势:访问速度快,对事务完整性没有要求,select,inesrt为主的选择密集型表都可以使用这个引擎

3、缺点:不支持事务,不支持外键

设计简单,数据以紧密格式存储。对于只读数据,或者表比较小、可以容忍修复操作,则依然可以使用它。

提供了大量的特性,包括压缩表、空间数据索引等。

可以手工或者自动执行检查和修复操作,但是和事务恢复以及崩溃恢复不同,可能导致一些数据丢失,而且修复操作是非常慢的。

InnoDB

1、InnoDB是一种事务型存储引擎,使用的行级别锁,支持外键

2、适用的场合:

  • 更新密集型表
  • 事务
  • 外键约束表
  • 支持自动增加列auto_increment

InnoDB是 MySQL 默认的事务型存储引擎,只有在需要它不支持的特性时,才考虑使用其它存储引擎。

实现了四个标准的隔离级别,默认级别是可重复读(REPEATABLE READ)。在可重复读隔离级别下,通过多版本并发控制(MVCC)+ 间隙锁(Next-Key Locking)防止幻影读。

主索引是聚簇索引,在索引中保存了数据,从而避免直接读取磁盘,因此对查询性能有很大的提升。

MyISAM和InnoDB比较

事务:InnoDB 是事务型的,可以使用 Commit 和 Rollback 语句。

并发:MyISAM 只支持表级锁,而 InnoDB 还支持行级锁。

外键:MyISAM不支持,而InnoDB支持

备份:InnoDB 支持在线热备份。

崩溃恢复:MyISAM 崩溃后发生损坏的概率比 InnoDB 高很多,而且恢复的速度也更慢。

Memory

memory存储引擎使用存在内存中的内容创建表,每个memory表只实际对应一个磁盘文件.frm ,memory类型的表访问非常快,因为数据是放在内存中的,默认使用的是hash索引,一旦服务关闭,数据就会丢失

应用场景:

  • 目标数据比较小,并且被经常访问的表。
  • 如果数据是临时的,要求必须立即使用
  • 存储在memory表中的数据突然丢失,不会对应用服务造成实质性影响

Merge

Merge存储引擎就是MyISAM存储引擎的聚合,这些操作其实就是对MyISAM表的操作

应用场景:对于服务器日志信息,需要将数据分为多表。例如12个相同的日志表记录不同月份的服务器数据,之前可能需要多表的查询,目前采用Merge存储引擎,将12个表合并一起使用一条查询,之后再删除Merge表。

全部评论

相关推荐

xdm 早上喝奶茶差点喷出来。事情是这样的,我们班有个哥们儿,简称 L,去年秋招拿了字节sp,专业方向是后端。我们当时都震惊:这哥们儿平时课上从来不发言,期末小组作业基本是划水的那种,刷题平台 commit记录我点进去看过,绿格子稀稀拉拉。但他面试一路绿灯。一面二面三面 hr 面,全过,给的还是sp。当时班级群里恭喜他的、问他经验的、约饭的,热闹了一周。他说自己"运气好,准备充分"。我们都信了,直到三月初他入职。入职第二周开始,班里另一个进字节的同学W(在隔壁组的)开始跟我他的不对劲。一开始是写代码慢,后来写不出来,再后来是组里 mentor 让他fix 一个简单 bug 都搞了一下午没动静。最离谱的是上周。W 说他们大部门搞了个新人分享会,让新人讲一下自己负责模块的设计思路。L 上去讲了 20分钟,全程念稿子,问答环节别人随便问一个"那你这里为什么用 Redis 不用 Memcached",他直接卡 30秒说"这个我回去再确认一下"。会后他 mentor 直接找 leader 谈,leader 找 hr 谈,hr调出了他面试录像,全程对比口型和回答节奏,发现他二三面有大量时长在偷偷看屏幕外(推测开了双机位 AI 答题)。(这段是 W后来转述给我的,他自己也是听他组里同事八卦来的)昨天下班前,W 告诉我L 被辞退了,让他自己走,不走就走仲裁但会发函到学校。L 现在已经回学校了,朋友圈仅三天可见。我说真的,我不是个心眼小的人,但是我看到这个消息的时候真的有种"嗯,挺好"的感觉。去年秋招我投字节后端,简历挂。我准备了八个月,背 八股 + 刷 500 题 +项目改了三版,连面试机会都没拿到。班里这哥们儿凭着一个外挂上岸,最后还是被甩出来了。不是说作弊就一定会被发现,但是当面试拿到的 offer远远超出真实能力的时候,迟早会有这一天。试用期三个月不是给你过家家的,是真的要写代码、要在会议上回答问题、要扛需求的。我现在反而有点同情他。同情他相信"上岸就是终点"。发出来不是为了嘲笑谁,就是想说给那些正在被身边作弊上岸的同学搞得很 emo 的 uu 们听——别急,回旋镖很长,但它一定会回来。你继续刷你的题,写你的项目,背你的八股。该是你的迟早是你的,不是你的早晚还得还回去。xdm 共勉。
牛客12588360...:我不想评论面试方式,作弊是绝对不对的,但是你八股加刷题也不过是个做题小子,他穿帮纯粹是他菜,你也没有高明到哪里去
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务