我爱编程

MyIsam与InnoDB的区别

2018-06-20  本文已影响0人  beldon_wu

MyIsam

构成
事务

不支持事务

增删改查
对AUTO_INCREMENT的操作
select count(*)

select count(*) from table,MyISAM只要简单的读出保存好的行数

表锁

InnoDB

构成
.ibd文件和.ibdata文件:

觉得使用哪种方式的参数在mysql的配置文件中 innodb_file_per_table

事务

InnoDB提供事务支持事务,外部键等高级 数据库功能

增删改查
对AUTO_INCREMENT的操作

参考链接

select count(*)

InnoDB 中不 保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行

提供行锁(locking on row level),提供与 Oracle 类型一致的不加锁读取(non-locking read in
SELECTs),另外,InnoDB表的行锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表,例如update table set num=1 where name like '%aaa%'

两种存储引擎的大致区别表现在:

关于MyISAM与InnoDB区别总结

对比项 MyIsam InnoDB
主外键 不支持 支持
事务 不支持 支持
行表锁 表锁,即使操作一条记录也会锁住整个表,不适合高并发的操作 行锁,操作时只锁某一行,不对其他行有影响,适合高并发操作
缓存 只缓存索引,不缓存真实数据 不仅缓存索引还要缓存真实数据,对内存需求比较高,而且内存大小对性能有决定性影响
表空间
关注点 性能 事务
默认安装
上一篇 下一篇

猜你喜欢

热点阅读