MySQL数据库引擎对比

本文介绍了MySQL中MyISAM和InnoDB两种数据库引擎。MyISAM只支持表锁、不支持事务和外键等,强调性能;InnoDB支持行锁、事务和外键等,支持崩溃恢复。还给出了不同场景下引擎的选择建议,如主从分离中从服务器可用MyISAM,需事务支持选InnoDB。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

在MySQL5.5以前使用的是MyISAM数据库引擎,在5.6开始引入了InnoDB数据库引擎,大多数情况下使用的是InnoDB,在某些情况下使用MyISAM会更好,MyISAM更适合读密集的表,而InnoDB更适合写密集的的表

MyISAM

  • MyISAM只支持表锁,不支持行锁。 在操作MyISAM表时,会对操作的整张表加锁,读锁和写锁是互斥的,读锁是共享锁,写锁是排他锁。表锁的锁细粒度大,发生锁冲突的概率高,并发度最低。
  • 不支持事务。 强调的是性能,每次查询具有原子性,执行速度比InnoDB快,但是不提供事务支持。
  • 不支持外键,支持全文索引
  • 不支持崩溃恢复 (崩溃恢复指的是,数据库宕机后,原先操作一半的情况需要进行恢复,重新写入磁盘)
  • 保存了表的总行数,使用count函数会直接取出该值,但是使用where后则还是需要遍历 获取。

InnoDB

  • 支持行锁 使用了MVCC技术来实现高并发。
  • 支持事务 InnoDB和MyISAM相比最大的特色就是支持了ACID事务。
  • 支持外键,不支持全文索引 全文索引可以使用第三方的插件
  • 支持崩溃后的安全 恢复

InnoDB和MyISAM的对比总结

简单的说就是
在这里插入图片描述
总结:

  1. MyISAM更适合读密集的表,而InnoDB更适合写密集的的表。例如在数据库的主从分离中,可以选择从服务器使用MyISAM做为引擎。
  2. 如果需要事务的支持,保证数据的正确性,那么应该选择InnoDB
  3. 如果并发写操作较多时应该选择InnoDB,因为MyISAM的锁细粒度大,高并发写的场景下会造成较长的等待时间。
  4. MyISAM支持压缩,可以降低磁盘占用,如果在不需要事务支持,并且没有太多写操作的情况下,可以考虑MyISAM
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值