8.11.4 Metadata Locking

kakaxi9521發表於2021-05-17

       MySQL會使用 Metadata locking 去管理資料庫物件的併發訪問和保證資料的一致性。 Metadata locking 不僅會在表上使用,而且會在schemas, stored programs(procedures , function,triggers 和 scheduled events) 上使用,同時也包括表空間。

       比如一個會話開啟一個事務使用transactional 表t 和 notransactional table nt :

start transaction;

select * from t;

select * from nt;

資料庫伺服器會持有表t 和 nt的Metadata locking 直到事務結束。如果有另外的會話試圖在這兩張表的任何一張表上使用DDL 或 寫鎖操作都會被阻塞。 比如下面操作都會被阻塞:

drop table t;

alter table t ...;

drop table nt;

alter table nt ...;

lock table t ... write;


本文參考文章

8.11.4 Metadata Locking

https://dev.mysql.com/doc/refman/5.7/en/metadata-locking.html

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/21374452/viewspace-2772571/,如需轉載,請註明出處,否則將追究法律責任。

相關文章