美文网首页数据库首页推荐被首页投稿拒绝的稿件
mysql锁(二)myisam下锁的介绍和实践一

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

作者: b12af9baadf4 | 来源:发表于2016-09-02 17:37 被阅读459次

**** MyISAM引擎下如何设置表锁****

MyISAM在执行查询语句(SELECT)前,会自动给涉及的所有表加读锁,我们不需要手动去做任何的操作!

MyISAM在执行更新操作 (UPDATE、DELETE、INSERT等)前,会自动给涉及的表加写锁,,我们不需要手动去做任何的操作,因此,只要给表设置myisam引擎,就可以了。


****阻塞发生的场景****
对MyISAM表读操作时候,不会阻塞其他用户对同一表的读请求,但会阻塞对同一表的写请求

对MyISAM表写操作,则会阻塞其他用户对该表的读写操作,当一个线程获得对一个表的写锁后可以对表进行更新操作,其他线程的读、写操作都会等待,直到锁被释放为止


接下来通过实践来观察下,对MyISAM表读操作时候,会如上面我们说的那样其他用户对该表的读请求不会阻塞,写请求会阻塞吗?

(先建立一张test表,存储引擎为myisam,字段为id,name,并插入几条数据)

(1)A窗口在select的时候特意暂停了12秒,然后立即去B窗口执行select,观察:

在A窗口查询没有结束之前,B窗口对该表进行查询,查询结果立刻出现,无需等待A窗口的查询结束
:sleep(4)是每条数据暂停4秒的意思,如果select的结果数据有1条就会暂停4秒,有3条就会暂停12秒
(2)A窗口在select的时候特意暂停了12秒,然后立即去B窗口执行update,观察:
在查询没有结束之前,update更新操作是处于一直等待状态,查询结束之后,update操作才开始执行

(3)A窗口在select的时候特意暂停了12秒,然后立即去B窗口执行delete,观察:

在查询没有结束之前,delete删除操作是处于一直等待状态,查询结束之后,delete操作才开始执行

(4)A窗口在select的时候特意暂停了12秒,然后立即去B窗口执行insert,观察:

在查询没有结束之前,insert操作是处于一直等待状态,查询结束之后,insert操作才开始执行

经过上面的4个测试,我们可以看到myisam表在执行查询操作的时候,其他进程对该表的读操作没有影响,但是写操作(增删改查)会发生阻塞,直到第一个获得读锁的进程操作完成释放完读锁后,写操作才能进行。

相关文章

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

    **** MyISAM引擎下如何设置表锁**** MyISAM在执行查询语句(SELECT)前,会自动给涉及的所有...

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

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

  • Mysql 锁详解

    Mysql 锁详解一、前言二、MyISAM2.1 MyISAM表锁2.2 查询表级锁争用情况2.3 MySQL表级...

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

    ****MYISAM存储引擎下读锁和写锁是互斥的****MYISAM存储引擎下读锁和写锁是互斥的,即当两个请求同时...

  • MySQL的锁机制

    mysql的锁机制 1、MySQL锁的基本介绍 MyISAM:MySQL的表级锁有两种模式:表共享读锁(Table...

  • MySQL死锁及解决方案

    1 MySQL锁类型 1. MySQL常用存储引擎的锁机制 MyISAM和MEMORY采用表级锁(table-le...

  • (105)mysql优化之MyISAM表锁

    概述 MyISAM存储引擎只支持表锁,mysql的表锁有两种模式:读锁和写锁。他们的兼容关系是(对myisam的读...

  • MySQL的锁机制

    锁的类型 MySQL的锁分为:行级锁、表级锁、页级锁 MyISAM 和 Memory 存储引擎使用的是表级锁 In...

  • 总结Mysql中的锁

    MySQL中的锁 概述 MyISAM支持表锁,InnoDB支持表锁和行锁,默认为行锁 表级锁:开销小,加锁快,不会...

  • InnoDB引擎的行锁和表锁

    在Mysql中,Innodb数据引擎支持行锁和表锁,Myisam数据引擎只支持表锁 1 行锁和表锁 行锁是通过索引...

网友评论

  • 敢死队111:请问你的动图是怎么录制的 写的很好
  • ba7226882bbc:你好,我实际尝试了,insert操作并没有收到影响,我的mysql版本是5.1.73;我试了mariaDB 10.1.9这版,也同样是insert操作不受影响。

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

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