• SQL-事务隔离级别与锁


    实际上,为了提高数据库性能,我们尽可能让多个事务同时执行,这就是并发

    锁机制:

    锁,可以理解为一种‘标注’,表明其数据正在被事务使用......

    1,检查数据上有木有锁(其它事务加上去的),确定当前事务的行为;如:等待......;

    2,加锁:提示其他事务,该数据正在被事务使用;

    3,解锁:操作完成后,删除/消除锁;

    锁的类型:

    共享锁(Shared,用S表示):用于只读的SELECT语句,又称读锁,共享锁上可以加共享锁,因为它们兼容;

    排它锁(Exclusive,用X表示):又称独占锁或写锁,用于INSERT/UPDATE/DELETE语句,X锁不兼容任何锁;

    更新锁(Update,用U表示):用在UPDATE/DELETE之前的查找过程,仅在WHERE子句查找过程中使用,一旦找到数据,U锁立刻变为X锁,U锁和U锁不兼容,但和S锁兼容;

    四个事务的控制级别是如何使用锁的:

    READE UNCOMMITTED(读未提交):读取时,不加共享锁,其它事务也能读(会产生脏读);

    READE COMMITTED(读已提交):读取时,加共享锁,其它事务不能读(避免脏读),完成读取就释放;

    REPEATABLE READ(可重复读):共享锁一直到事务结束才释放(避免不可重复读),但仅限于查找数据上(可产生幻影读);

    SERIALIZABLE(序列化):共享锁的范围扩展到所有可以影响到该事务的对象(避免了幻影读);

    以上锁控制,变化的都是共享锁,排它锁始终是在事务结束后释放;

    死锁的形成:

    如果这篇文章,对你有帮助,请点击关注,我会持续更新......
  • 相关阅读:
    swift
    swift
    c# 根据自定义Attribute排序
    asp.net 导出excel
    算法时间复杂度的计算 [整理]
    再谈javascript原型继承
    深入学习JavaScript: apply 方法 详解(转)——非常好
    Chapter 6 : Control Statements : Looping
    Chapter 6 : Applications of Definite Integrals
    朋友圈仅三天可见?怎么破?
  • 原文地址:https://www.cnblogs.com/-GoFurther/p/13736243.html
Copyright © 2020-2023  润新知