⑴ 【後端】讀鎖,寫鎖,表鎖,行鎖,意向鎖
鎖的概念在資料庫管理中至關重要,本文將重點介紹五個類型鎖:讀鎖(S)、寫鎖(X)、表鎖、行鎖、意向鎖。它們的兼容性、命名、寫法、現象、寫法、表鎖與行鎖的差異、意向鎖的機制和兼容性等都將逐一探討。
讀鎖與寫鎖的兼容性方面,讀鎖可以與讀鎖兼容,而讀鎖與寫鎖、寫鎖與寫鎖之間則不能兼容。在實際操作中,寫鎖被隱式加上,讀鎖則不能自動隱式加鎖。
在讀鎖與寫鎖的寫法中,以行鎖為例,當執行更新操作時,寫鎖將被自動加上。如果嘗試在查詢時不加讀鎖(S),則該查詢不會被阻塞,讀取的數據可能為未提交的版本。
命名的歧義值得注意,讀鎖與寫鎖的官方命名分別為共享鎖與排他鎖,但讀鎖的命名可能給用戶帶來誤導。在實際操作中,讀鎖可以被隱式加上寫鎖,這與讀鎖的命名不完全匹配。
表鎖與行鎖的寫法與兼容性不同,表鎖需要在解鎖時使用特定命令,且commit與rollback無法解鎖已上鎖的表。表鎖的寫法與行鎖有明顯差異,表鎖的兼容性考慮了讀鎖與寫鎖對表的互斥操作,以及避免死鎖的發生。
意向鎖的作用在於優化性能,當資料庫需要加表鎖時,它會自動創建表級別的意向鎖,這避免了與每行鎖的逐一對比。意向鎖分為共享與排他兩種類型,它們在實現機制上具有獨特之處,且能夠避免沖突。
意向鎖的兼容性遵循一定的規則,以確保資料庫的正常運行。在實際應用中,意向鎖的自動添加減少了系統開銷,提高了查詢效率。