zoukankan      html  css  js  c++  java
  • Mysql 事务学习笔记

    1读写锁

    1.1为什么为出现读写锁?

    当一个人在update这个数据,另一个人在select查询这个数据的时候.会产生一种数据混乱,应运产生的锁.

    锁的概念:

    • 读锁是共享的,并且不会阻塞. 写锁则是排他的
    • 同一个时间内只能有一个用户写入.

    1.2 锁粒度.

    • 太多的锁又会影响效率,为了保证效率,会给不同级别的失误.安排不同的锁.最好只是精确的锁定. 因为锁本身不仅影响效率,也消耗资源.通常情况下,锁越少效率越高.

    锁策略,就是在锁的开销和数据的安全性做出平衡.大部分商业数据库并没有提供特别多选择,只是在表上加上行级锁.

    1.3 Mysql 的锁策略

    • 表锁,最基本也是开销最小策略.搜定这张表,在用户对表修改时候,需要先获得锁,并且阻塞其他用户的读写操作. 只有没有写锁的时候其他用户才能获得读锁,并且读锁之前不会阻塞
    • 行级锁可以最大成都的支持并发处理

    2 事务

    事务是一组原子性的sql查询,如果能执行查询全部语句,那么查询全部,如果又一条语句不成功,那么所有的都不执行.事务都要经过ACID 测试不然没有意义

    2.1 ACID事务的四项检测

    • 原子性(atomicity)

      • 一个事务被视为一个不可分割的最小工作单元.就像原子不可分割一样.
    • 一致性(consistency)

      • 数据库总是从一个一致性的状态转换为另一个一致性的状态.要么全部成功,要么全部失败,结果应该是一致的,不应该有的成功,有的失败.
    • 隔离性(Isolation)

      • 一个事务在做修改成功之前,对其他的事务是不课件的. 当你对一个账户进行取款操作,那么另一个程序是无法看见你的操作结果.直到你成功之前
        • 隔离级别Isolation Level
          • Read uncommited
            • 在READ UNCOMMITED级别. 事务中的修改,即使没有提交,对其他事务可见.
          • READ COMMITED
            • 大多数数据库的默认级别都是Read committed.Mysql不是. 一个事务开始的时候,只能看见自己已经提交的修改.
              在不提交前,对其他事务完全不可见.
          • REPEATABLE READ
            • REPEATABLE READ 解决了脏读的问题,该级别保证同一个事务多次读取结果是一致的. 但同事导致幻读的问题.当读取某个范围的数据的时候,里一个事务又在该范围内插入新的数据
              当之前事务在读取的时候会产生幻行.
          • SERIALIZABLE
            • 最高Isolation Level级别,通过强制事务串的执行.避免了之前说的幻读,SERIALIZABLE 会在每一行数据加锁.所以可能导致大量超时和锁争抢的问题.
              非常少用.只有当需要保持数据一致性而接受没有并发的情况下才考虑.
    • 持久性(durability)

      • 一旦事务提交,修改就会永久保存在数据库中.及时系统崩溃也不会丢失.这个策略主要保证数据不会丢失.而且上持久性也分不同的级别.有的持久程度高,又的持久程度低.

    1-1 各种隔离级别的区别和特点

    Isolation Level(隔离) 脏读可能性 不可重读可能性 幻读可能性 加锁读
    Read uncommitted YES YES YES NO
    READ COMMITTED NO YES YES NO
    PEPETABLE READ NO NO YES NO
    SERIALIZABLE NO NO NO YES
  • 相关阅读:
    SoundTouch
    80211
    netsh wlan
    jest--cmd
    必须精通nuxt了,不可变,to thi
    bili实际的ssr
    vscode 调试vuetify
    【Java】 第四章 异常处理 Notes learn Ma
    Windows 下的符号链接 小示例
    Java 第一二章 配置基础 与 java 数据类型
  • 原文地址:https://www.cnblogs.com/maxaimee/p/6534272.html
Copyright © 2011-2022 走看看