MySQL 并发处理 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区

[MySQL 并发处理 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区]

  • 并发处理

    • 当多个连接对记录进行修改时保证数据的一致性和完整性
    • *
  • 为什么要用到并发控制

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

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

    • 锁系统由两类锁来组成

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

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

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

Original url: Access

Created at: 2018-10-10 15:27:39

Category: default

Tags: none

请先后发表评论
  • 最新评论
  • 总共0条评论