zoukankan      html  css  js  c++  java
  • 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(序列化):共享锁的范围扩展到所有可以影响到该事务的对象(避免了幻影读);

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

    死锁的形成:

    如果这篇文章,对你有帮助,请点击关注,我会持续更新......
  • 相关阅读:
    HTML
    数据挖掘之分类——基于规则的分类器
    Ubuntu 14.04下Hadoop2.4.1集群安装配置教程
    Jdk1.7+eclipse搭建Java开发环境
    约瑟夫环问题
    Linux 绝对路径与相对路径
    排序算法汇总
    朋友圈问题
    HTTP状态码
    哈希冲突,哈希函数
  • 原文地址:https://www.cnblogs.com/-GoFurther/p/13736243.html
Copyright © 2011-2022 走看看