存储引擎

存储引擎的概念

数据库管理系统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表。

全部评论

相关推荐

joe2333:怀念以前大家拿华为当保底的日子
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务