zoukankan      html  css  js  c++  java
  • 数据库中的锁机制

    为什么会出现锁机制?

    因为mysql是一个多用户可以访问的数据库,当多个用户并发的去存取同一份数据的时候,在数据库中就会出现多个事务同时存取同一份数据,如果对并发操作不加控制的话,就可能会出现存取数据的不一致.破坏数据库的一致性.可能产生死锁.为了解决这个问题,加锁是一个十分重要的机制.

    解决方法:行级锁,表级锁,悲观锁,乐观锁.

    行级锁:

    表级锁:

    悲观锁:是指对数据被外界修改保守为悲观状态,也就是一个事务去操作这个数据库中的数据的时候,都假想会有其他事务来操作这个数据库,所以在访问之前都会加锁.因此在当前事务操作数据的时候,都会处于锁定状态.   悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能 真正保证数据访问的排他性,否则,即使在本系统中实现了加锁机制,也无法保证外部系 统不会修改数据)。 一个典型的倚赖数据库的悲观锁调用: select * from account where name=”Erica” for update 这条sql 语句锁定了account 表中所有符合检索条件(name=”Erica”)的记录。 本次事务提交之前(事务提交时会释放事务过程中的锁),外界无法修改这些记录。

    乐观锁.乐观锁正好和悲观锁相反,每次有一个事务去操作这个数据库的时候,都会假想不会有其他事物来修改这些数据,所以在访问之前都不会加锁,只是会在进行数据的更新和修改的时候进行判断一下,

    在当前事务访问期间数据是否发生了修改,

  • 相关阅读:
    CSS之定位
    选择器小结
    ASP.NET Web API + Elasticsearch 6.x 快速做个全文搜索
    获取服务端https证书
    使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错
    MVC和WebForm的优缺点比较
    C#之VS开发工具快捷键大全
    Scrum敏捷开发之扫盲篇
    Asp.net 中数据量较小插入数据库
    xml解析
  • 原文地址:https://www.cnblogs.com/qingmuchuanqi48/p/10931756.html
Copyright © 2011-2022 走看看