• mysql事务和事务隔离级别


    事务操作有个特征:
    要么都成功,要么都失败。
    成功就提交commit;
    失败就回滚rollback;

    --事务开始
    start transaction ;
    --或是用begin
    begin
    --回滚事务
    rollback;
    --提交事务
    commit;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    事务的四大特性:
    1.原子性(atomicity)
    事务是最小操作单元不可再分割,要么全都成功,要么全都失败;
    2.一致性(consistency)
    事务完成时,所有的数据必须保持一致
    3.隔离性(isolation)
    数据库有隔离机制,保证事务在不受外部并发操作影响的独立环境下运行
    4.持久性(durability)
    事务一量提交或是回滚,对数据库的操作改弯是永久性的。

    并发事务导致的问题:
    1.脏读:一个事务读到另一个事务还没有提交的数据;
    2.不可重复读:一个事务先后读到同一条记录,但两次读取的数据不同,叫不可重复读;
    3.幻读:一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现这行数据已经存在,好像出现了幻觉。
    多说一句,我在出门的时候,经常走到楼下了,一直想不起来门是不是关上了,一直有幻觉自己没有锁上门!你有没有发生过这种事情。

    事务隔离级别:
    read uncommitted 不能杜绝脏读,不能杜绝重复读,不能杜绝幻读
    read committed(oracle默认级别) 可以杜绝脏读,不能杜绝不可重复读,不能杜绝幻读
    repeatable read(sql默认级别)可以杜绝脏读,可以杜绝不可重复读,不能杜绝幻读
    serializable 串行化,可以杜绝(脏读,不可重复读,幻读)效率最差,性能最差,安全性最好

    --查看事务隔离级别
    select @@transaction_isolation
    --设置事务隔离级别
    set [session|global] transaction level [read uncommitted | read committed | repeatable read | serializable]
    
    select @@transaction_isolation;
    --设置read uncommitted事务级别
    set session transaction isolation level read uncommitted ;
    --设置read committed事务级别
    set session transaction isolation level read committed;
    --设置repeatable read事务级别
    set session transaction isolation level repeatable read ;
    --设置serializable事务模式
    set session transaction isolation level serializable;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
  • 相关阅读:
    AEB前装标配搭载率数据发布!哪些车企在「拖后腿」
    微信小程序实现数值监听(页面和组件属性)
    (22)语义分割--LR-ASPP
    怎么写专利更容易通过?
    认识进制
    快速提升中小企业销售效率的5个自动化小技巧
    前端性能-首次加载优化70%
    RK3568驱动指南|第五期-中断-第45章 自定义工作队列实验
    MT8385 Android AB分区系统升级(命令模式)
    噪声系数分析仪---TFN ZF9000A
  • 原文地址:https://blog.csdn.net/weixin_43069562/article/details/127738089