mysql讀操作分為2種類型:snapshot read及current read,前者基于mysql mvcc實現,讀取數據塊是undo block,后者是基于當前數據塊。這2種不同的讀取類型與鎖的關系是什么,本文作一點兒簡要的記錄。
微信公眾號

微信

snapshot read由于操作非當前數據塊,不會加鎖
x --排它鎖
s --共享鎖

查詢current read不同操作場景持鎖語句
(注:關注列lock_mode)
mysql> select * from information_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 | +-------------------------+-----------------+-----------+-----------+------------------+-----------------+------------+-----------+----------+----------------+ 2 rows in set, 1 warning (0.00 sec)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。