MySQL在服务器层面和存储引擎层面的并发控制。
- 读写锁
为了解决MySQL层面的并发,我们使用由两种类型的所组成的锁系统来进行控制,第一种类型的锁是共享锁,第二种类型的锁是排他锁,
共享锁(读锁):多个线程同时读取某一数据,互不影响。
排它锁(写锁):当有线程在进行写操作时,会阻塞其他线程的读操作和写操作。 锁的粒度
提高某一共享资源的并发性的另一种选择是让锁定的对象更具有选择性,尽量只锁定需要修改的部分资源,而不是所有的资源。锁策略
在锁定开销和数据安全间寻求平衡
表级锁:并发性较差,但是锁的开销小。
行级锁:最大程度上支持并发,但是锁的开销大。事务
一组原子性能的sql查询/一个独立的工作单元 ACID隔离级别 :事务间的可见性
读未提交
不可重复读 :另外一个事务修改了数据
幻读:另外一个事务插入了新数据
串行化MVCC
(多版本并发控制):行锁的变种,适用于 不可重复读、
幻读的隔离级别