美文网首页
1.2 mysql的并发控制

1.2 mysql的并发控制

作者: 愤愤的有痣青年 | 来源:发表于2019-05-22 10:08 被阅读0次

    所谓的并发控制,就是防止多用户在同时读/写数据库时,保证数据的正确性,如两个用户同时对同一条数据进行修改,那么数据库该采取什么样的策略来处理这样的情况,这就是并发控制需要考虑的.

    为了解决这样的问题,mysql使用的锁的方式,也就是当A用户在修改一条数据前,数据库会对这条数据加一个锁,这样当B用户也想修改这条数据时,就会因为锁的存在而不能修改,只有等A修改完成释放锁了以后B才能再次修改.

    锁是在数据库的存储引擎层实现的.

    1.2.1 读写锁

    锁根据场景的不同,分为写锁(排他锁)和读锁(共享锁). 写锁是指当在修改数据的时候,此数据禁止任何读写操作,而读锁是指在读取某条数据时,禁止写的操作,但允许其它读操作的存在.

    1.2.2 锁的颗粒

    理想情况下,锁住的数据量越小越好,因为这样可以支持更高的并发量,但是,锁越小意味着锁的数量也越多,由于锁的获取/释放等操作需要消耗系统资源, 越少的锁消耗的系统资源越少,因此在实际生产中需要根据实际情况来采用不同的锁级别来平衡数据安全和资源消耗.
    为了解决这个问题,mysql采用了两类锁,分别是表锁行级锁

    • 表锁
      表锁是指进行读写操作时锁定整张表,这是mysql最大的级别锁,当数据库在执行对表的结构更改之类的操作时,会将整张表锁住.

    • 行级锁
      行级锁是指在修改某行数据时会将这行数据加锁

    相关文章

      网友评论

          本文标题:1.2 mysql的并发控制

          本文链接:https://www.haomeiwen.com/subject/jefyzqtx.html