当前位置:网站首页>数据存储:MySQL之InnoDB与MyISAM的区别

数据存储:MySQL之InnoDB与MyISAM的区别

2022-06-26 05:17:00 青铜大神

存储方面

        InnoDB用frm文件存储表的定义、ibd存放数据和索引。

        Mysql8.0之前

                MyISAM用3个文件来存储数据,frm文件存储表的定义、MYD文件存放数据、MYI文件存放索引。

        Mysql8.0

                MySQL8开始删除了原来的frm文件,并采用 Serialized Dictionary Information (SDI), 是MySQL8.0重新设计数据词典后引入的新产物,并开始已经统一使用InnoDB存储引擎来存储表的元数据信息。SDI信息源记录保存在ibd文件中。SDI以JSON格式存储

                MyISAM用sdi存储表的定义、MYD文件存放数据、MYI文件存放索引。

功能方面

        1.InnoDB支持事务,MyISAM不支持。因为MyISAM不支持事务,比其安全的事务操作MyISAM更强调性能,所以查询效率会比InnoDB更高。

        2.InnoDB支持外键,MyISAM不支持。一个包含外键的InnoDB转MyISAM会失败。

        3.InnoDB是聚簇索引,MyISAM是非聚簇索引。InnoDB的主键索引是聚簇索引,InnoDB是必须要有主键的。

如果在创建表时没有显式地定义主键,则InnoDB存储引擎会按如下方式选择或创建主键:

1 首先判断表中是否有非空的唯一索引,如果有,则该列即为主键

2 如果不符合上述条件,InnoDB存储引擎自动创建一个6字节大小的主键(用户不可见)

        4.InnoDB不保存表的具体行数,执行 select count(*) from table 时需要全表扫描。MyISAM用一个变量保存了整个表的记录数,查询的时候只需要取出来,速度很快。

        5.InnoDB支持表级锁与行级锁,而MyISAM只支持表级锁。

原网站

版权声明
本文为[青铜大神]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_22156459/article/details/124933363