mysql中级篇

并发控制

只要多个查询需要同时修改数据,就会产生并发控制问题。

mysql有两个级别的并发控制:服务器级别和存储引擎级别。

并发控制的解决方案:加锁。

两种锁:

  • 读锁 read lock,也叫共享锁 shared lock
  • 写锁 write lock,也叫排他锁 exclusive lock

如何提高并发?让锁的粒度更加精确,理想的方式:只对需要修改的数据片段进行精确的锁定。

由于加锁也要增加系统开销,需要平衡锁开销和数据安全性,称之为锁定策略

mysql有多种存储引擎,每个都可以实现自己的锁策略和锁粒度。

表锁

table lock,最基本也是开销最小的锁,锁整个表。写操作(CUD)需要先获取写锁,阻碍所有的读写操作;只有没有写操作,才能获得读锁,读锁之间不相互阻塞。

行锁

row lock,锁某一行,最大程度的支持并发处理,代价是锁开销巨大。行锁是存储引擎实现。innodb支持行锁。

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2023-2024 Larry Wang
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信