[转帖] MySQL常见的存储引擎InnoDB、MyISAM的区别?
mysql,常见,存储,引擎,innodb,myisam,区别
·
浏览次数 : 0
小编点评
**1)事务:**MyISAM不支持事务,InnoDB支持。
**2)锁级别:**MyISAM 表级锁,InnoDB 行级锁及外键约束。
**3)总行数:**MyISAM存储表的总行数,InnoDB不存储。
**4)索引类型:**MyISAM采用非聚集索引,B+树叶子存储指向数据文件的指针;InnoDB主键索引采用聚集索引,B+树叶子存储数据适用场景。
正文
1)事务:MyISAM不支持,InnoDB支持
2)锁级别:MyISAM 表级锁,InnoDB 行级锁及外键约束
(MySQL表级锁有两种模式:表共享读锁(Table Read Lock)和表独占写锁(Table Write Lock)。什么意思呢,就是说对MyISAM表进行读操作时,它不会阻塞其他用户对同一表的读请求,但会阻塞对同一表的写操作;而对MyISAM表的写操作,则会阻塞其他用户对同一表的读和写操作。
InnoDB行锁是通过给索引项加锁来实现的,即只有通过索引条件检索数据,InnoDB才使用行级锁,否则将使用表锁!行级锁在每次获取锁和释放锁的操作需要消耗比表锁更多的资源。在InnoDB两个事务发生死锁的时候,会计算出每个事务影响的行数,然后回滚行数少的那个事务。当锁定的场景中不涉及Innodb的时候,InnoDB是检测不到的。只能依靠锁定超时来解决。)
3)MyISAM存储表的总行数;InnoDB不存储总行数;
4)MyISAM采用非聚集索引,B+树叶子存储指向数据文件的指针。InnoDB主键索引采用聚集索引,B+树叶子存储数据
适用场景:
MyISAM适合:插入不频繁,查询非常频繁,如果执行大量的SELECT,MyISAM是更好的选择, 没有事务。
InnoDB适合:可靠性要求比较高,或者要求事务;表更新和查询都相当的频繁, 大量的INSERT或UPDATE
与[转帖] MySQL常见的存储引擎InnoDB、MyISAM的区别?相似的内容: