MyISAM和InnoDB引擎的区别

区别

  1. 构造上的区别:MyISAM在磁盘上存储成三个文件,其中.frm文件存储表定义;.MYD (MYData)为数据文件;.MYI (MYIndex)为索引文件。而Innodb是由.frm文件、表空间(分为独立表空间或者共享表空间)和日志文件(redo log)组成。
  2. 事务上的区别:MyISAM不支持事务,而InnoDB支持事务。
  3. 锁上的区别:MyISAM使用的是表锁;而InnoDB使用的行锁(当然InnoDB也支持表锁)。表级锁:直接锁定整张表,在锁定期间,其他进程无法对该表进行写操作,如果设置的是写锁,那么其他进程读也不允许,因此MyISAM支持的并发量低,但MyISAM不会出现死锁; 行级锁:只对指定的行进行锁定,其他进程还是可以对表中的其他行进行操作的。因此行锁能大大的减少数据库操作的冲突,但有时会导致死锁。
  4. 是否支持外键的区别: MyISAM不支持外键,InnoDB支持外键。
  5. select count(*)的区别:对于没有where的count(*)使用MyISAM要比InnoDB快得多。因为MyISAM内置了一个计数器,count(*)时它直接从计数器中读,而InnoDB必须扫描全表来计算有多少行。
  6. 索引方式不同:MyISAM的索引文件和数据文件是分离的,索引文件通过指针来指向数据文件相应的行,而InnoDB的数据文件是按照索引的数据结构(B+Tree)来组织的,即InnoDB的数据文件被存储为一颗B+Tree。

应用场景

  1. MyISAM适合:(1)做很多count 的计算(2)插入不频繁,查询(select)非常频繁(3)没有事务的情况。
  2. InnoDB适合:(1)可靠性要求比较高,或者要求事务(2)表更新(update、insert)相当的频繁,并且行锁定的机会比较大的情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值