Home
Posts
Tag
About
mysql的存储引擎
mysql的存储引擎
2019-03-20 10:16:41
#mysql
#并发
#### 索引 |类型|存储引擎举例|count(*)|支持全文索引|说明| |:--:|:--:|:--:|:--:|:--| |聚集索引|InnoDB|需要全表扫描|Y|clustered index
数据和索引文件**储存在一起**,逻辑顺序与物理存储顺序**一致**,主键必须。使用辅助索引查询获得主键,再查询主键索引获得实际储存位置。| |非聚集索引|MyISAM|通过变量直接读取|N|nonclustered index
数据和索引文件**独立存储**,逻辑顺序**不同**于物理存储顺序,索引中保存的是数据文件的指针。| #### 支持的锁级别 |引擎类型|行锁|表锁|页锁| |--| :--: | :--: | :--: | |MyISAM||Y|| |DBD||Y|Y| |InnoDB |Y| Y | || #### 事务 MyISAM : 不支持 InnoDB : 支持,默认```auto_commit```开启,即每次查询都会自动使用一个事务进行封装。所以多条SQL语句组成一个事务提交效率更高 #### 存储结构 MyISAM : 数据库的每个数据表都有 ```表名.frm、表名.MYI、表名.YMD``` 三个文件,其中```.frm```存储数据表的表结构,```.MYI```存储数据表的索引,```.MYD```存数数据表的记录数据 InnoDB : 每个数据库下的每个数据表有 ```表名.frm、表名.ibd``` 两个文件,```.frm```存储数据表的表结构,而所有数据库的所有表数据索引、数据记录都全部存储在```.ibd(ibdata1文件)```中,而mysql根目录下的```ib_logfile0```和```ib_logfile1```是日志文件。 > 查看mysql数据文件根目录 > ```show global variables like "%datadir%";``` #### 选择方式 MyISAM : 强调性能,查询效率更高于后者6-7倍,适合读取操作多的场景 InnoDB : 提供事务支持等高级数据库操作,安全性更高,适合写操作多的场景 --- 参考资料: [Mysql——Innodb和Myisam概念与数据恢复](http://www.cnblogs.com/DwyaneTalk/p/4113829.html) [聚集索引和非聚集索引(整理)](https://www.cnblogs.com/aspnethot/articles/1504082.html)