MYSQL - 读写锁

从邮箱中读取数据没有这样的麻烦,即使同一时刻多个用户并发读取也不会有什么问题。
因为读取不会修改数据,所以不会出错。但如果某个客户正在读取邮箱,同时另外一个
用户试图删除编号为25的邮件,会产生什么结果?结论是不确定,读的客户可能会报
错退出,也可能读取到不一致的邮箱数据。所以,为安全起见,即使是读取邮箱也需要
特别注意。

 

如果把上述的邮箱当成数据库中的一张表,把邮件当成表中的一行记录,就很容易看出,
同样的问题依然存在。从很多方面来说,邮箱就是一张简单的数据库表。修改数据库表
中的记录,和删除或者修改邮箱中的邮件信息,十分类似。

 

解决这类经典问题的方法就是并发控制,其实非常简单。在处理并发读或者写时,可以通过实现一个由两种类型的锁组成的锁系统来解决问题。这两种类型的锁通常被称为共享锁( shared lock)和排他锁( exclusive lock),也叫读锁( read lock)和写锁( write lock)

 

这里先不讨论锁的具体实现,描述一下锁的概念如下:读锁是共享的,或者说是相互不阻塞的。多个客户在同一时刻可以同时读取同一个资源,而互不干扰。写锁则是排他的,也就是说一个写锁会阻塞其他的写锁和读锁,这是出于安全策略的考虑,只有这样,才能确保在给定的时间里,只有一个用户能执行写入,并防止其他用户读取正在写入的同资源。

 

在实际的数据库系统中,每时每刻都在发生锁定,当某个用户在修改某一部分数据时,
MySQL会通过锁定防止其他用户读取同一数据。大多数时候, MySQL锁的内部管理都
是透明的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丢了尾巴的猴子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值