zoukankan      html  css  js  c++  java
  • 数据库系统原理:封锁

    • 封锁粒度
      • MySQL提供了两种封锁粒度:行级锁、表级锁
        • 应该尽量只锁定需要修改的那部分数据,而不是所有的资源。
        • 锁定的数据量越少,发生锁争用的可能性就越小,系统的并发程度就越高。
        • 但是加锁需要消耗资源,锁的各种操作(获取锁、释放锁、检查锁状态)都会增加系统开销。
        • 因此封锁粒度越小,系统开销就越大。
    • 封锁类型
      • 读写锁
        • 排他锁(Exclusive),又称写锁
          • 一个事务对数据对象A加了排他锁,就可以对A进行读取和更新。加锁期间其他事务不能对A加任何锁。
        • 共享所(Shared),又称读锁
          • 一个事务对数据对象A加了共享锁,就可以对A进行读取操作,但不能进行更新操作。加锁期间其他事务能对A加共享锁,但是不能加排他锁。
      • 意向锁(Intention Locks)
        • 一个事务在获得某个数据行对象的S锁之前,必须先获得表的IS锁或者更强的锁
        • 一个事务在获得某个数据行对象的X锁之前,必须先获得表的IX锁。
    • 两段锁协议:  
      • ① 在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁。
      • ② 在释放一个封锁之后,事务不再申请和获得其它任何封锁。
      • 可串行化调度:通过并发控制,使得并发执行的事务结果与某个串行执行的事务结果相同。
      • 事务遵循两段锁协议是保证可串行化调度的充分条件,但不是必要条件。
    • 隐式和显式锁定
      • 隐式锁定:InnoDB存储引擎采用两段锁协议,会根据隔离级别在需要的时候自动加锁,并且所有的锁都是在同一时刻被释放。
      • 显式锁定:InnoDB也可以使用特定的语句进行显式锁定。
  • 相关阅读:
    Git------解决右键不显示Git Bash Here问题
    AngularJS------Error: Cannot find module '@angular-devkit/core'
    AngularJS------命令行
    AngularJS------报错"The selector "app-user-item" did not match any elements"
    AngularJS------使用VSCode创建的Angular项目部署IIS
    JQuery------各种版本下载
    docker 卸载
    oauth2.0授权协议
    web service 简介
    Python 优雅获取本机 IP 方法
  • 原文地址:https://www.cnblogs.com/xiaobaizzz/p/12304613.html
Copyright © 2011-2022 走看看