美文网首页干货在这里首页推荐
mysql锁(三)myisam下锁的介绍和实践二

mysql锁(三)myisam下锁的介绍和实践二

作者: b12af9baadf4 | 来源:发表于2016-09-14 17:16 被阅读0次

    通过实践,我们来看看,对 MyISAM表进行写操作时,会如之前说的那样阻塞其他用户对该表的读写操作吗?

    (先建立一张test表,存储引擎为myisam,字段为id,name,并插入几条数据,给test表中插入500w条数据用于测试)


    ****开始前的小知识点****

    开始测试之前,我们需要知道一个小的知识点,因为接下来的测试速度太快,我们需要根据别的指标去判断当时是否发生了阻塞,执行如下命令:

    查看锁的争夺状况

    上图中,箭头标注的地方Table_locks_waited=280,它代表一共发生了280次不能立刻获得锁需要等待的情况,接下来的测试,我们会通过判断测试前 Table_locks_waited的值和测试后Table_locks_waited的值得对比来判断刚刚有没有发生阻塞情况。


    (1)A窗口在update时,立即去B窗口执行select,观察:

    初始值是280,测试完成后变成了281,说明发生了阻塞等待

    (2)A窗口在update时,立即去B窗口执行insert,观察:

    初始值是281,测试完成后变成了282,说明发生了阻塞等待

    (3)A窗口在update时,立即去B窗口执行delete,观察:

    初始值是282,测试完成后变成了283,说明发生了阻塞等待

    (4)A窗口在update时,立即去B窗口执行update,观察:

    初始值是283,测试完成后变成了284,说明发生了阻塞等待

    综上,对 MyISAM表写操作,则会阻塞其他用户对该表的读写操作,当一个线程获得对一个表的写锁后对表进行更新操作,其他线程的读、写操作(增删改查)都会等待,直到锁被释放为止。


    相关文章

      网友评论

        本文标题:mysql锁(三)myisam下锁的介绍和实践二

        本文链接:https://www.haomeiwen.com/subject/doivettx.html