mysql 锁实验_engineer feng 的实验报告 (mysql锁)

本篇文章说明mysql的几个锁的情况。

MyISAM锁问题

我们使用存储引擎 MyISAM进行锁测试。MyISAM锁分为两种模式,第一种 表共享锁(Table Read Lock)和表独占写锁(Table Write Lock)。在多个线程同时需要写入的情况下,当一个线程获得对一个表的写锁后,只有持有锁线程可以对表进行更新操作。其他线程的读、写操作都会等待,直到锁被释放为止。MyISAM引擎中,锁的操作,在读(select)之前会自动加上读锁,在写(update,insert)之前会自动加上写锁。当然也可以手动使用如下语句加表锁,

LOCK tables [table_name] [mode] [local][,[table_name] [mode] [local]];

unlock tables;#释放锁

tablename 表名,mode read|write 读锁|写锁 ,local 如果加上local字符串,则当当前进程获取到读锁时,其他进程则可以在表末尾插入记录。接下来进行试验验证(创建一个表 test_myisam)结构如下:

开启另一个终端:

因为自动加锁很难感知存在,所以我们使用手动加锁方式进行锁的演示。读锁测试

测试三点。1.获取读锁时别的进程是否能够能够读。2.获取读锁时别的进程是否可以进行update或者insert操作。3.加local情况下测试2 。实验如下终端1终端2终端2终端1终端2

加字符串local状况测试:终端1终端2

实验结论: 当我们使用读锁时 ,别的进程一样是可以读取信息,只是更新操作是会等待,锁的释放,添加操作是在于我们设置的变量,是否允许锁时插入。

2. 写锁测试

主要测试两点。1.获取写锁时别的进程是否能够能够读。2.获取写锁时别的进程是否可以进行update或者insert操作。实验如下终端1终端2终端2终端2终端1

实验总结:当进程获取了写锁时,其他进程时不能进行任何操作。所以我们得注意锁的使用和在什么情况下会有锁。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值