码迷,mamicode.com
首页 > 其他好文 > 详细

了解MyISAM存储引擎

时间:2020-07-17 01:26:06      阅读:86      评论:0      收藏:0      [点我收藏+]

标签:优先   proc   图片   系统   style   如何   并且   多版本   roc   

  由于目前接触到的客户还在使用MyISAM存储引擎,所以抽空看了一下MyISAM存储引擎的一些知识。

  由于在2010年MySQL默认的存储引擎已经是Innodb存储引擎了,所以一直是深入了解的是InnoDB相关的知识。

 

  结论一:MyISAM存储引擎默认SELECT语句会在表级别加一个共享读锁(table read lock)。

  结论二:MyISAM存储引擎表会优先执行DML语句,即使是先接受到SELECT语句。

 

如何验证上述两个结论?

 

    验证方案:因为MyISAM引擎表不支持事务,所以我们不能像InnoDB表一样开启一个事务,来查看当前有哪些锁。所以通过模拟并发的操作,第一个session做select操作,第二个session做更新操作,第三个session执行show full processlist;查看语句当前执行的状态。

    验证步骤:

        1、首先插入2千万行的数据到myisam表中。

        2、然后打开三个MySQL连接窗口,并准备好下面的语句。第一个session查询某一个值;第二个session执行更新操作,更新所有的行;第三个执行show full processlist;

        3、然后依次执行三个窗口的SQL语句。

 

技术图片

 

 

通过上述两个结论我们可以得出以下几条结论

 

  结论三:MyISAM可以用于非事务性数据系统,可以接受宕机导致数据丢失、并且只有读操作的场景,并不适用于读多写少的场景。因为我们上面看到了读写是互斥的,这在InnoDB存储引擎是不会发生的,InnoDB通过行多版本并发控制很好的解决了读写互斥的问题,并且保证在读取时,读取到的是已经提交了的数据。

 

  

 

了解MyISAM存储引擎

标签:优先   proc   图片   系统   style   如何   并且   多版本   roc   

原文地址:https://www.cnblogs.com/li-guanhua/p/13326477.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!