Mysql 数据库存储引擎

    我们在使用 MySQL 数据库时,选择合适的存储引擎是很重要的。MySQL 数据库提供了多种存储引擎,它们各自有着不同的特性,了解他们的特性对于选择合适的存储引擎有很大的帮助。接下来简单介绍一下 MySQL 的使用较广的存储引擎。

InnoDB

在 MySQL 5.5 之后的版本,Innodb 是默认的存储引擎。

存储方式:

MyISAM

在 MySQL 5.1 及之前的版本,Myisam 是默认的存储引擎。

存储方式:

Myisam 会将表存储在两个文件中:数据文件和索引文件,它们分别以 .MYD 和 .MYI 为扩展名。Myisam 表可以包含动态和静态(长度固定)行,MySQL 会根据表的定义决定采用哪种行格式,Myisam 表可以存储的行记录数,一般受限于可用的磁盘空间,或者操作系统中单个文件的最大尺寸。

特性:
  1. 加锁与并发:对整张表加锁,而不是针对行。读取数据是会对涉及的所有表加共享锁,写入时加排它锁。在对表同时进行读写时,也可以插入新的记录,称为并发插入;
  2. 修复:对于 Myisam 表, MySQL 可以手工或者自动执行检查和修复操作(与事务恢复和崩溃修复不同)。执行表的修复可能会导致一些数据丢失,而且速度很慢;
  3. 索引:支持全文索引,当然较高版本的 Innodb 存储引擎也支持了全文索引。
  4. 压缩表:如果表在创建兵导入数据后,不会再进行修改操作,这样的表应该适合采用 Myisam 压缩表。可以使用 myisampack 对 Myisam 表进行压缩,压缩可以极大地减少磁盘占用空间,减少磁盘 I/O,从而提升查询性能。压缩表也支持索引,且为只读。
  5. 性能较好:Myisam 引擎设置简单,数据已紧密格式存储,所以在某些场景下的性能很好。
缺点
  1. 不支持事务
  2. 表级锁
  3. 崩溃后无法安全恢复

选择

    多数情况下,选择 Innodb 存储引擎都不会是错误的选择,所在 MySQL 5.5 版本后将其设定为默认的存储引擎。Myisam 引擎的写入和读取速度非常快,如果说业务场景中,读取和写入操作很多,并且数据不需要经常改变,而且不需要事务,并且可以接受修复操作,那么 Myisam 是一个合适的选择。Innodb 存储引擎支持事务,外键,并且为行级锁。我们现在的业务场景多数是比较的复杂的,需要事务的支持以及需要超高的并发处理能力,Innodb 的行级锁必不可少。总之,除非有非常特别的原因需要使用其他的存储引擎,否则优先考虑 Innodb 引擎。

文章同步发布在我的个人博客中,传送门Hesunfly Blog

你可能感兴趣的:(Mysql 数据库存储引擎)