MySQL 并发处理
- 并发处理
- 当多个连接对记录进行修改时保证数据的一致性和完整性
-
为什么要用到并发控制
- 假设我们的数据库中存在着商品的记录,现在有两个用户进行登陆,假设一个用户要删除id为22的记录,一个用户要读取id为22的记录,那么会发生什么样的结果呢,结果可能是正在读取信息的用户报错而退出,也可能是他会得到一条和实际信息不符的信息。所以这个时候我们就需要用到并发控制了
- 怎么 处理并发问题
- 在处理并发读和并发写的时候,系统会使用一套锁系统来解决这个问题
- 什么是锁系统
- 锁系统由两类锁来组成
- 共享锁(读锁)
读锁是共享的互不阻塞的,在同一段时间内,多个用户可以读取同一个资源,读取过程中数据不会发生任何变化 - 排它锁(写锁)
写锁是排他的,在任何时候都只能有一个用户写入资源,当进行写锁时会阻塞其它的读锁或者写锁操作
- 共享锁(读锁)
- 锁系统由两类锁来组成
-
锁的粒度
-
锁的粒度就是mysql锁定时的单位,根据单位可以分为两种
-
表锁,是一种开销最小的锁策略。使用户得到数据表的写锁(禁止其他用户进行读写,只有一个锁,锁定了整张表)
当锁为表锁时,一个用户访问了一张表,那么其它用户都不能访问这张表 -
行锁,是一种开销最大的锁策略。使用户得到特定行的写锁,并行性最大(有多少条记录,就可能对多少条记录进行了行锁)
当锁为行锁时,用户访问数据表的特定行,比如第一行,那么第一行就不能被其它用户访问,其它用户只能访问除了第一行以外的行
-
-
本作品采用《CC 协议》,转载必须注明作者和本文链接