MySQL 并发处理

  • 并发处理
    • 当多个连接对记录进行修改时保证数据的一致性和完整性

  • 为什么要用到并发控制

    • 假设我们的数据库中存在着商品的记录,现在有两个用户进行登陆,假设一个用户要删除id为22的记录,一个用户要读取id为22的记录,那么会发生什么样的结果呢,结果可能是正在读取信息的用户报错而退出,也可能是他会得到一条和实际信息不符的信息。所以这个时候我们就需要用到并发控制了

  • 怎么 处理并发问题
    • 在处理并发读和并发写的时候,系统会使用一套锁系统来解决这个问题

  • 什么是锁系统
    • 锁系统由两类锁来组成
      • 共享锁(读锁)
        读锁是共享的互不阻塞的,在同一段时间内,多个用户可以读取同一个资源,读取过程中数据不会发生任何变化
      • 排它锁(写锁)
        写锁是排他的,在任何时候都只能有一个用户写入资源,当进行写锁时会阻塞其它的读锁或者写锁操作

  • 锁的粒度

    • 锁的粒度就是mysql锁定时的单位,根据单位可以分为两种

      • 表锁,是一种开销最小的锁策略。使用户得到数据表的写锁(禁止其他用户进行读写,只有一个锁,锁定了整张表)
        当锁为表锁时,一个用户访问了一张表,那么其它用户都不能访问这张表

      • 行锁,是一种开销最大的锁策略。使用户得到特定行的写锁,并行性最大(有多少条记录,就可能对多少条记录进行了行锁)
        当锁为行锁时,用户访问数据表的特定行,比如第一行,那么第一行就不能被其它用户访问,其它用户只能访问除了第一行以外的行

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!