zoukankan      html  css  js  c++  java
  • Intention Locks 意向锁

    Intention Locks 意向锁
    
    InnoDB 支持多颗粒度锁定允许row-level locks和锁整个表共存。
    
    为了使锁在多个颗粒级别实现, 额外类型的锁被称为意向锁是被使用。
    
    
    . Intention lock 意向锁是表级锁 在InnoDB 表明锁的类型(共享或者排它) 一个事务随后需要用于一个记录在那个表。
    
    
    有两种意向锁类型在InnoDB(假设事务T有请求一个表明类型的锁在表t)
    
    1.意向共享锁 (IS): 事务T尝试设置S锁在表t的单个记录上
    
    2.意向排它锁 事务T尝试设置X锁在那些记录上
    
    例如,  SELECT ... LOCK IN SHARE MODE 设置一个IS LOCK 
    
    SELECT ... FOR UPDATE  设置一个IS 锁
    
    
    意向锁协议如下:
    
    1.在一个事务可以获得S锁在表t的一条记录上,它必须首先获得一个IS或者更强的锁在表t
    
    
    2.在一个事务可以获得X锁在一个记录,它必须首先获得一个IX锁在表t上
    
    
    那些规则可以入下汇总:
    
                X	           IX	          S	          IS
    X	Conflict	Conflict	Conflict	Conflict
    IX	Conflict	Compatible	Conflict	Compatible
    S	Conflict	Conflict	Compatible	Compatible
    IS	Conflict	Compatible	Compatible	Compatible
    
    
    一个锁是被授权到一个请求的事务 如果它是和存在的锁兼容的,
    
    但是不能授权如果它是和存在的锁冲突的。
    
    一个事务等待直到冲突存在的锁被释放, 如果一个锁请求和存在的锁冲突,
    
    不能被立即授予 意味它会导致死锁,一个错误发生
    
    因此意向锁不堵塞任何除非全表请求(比如 LOCK TABLES ... WRITE). 
    
    IX和IS锁的主要目的是显示谁是锁住一个记录了,或者准备去锁定一个记录
    

  • 相关阅读:
    nginx反向代理下载文件失败处理
    jenkins集成sonarqube代码审核
    Django中@login_required用法简介
    使用uwsgi配置django
    python的subprocess模块
    python的hashlib模块
    python的StringIO模块
    关于C#引用ExceptionPolicy.HandleException(ex, "LogAndReplace", out exceptionToReplace);
    C#DataTable 使用GroupBy方法的lamda 表达式和Linq语句写法
    MVC页面重定向'页面跳转
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13350139.html
Copyright © 2011-2022 走看看