myisam与innodb的区别
1.存储结构
myisam
在磁盘上存为3个文件,文件类型: .frm(文件存储表定义) .myd(存储数据文件) .myi(存储索引文件)
innodb
所有表保存在同一数据文件中(也可以为多个文件,若是开启独立表空间,则以表分组,每个表存在统一数据文件中)。innodb的大小受操作系统限制,一般为2GB
2.存储空间
myisam
可压缩,存储空间小,支持三种压缩格式: 静态表,动态表,压缩表。
innodb 需要更多的内存与存储空间 , 在内存中有缓存池
3.可移植性 备份,恢复
myisam
以文件的形式储存,方便移植。备份与恢复时可对单一表进行操作
innodb
移植数据文件时,可用mysqldump等操作,数据量大时不如myisam
4.事务
myisam
查询具有原子性(要么一起成功,要么一起失败),速度快,但是不支持事务
innodb
支持事务
5.表锁差异
myisam
只支持表级锁
innodb
支持行锁,大幅度提高用户的并发。innodb的行锁只在通过索引检索的数据时使用行锁,否则使用表锁
行锁与表锁
用户对表进行CRUD时,行锁将对相应的行数据锁上,表锁则是将整个表锁上。防止其他用户操作
6.fulltext 全文索引
myisam支持全文索引
innodb 不支持全文索引
7.主键
myisam 允许没有主键和索引的表存在
innodb 若是没有主键和唯一索引,则生成一个6字节的主键(用户不可见)
8.表的总行数
myisam 提前保存表的总行数,直接读取
innodb 需要遍历整个表,消耗大
但是加上where 都需要查询
9.CRUD
myisam
select 查询速度快
innodb
insert与update 性能好,delete innodb比myisam快
但是 delete from table innodb删除数据是一行一行的删除。最好使用truncate table
myisam 直接删除表,再建一个表
10.外键
myisam 不支持外键
innodb 支持外键

浙公网安备 33010602011771号