[MySQL] mysql 的读写锁与并发控制

[MySQL] mysql 的读写锁与并发控制,第1张

概述1.无论何时只要有多个查询在同一时刻修改数据,都会产生并发控制的问题 2.讨论mysql在两个层面,服务器层和存储引擎层,如何并发控制读写 3.举了个mbox邮箱文件的例子,说如果有多个进程同时对mb

 1.无论何时只要有多个查询在同一时刻修改数据,都会产生并发控制的问题

2.讨论MysqL在两个层面,服务器层和存储引擎层,如何并发控制读写

3.举了个mBox邮箱文件的例子,说如果有多个进程同时对mBox文件写东西,那么在文件的末尾会,交叉混乱的添加,比如进程1写了几行,进程2也写了几行,互相交叉,数据就是错误的了.设计良好的mBox需要加锁,比如进程1锁住了文件,进程2必须等待进程1结束,锁释放才能去写.但是这样的话就不支持并发了,同一时刻只有一个进程可以写数据

4.读取时可能也会有问题,比如一个进程正在读数据,另一个进程同时想去删数据,此时就是不安全的;共享锁叫读锁,排他锁叫写锁

5.读锁是共享的,它不会阻塞其他读锁;写锁是排他的,它会阻塞其他读锁和写锁;读读不互斥,读写互斥,写写互斥

6.MysqL每时每刻都在发生锁定,当某用户在修改数据时,会阻塞其他用户读取该数据

7.MysqL中有两种锁粒度,锁住整张表和锁住表中一行

表锁:当某用户修改数据时,会获取写锁,此时会锁住整张表,其他用户都不能读和写,myisam

行锁:当某用户修改某几行数据,此时只是锁住那几行,那几行其他用户不能读和写;其他行没有影响,但是管理锁会消耗资源,innodb

 

8.使用命令来锁表
unlock tables 解锁所有行
lock tables 表名 read或者write

 测试读写/写读互斥

1.增加读锁

读数据没影响,写数据会被阻塞住

2.增加写锁

读和写都会被阻塞

 

总结

以上是内存溢出为你收集整理的[MySQL] mysql 的读写锁与并发控制全部内容,希望文章能够帮你解决[MySQL] mysql 的读写锁与并发控制所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/1152706.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-31
下一篇2022-05-31

发表评论

登录后才能评论

评论列表(0条)

    保存