MySQL数据库锁
封锁
封锁是实现并发控制的一个非常重要的技术。所谓封锁就是事务T在对某个数据对象例如表、记录等操作之前先向系统发出请求,对其加锁。加锁后事务T就对该对象有了一定的控制,在事务T释放他的锁之前,其他事务不能更新此数据对象,例如事务T1要修改a,若在读出a之前先锁住a,其他事务就不能再读取和修改a了,直到T1修改并写回a后解除了对a的封锁为止,这样就不会丢失T1的修改。
封锁类型
确切的控制由封锁的类型决定,基本的封锁类型有两种,排他锁(exclusive locks,简称x锁)和共享锁(share locks,简称s锁)。
X锁(排他写锁)
若事务T1对数据对象a加上x锁,则只允许T读取和修改a,其他任何事务都不能再对a加任何类型的锁,直到T释放a上的锁为止,这就保证了其他事务在T释放a上的锁之前不能再读取和修改A;
S锁(共享读锁)
又叫阻塞写锁,若事务T对数据a加上s锁,则事务T可以读a,但是不能修改a。其他事务只能对a加s锁,而不能加x锁,则到T释放a上的s锁为止,这就保证了其他事务可以读a,但在T释放a上的s锁之前不能对a进行任何修改。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix