没有合适的资源?快使用搜索试试~ 我知道了~
MySQL8.0锁机制和事务
需积分: 31 1 下载量 170 浏览量
2021-03-07
11:09:39
上传
评论
收藏 469KB PPTX 举报
温馨提示
试读
56页
mysql的锁机制和事务
资源推荐
资源详情
资源评论
MySQL 锁机制和事
务
InnoDB 锁机
制
•
•
•
InnoDB 存储引擎⽀支持⾏行行级锁,其⼤大类可以细分为共享锁和排它
锁两类共享锁 (S) :允许拥有共享锁的事务读取该⾏行行数据。当⼀一
个事务拥有⼀一
⾏行行的共享锁时,另外的事务可以在同⼀一⾏行行数据也获得共享锁,
但另外的事务⽆无法获得同⼀一⾏行行数据上的排他锁
•
排它锁 (X) :允许拥有排它锁的事务修改或删除该⾏行行数据。当⼀一个
事务
拥有⼀一⾏行行的排他锁时,另外的事务在此⾏行行数据上⽆无法获得共
享锁和排它锁,只能等待第⼀一个事务的锁释放
除了了共享锁和排他锁之外, InnoDB 也⽀支持意图锁。该锁类型是属于
表
级锁,表明事务在后期会对该表的⾏行行施加共享锁或者排它锁。所以
对意图锁也有两种类型:
•
共享意图锁 (IS) :事务将会对表的⾏行行施加共享锁
•
排他意图锁 (IX) :事务将会对表的⾏行行施加排它锁
01
InnoDB 锁机
制
•
举例例来说 select … for share mode 语句句就是施加了了共享意图锁,⽽
而 select … for update 语句句就是施加了了排他意图锁
•
这四种锁之间的相互共存和排斥关系如下:
•
所以决定⼀一个事务请求为数据加锁时能否⽴立即施加上锁,取决于
该数据上已经存在的锁是否和请求的锁可以共存还是排斥关系,
当相互之间是可以共存时则⽴立即施加锁,当相互之间是排斥关
系时则需要等待已经存在的锁被释放才能施加
X IX S IS
X Conflict Conflict Conflict Conflict
IX Conflict Compatible Conflict Compatible
S Conflict Conflict Compatible Compatible
IS Conflict Compatible Compatible Compatible
01
InnoDB 锁相关系统
表
•
Information_schema.innodb_trx 记录了了 InnoDB 中每⼀一个正在执⾏行行的事务,包括该事务获得的锁信息,
事务开始时间,事务是否在等待锁等信息
Column name Description
TRX_ID
InnODB 内部标示每个事务的 ID
TRX_WEIGHT
表示该事务的权重,近似等于事务锁的⾏行行记录数。当发⽣生死锁时, InnoDB 会根据此值选择最⼩小的值作为牺牲品 .
TRX_STATE
事务当前状态,包括 RUNNING, LOCK WAIT, ROLLING BACK, and COMMITTING.
TRX_STARTED
事务开始时间
TRX_REQUESTED_LOCK_ID
当事务状态为 lock_wait 时,表示需要等待的事务的锁 ID ,对应 innodb_locks 表⾥里里的 lock_id ;如果是其他值则为 NULL
TRX_WAIT_STARTED
当事务状态为 LOCK WAIT 则代表事务等待锁的开始时间;如果是其他值则为 NULL.
TRX_MYSQL_THREAD_ID
MySQL 线程 ID ,对应 show processlist ⾥里里的值
TRX_QUERY
事务当前执⾏行行的语句句
TRX_OPERATION_STATE
事务当前执⾏行行的语句句类型,不不执⾏行行则为 NULL
TRX_TABLES_IN_USE
执⾏行行当前语句句需要涉及到⼏几个 InnoDB 表
TRX_TABLES_LOCKED
当前语句句执⾏行行施加的⾏行行锁对应了了⼏几个表
TRX_LOCK_STRUCTS
当前事务保留留的锁个数
TRX_LOCK_MEMORY_BYTES
当前事务的锁信息所占⽤用的内存 byte 数
TRX_ROWS_LOCKED
近似等于当前事务施加的⾏行行锁数量量,也会包含删除语句句所涉及的⾏行行锁
TRX_ROWS_MODIFIED
当前事务插⼊入或者修改的⾏行行数
TRX_CONCURRENCY_TICKETS
TRX_ISOLATION_LEVEL
当前事务的隔离级别
TRX_UNIQUE_CHECKS
唯⼀一键约束检查是开启状态还是关闭状态,常⽤用于批量量导⼊入数据时关闭检查
TRX_FOREIGN_KEY_CHECKS
外键约束检查是开启还是关闭状态,常⽤用于批量量导⼊入数据时关闭检查
TRX_LAST_FOREIGN_KEY_ERROR
上⼀一次外键约束错误的详细信息
TRX_ADAPTIVE_HASH_LATCHED
TRX_ADAPTIVE_HASH_TIMEOUT
TRX_IS_READ_ONLY
当值为 1 时表明事务为只读事务
TRX_AUTOCOMMIT_NON_LOCKING
当值为 1 代表事务中只有⼀一个普通 select 语句句,不不会施加任何锁,且由于 autocommit 是开启的,所以事务只会包含该 select 语句句
01
InnoDB 锁相关系统
表
•
performance_schema.data_locks 记录了了 InnoDB 中事务的每个锁信息,以及
当前事务的锁正在阻⽌止其他事务获得锁
Column name Description
ENGINE_LO
CK_ID
InnoDB 内部标示每个锁的 ID
LOCK_TRX_ID
表示持有该锁的事务 ID ,对应 innodb_trx 表中的事务 ID
LOCK_MODE
表示该锁的模式。可以是 S[,GAP], X[,GAP], IS[,GAP], IX[,GAP], AUTO_INC, UNKNOWN. 除了了
AUTO_INC
and UNKNOWN 的锁模式,其他的锁模式都暗含是 GAP 间隔锁
LOCK_TYPE
表示锁类型,可以是 RECORD 表示⾏行行锁 , TABLE 表示表锁
OBJECT_NAME
该锁涉及的表名
INDEX_NAME
当为⾏行行锁时,则代表该锁涉及的索引名,否则为 NULL.
LOCK_SPACE
当为⾏行行锁时,则表示被锁记录所在的表空间 ID ;否则为 NULL
LOCK_DATA
事务锁定记录主键值,若是表锁则该值为 NULL
01
剩余55页未读,继续阅读
资源评论
bsmartmouse
- 粉丝: 0
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功