mysql的innodb和myisam对比及索引原理区别

事务和外键

InnoDB

InnoDB具有事务,支持4个事务隔离级别,回滚,崩溃修复能力和多版本并发的事务安全,包括ACID。如果应用中需要执行大量的insert和update操作,则应该使用InnoDB,这样可以提高多用户并发操作性能。

InnoDB不支持全文索引,如果一定要用的话,最好使用sphinx等搜索引擎。

MyISAM

MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索能力。如果应用中需要执行大量的select查询,那么MyISAM是更好的选择。

mysql中的锁

MySQL支持三种锁定级别:行级、页级、表级。
myisam支持表级锁定,提供与Oracle类型一致的不加锁读取。

innodb支持行级锁,innodb表的行锁也不是绝对的,如果在执行一个sql语句时MySQL不能确定要扫描范围,innodb表同样会锁全表,注意间隙锁的影响。

存储

myisam在磁盘上存储成三个文件,第一个文件的名字以表的名字开始,扩展名指出文件类型,frm文件存储表定义,数据文件的扩展名为.MYD,索引文件的扩展名是.MYI。

innodb基于磁盘的资源是Innodb表空间数据文件和它的日志文件,innodb表的大小只受损于操作系统文件的大小。

注意:myisam是保存成文件的形式,在跨平台的数据转移中使用myisam存储会省去不少的麻烦。

索引

innodb使用的聚簇索引、索引就是数据顺序存储,因此能缓存索引,也能缓存数据。

myisam使用的是非聚簇索引、索引和文件分开,随机存储,只能缓存索引。

并发

myisam读写互相阻塞,不仅会在写入的时候阻塞读取,myisa还会在读取的时候阻塞写入,但读本并不会阻塞另外的读。

innodb读写阻塞与事务的隔离级别有关。

两个选择的场景

MyISAM

  • 不需要事务的支持ÿ
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值