MySQL是一種常用的關(guān)系型數(shù)據(jù)庫,對于高并發(fā)的場景,表級鎖和行級鎖是常用的鎖機制。下面介紹一下這兩種鎖的概念和區(qū)別。
表級鎖
表級鎖是對整個表加鎖,即一個操作正在對一張表進行操作時,其他操作不能對此表進行操作。表級鎖會對整張表加鎖,導(dǎo)致數(shù)據(jù)并發(fā)處理能力下降。
LOCK TABLES table_name [AS alias] lock_type; UNLOCK TABLES;
其中,lock_type為鎖類型,可以是:
- READ:共享鎖,允許多個連接讀取同一張表
- WRITE:排他鎖,只允許一個連接讀取表
行級鎖
行級鎖是對某行數(shù)據(jù)加鎖,即一個操作正在對某一行數(shù)據(jù)進行操作時,其他操作不能對此行數(shù)據(jù)進行操作。行級鎖會對數(shù)據(jù)進行細粒度的控制,提高并發(fā)處理能力。
SELECT ... FOR UPDATE; SELECT ... LOCK IN SHARE MODE;
其中,F(xiàn)OR UPDATE是排他鎖,LOCK IN SHARE MODE是共享鎖。
區(qū)別
表級鎖和行級鎖的最大區(qū)別在于加鎖的顆粒度不同。表級鎖加鎖的顆粒度是整張表,會導(dǎo)致并發(fā)處理能力下降;而行級鎖加鎖的顆粒度是某行數(shù)據(jù),可以細粒度的控制并發(fā)處理。
通常情況下,用戶應(yīng)該盡量使用行級鎖,避免大規(guī)模鎖定表,從而提高并發(fā)性。
上一篇js文件外部引入css
下一篇css里dd多大