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

    为什么会出现锁机制?

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

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

    行级锁:

    表级锁:

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

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

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

  • 相关阅读:
    spring-boot 中application.properties的各种配置
    spring-boot 集合mybatis 的分页查询
    spring boot热部署pom.xml配置
    ssm框架整合
    mybatis逆向工程
    整合hibernate的lucene大数据模糊查询
    QBC查询、离线条件查询(DetachedCriteric)和分页查询模版
    虚拟机vmnet0、vmnet1和vmnet8的区别
    centOS7-配置网络地址
    在windows中使用Navicat连接Linux虚拟机中的mysql数据库
  • 原文地址:https://www.cnblogs.com/qingmuchuanqi48/p/10931756.html
Copyright © 2011-2022 走看看