mysql并发处理的两种机制:锁、MVCC(多版本控制)

锁类型
共享锁:也称为读锁,读锁允许多个连接可以同一时刻并发的读取同一资源,互不干扰。

排他锁:也称为写锁,一个写锁会阻塞其他的写锁或读锁,保证同一时刻只有一个连接可以写入数据,同时防止其他用户对这个数据的读写。

锁粒度
表级锁:MySQL中锁定粒度最大的一种锁,表示对当前操作的整张表加锁,它实现简单,资源消耗较少,被大部分MySQL引擎支持。最常使用的MyISAM与InnoDB都支持表级锁定。表级锁分为表共享读锁与表独占写锁。
开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。

行级锁:Mysql中锁定粒度最细的一种锁,表示只针对当前操作的行进行加锁。行级锁能大大减少数据库操作的冲突。其加锁粒度最小,但加锁的开销也最大。行级锁分为共享锁 和 排他锁。
开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。

间隙锁:当我们用范围条件检索数据而不是相等条件检索数据,InnoDB会给符合范围条件的已有数据记录的索引项加锁;对于键值在条件范围内但并不存在的记录,叫做“间隙(GAP)”。InnoDB也会对这个“间隙”加锁,这种锁机制就是所谓的间隙锁。

事务隔离级别

READ UNCOMMITTED :事务可以看到其他事务没有被提交的数据(脏数据)。

READ COMMITTED :事务可以看到其他事务已经提交的数据。

REPEATABLE READ :保证事务中多次查询的结果相同(Innodb默认级别),会出现幻读。

SERIALIZABLE :所有事务顺序执行,对所有read操作加锁。保证一致性。

MYSQL并发控制答案 mysql并发机制_加锁

MVCC

自己优化高并发效率:
1.代码中sql语句优化
2.据库字段优化,索引优化
3.加缓存,redis/memcache等
4.主从,读写分离
5.分区表
6.垂直拆分,解耦模块
7.水平切分