行級鎖為什么鎖住了整個表?
對WRITE,mysql使用的表鎖定方法原理如下:
如果在表上沒有鎖,在它上面放一個寫鎖。 否則,把鎖定請求放在寫鎖定隊列中。
對READ,MySQL使用的鎖定方法原理如下:
如果在表上沒有寫鎖定,把一個讀鎖定放在它上面。 否則,把鎖請求放在讀鎖定隊列中。
當一個鎖定被釋放時,鎖定可被寫鎖定隊列中的線程得到,然后是讀鎖定隊列中的線程。這意味著,如果在一個表上有許多更新,SELECT語句將等待直到沒有更多的更新。
mysql 不同的存儲引擎表示對應的不同的鎖機制,如MyISAM和MEMORY存儲引擎采用的是表級鎖(table-level locking);BDB存儲引擎采用的是頁面鎖(page-level locking),但也支持表級鎖;InnoDB存儲引擎既支持行級鎖(row-level locking),也支持表級鎖,但默認情況下是采用行級鎖。
上一篇如何刪除數據庫系統的表
下一篇我要安裝cad軟件