前言

mysql读操作分为2种类型:snapshot read及current read,前者基于mysql mvcc实现,读取数据块是undo block,后者是基于当前数据块。这2种不同的读取类型与锁的关系是什么,本文作一点儿简要的记录。

联系方式

微信公众号

微信

目录snapshot read是否加锁

snapshot read由于操作非当前数据块,不会加锁


current read加锁2种类型

x --排它锁

s --共享锁


current read几种操作场景

查询current read不同操作场景持锁语句

(注:关注列lock_mode)

mysql>select*frominformation_schema.innodb_locks;+-------------------------+-----------------+-----------+-----------+------------------+-----------------+------------+-----------+----------+----------------+|lock_id|lock_trx_id|lock_mode|lock_type|lock_table|lock_index|lock_space|lock_page|lock_rec|lock_data|+-------------------------+-----------------+-----------+-----------+------------------+-----------------+------------+-----------+----------+----------------+|11909:473:3:2|11909|X|RECORD|`zxydb`.`t_read`|GEN_CLUST_INDEX|473|3|2|0x00000836F561||421207096970864:473:3:2|421207096970864|S|RECORD|`zxydb`.`t_read`|GEN_CLUST_INDEX|473|3|2|0x00000836F561|+-------------------------+-----------------+-----------+-----------+------------------+-----------------+------------+-----------+----------+----------------+2rowsinset,1warning(0.00sec)