Mysql 中 myisam 与 innodb 的区别

Mysql 中 myisam 与 innodb 的区别,第1张

概述存储结构 MyISAM:每个 MyISAM 在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指 出文件类型。.frm 文件存储表定义。数据文件的扩展名为.MYD (MYData)。索引文 存储结构MyISAM:每个 MyISAM 在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。.frm 文件存储表定义。数据文件的扩展名为.MYD (MYData)。索引文件的扩展名是.MYI(MYIndex)InnoDB:所有的表都保存在同一个数据文件中(也可能是多个文件,或者是独立的表空间文件),InnoDB 表的大小只受限于 *** 作系统文件的大小,一般为 2GB。存储空间MyISAM:可被压缩,存储空间较小。支持三种不同的存储格式:静态表(默认,但是注意数据末尾不能有空格,会被去掉)、动态表、压缩表。InnoDB:需要更多的内存和存储,它会在主内存中建立其专用的缓冲池用于高速缓冲数据和索引。事务支持MyISAM:强调的是性能,每次查询具有原子性,其执行数度比 InnoDB 类型更快,但是不提供事务支持。InnoDB:提供事务支持事务,外部键等高级数据库功能。 具有事务(commit)、回滚(rollback)和崩溃修复能力(crash recovery capabilitIEs)的事务安全(transaction-safe (ACID compliant))型表。 

SELECT、UPDATE、INSERT、Delete *** 作 
如果执行大量的SELECT,MyISAM是更好的选择。 
如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表。 
DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。而MyISAM则是重新建立表。在innodb上如果要清空保存有大量数据的表,最好使用truncate table这个命令。

auto_INCREMENT 
MyISAM:可以和其他字段一起建立联合索引。引擎的自动增长列必须是索引,如果是组合索引,自动增长可以不是第一列,他可以根据前面几列进行排序后递增。 
InnoDB:InnoDB中必须包含只有该字段的索引。引擎的自动增长列必须是索引,如果是组合索引也必须是组合索引的第一列

全文索引 

MyISAM:支持 FulLTEXT类型的全文索引。不支持中文。

InnoDB:不支持FulLTEXT类型的全文索引,但是innodb可以使用sphinx插件支持全文索引,并且效果更好。

表锁差异 

MyISAM:只支持表级锁,只支持表级锁,用户在 *** 作myisam表时,select,update,delete,insert语句都会给表自动加锁。 
InnoDB:支持事务和行级锁,是innodb的最大特色。行锁大幅度提高了多用户并发 *** 作的新能。但是InnoDB的行锁也不是绝对的,如果在执行一个SQL语句时MysqL不能确定要扫描的范围,InnoDB表同样会锁全表, 例如update table set num=1 where name like “%aaa%”


一般来说: 
MyISAM适合: 

做很多count 的计算; 插入不频繁,查询非常频繁; 没有事务。

InnoDB适合:

可靠性要求比较高,或者要求事务; 表更新和查询都相当的频繁,并且表锁定的机会比较大的情况。两种类型最主要的差别就是Innodb 支持事务处理与外键和行级锁。

 

总结

以上是内存溢出为你收集整理的Mysql 中 myisam 与 innodb 的区别全部内容,希望文章能够帮你解决Mysql 中 myisam 与 innodb 的区别所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1151965.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存