Mysql数据库引擎

Posted oldma

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql数据库引擎相关的知识,希望对你有一定的参考价值。

mysql 给我们提供了4中数据引擎: 

  MYISAM、HEAP和INNODB和BERKLEY(BDB)

这里着重说明常用的MYISAM和INNODB

 

MyIASM引擎

  1.MyIASM是MySQL默认的引擎,但是它没有提供对数据库事务的支持,不支持行级锁和外键

  因此INSERT(插入)或UPDATE(更新)数据时即写操作需要锁定整个表,效率便会低一些

  2.MYISAM强调了快速读取操作

  3.MyISAM格式的一个重要缺陷就是不能在表损坏后恢复数据。

 

InnoDB引擎

  Innodb引擎提供了对数据库ACID事务的支持,实现了SQL标准的四种隔离级别

  支持行锁和外来键。

MySQL运行时Innodb会在内存中建立缓冲池,用于缓冲数据和索引。

  1、覆盖索引查询时除了除了索引本身的包含的列,还可以使用其默认的聚集索引列

  2、nnoDB 中不保存表的具体行数,也就是说,执行select count(*) fromtable时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。

  3、对于INNODB的辅助索引,它的叶子节点存储的是索引值和指向主键索引的位置,然后需要通过主键在查询表的字段值,所以辅助索引存储了主键的值

  4、覆盖索引也可以用上INNODB 默认的聚集索引

  5、innodb引擎的所有储存了主键ID,事务ID,回滚指针,非主键ID,他的查询就会是非主键ID也可覆盖来取得主键ID

 

两种引擎的区别:

  1. InnoDB 提供了对数据库事务的支持,支持行锁和外键,而Myisam没有

  2.InnoDB中指定主键绑定预计索引,而Myisam中所有索引都是非聚集索引

  3.InnoDB使用的B-Tree ,而Mysiam使用的是B+tree

  

 

以上是关于Mysql数据库引擎的主要内容,如果未能解决你的问题,请参考以下文章

如何更改mysql数据库引擎

mysql储存引擎

如何修改MySQL数据库引擎为INNODB

MySQL存储引擎

mysql存储引擎

Mysql之数据库存储引擎