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数据库引擎的主要内容,如果未能解决你的问题,请参考以下文章