MySQL中的IS鎖是用于共享讀取的鎖,具有較低的優(yōu)先級和阻塞能力。當(dāng)多個(gè)事務(wù)需要同時(shí)讀取一個(gè)數(shù)據(jù)時(shí),IS鎖可以允許多個(gè)事務(wù)同時(shí)讀取,而不會(huì)相互產(chǎn)生阻塞。
下面是IS鎖的一個(gè)示例:
-- session 1 BEGIN; SELECT * FROM my_table WHERE id=1 LOCK IN SHARE MODE; -- session 2 BEGIN; SELECT * FROM my_table WHERE id=1 LOCK IN SHARE MODE; -- session 3 BEGIN; UPDATE my_table SET value=2 WHERE id=1; COMMIT;
在上面的示例中,session1和session2都會(huì)獲得IS鎖,因?yàn)樗鼈冃枰x取my_table中的數(shù)據(jù)。
IS鎖的持有者可以與其他持有IS鎖的事務(wù)共同訪問同一行數(shù)據(jù)。但是,如果一個(gè)事務(wù)擁有一個(gè)排它鎖(X鎖),則其他事務(wù)將無法獲得IS鎖,直到排它鎖被釋放。
總之,IS鎖是一種適用于讀取操作的鎖,它可以在多個(gè)事務(wù)需要同時(shí)讀取同一個(gè)數(shù)據(jù)時(shí)提供較低的阻塞能力。
下一篇css 如何顯示更多