Mysql并发控制

无论何时,只要不止一个查询同时修改数据时,都会产生并发问题。并发控制目的是当多个连接对数据库进行修改时保证数据的一致性。

mysql在两个层面上控制并发:服务器层和与存储引擎层。


读锁/写锁

在处理并发读或者并发写时,系统会采用一套锁系统来解决问题。这套锁系统由两类锁组成,通常称之为共享锁和排他锁,或者叫读锁和写锁。

读锁:资源的读锁是共享的,互不堵塞的。

写锁:写锁是排他的,一个写锁会堵塞其他的读锁和写锁。在给定的时间内只允许一个用户能够写入资源,以防止用户在写操作的时候其他用户读取同一资源。


任何时间,在给定的资源上,被枷锁的数据量越小就允许更多的并发修改,只要相互之间互不冲突即可。但是加锁会消耗系统资源,每一种锁操作如获得锁、检查锁是否解除以及释放锁都会增加系统开销。如何在锁开销和数据安全之间寻求一种平衡,将影响系统系能。


mysql两种重要锁策略

表级锁:MySQL独立于存储引擎提供表锁。

  虽然存储引擎能管理自己的锁,但是MySQL本身也使用了不同的表锁来提高效率。示例,服务器对于ALTER TABLE这个语句使用了表锁。而不管存储引擎的锁管理。
行级锁:InnoDB和Falcon存储引擎提供行级锁,此外,BDB支持页级锁。


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值