zoukankan      html  css  js  c++  java
  • 了解MyISAM存储引擎

      由于目前接触到的客户还在使用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通过行多版本并发控制很好的解决了读写互斥的问题,并且保证在读取时,读取到的是已经提交了的数据。

      

  • 相关阅读:
    jquery在表格中的全选、不选,下面全选,全选勾选中,下面一项没有选,全选勾未选中,并且带出请求值。
    比较好的插件
    js预加载loading的canvas写法
    div居中方法
    WEB14-未完
    WEB13
    WEB12
    WEB11-黑客入侵 后门问题
    WEB-10 头等舱
    WEB9-神奇的超全局变量-文件包含
  • 原文地址:https://www.cnblogs.com/li-guanhua/p/13326477.html
Copyright © 2011-2022 走看看