zoukankan      html  css  js  c++  java
  • mysql

    mysql事务特性:
    一致性
    原子性
    隔离性
    持久性


    //mysql 事务隔离级别

    读未提交 读未提交的数据

    读已提交 读已提交的数据

    串行序列化 一个事务完成了再执行另一个事务

    可重复读(数据库默认) 就算事务T1已经提交事务,但事务T2也不读取事务T1提交的数据


    脏读: 读到了另一个事务未提交的数据
    重复度:两次读取的数据不一致 ,一个读取的是事务未提交的数据 , 一次是读取事务已提交的数据
    幻读: 当统计数据时 ,一个事务统计了另一个事务插入的数据的最新数据


    读锁:
    排它锁: select * from table where 条件 for update; 查询后其他事务不可读,不可写,当前事务提交后其他事务才可以进行
    共享锁: select * from table where 条件 share lock in modal; 查询后其他事务可以读 , 不可写 ,当当前事务提交后 ,其他事务才可以修改数据

    写锁:
    update table set ... where 条件
    delete from table where 条件
    insert into table () values();

    innodb
    如果 查询条件有索引则添加行级锁 , 如果查询条件没有添加索引则添加表级锁

    mysql 加锁方法;(大前提条件 :必须在事务中执行)
    排它锁:(作用: 当对数据表添加排它锁时,各个事务之间对这个数据表的执行顺序就会形成一个队列 , 防止读到脏数据;)
    1.显示加锁:
    sql语句 :select * from table where key = ... for update;
    注意事项 :查询条件如果是唯一键(或主键) 并走索引时则会添加行级锁 , 否则会对整个表加锁;
    2.隐式加锁:
    sql语句 :update table set ... where ...;
    注意事项:当mysql执行更新语句时 只有当查询条件是唯一键(或主键)并走索引时,mysql 才会自动添加行级锁;

    共享锁:(作用 : 当对数据表添加共享锁时 , 数据表的数据只能读取而不能修改和删除;)
    sql语句 :select * from table where .... lock in share mode;
    注意事项 :查询条件如果是走索引时则会添加行级锁 , 否则会对整个表加锁;

  • 相关阅读:
    单词小课堂
    js数组
    js规范
    css
    seajs
    IDEA快捷键
    移动端设备禁止页面滑动
    sass中的!default的作用
    【数据分析 R语言实战】学习笔记 第八章 方差分析与R实现
    excel合并单元格
  • 原文地址:https://www.cnblogs.com/Acsii/p/10895749.html
Copyright © 2011-2022 走看看