行級鎖,一般是指排它鎖,即被鎖定行不可進行修改,刪除,只可以被其他會話select。行級鎖之前需要先加表結構共享鎖。
網站建設、網站設計,成都做網站公司-創(chuàng)新互聯已向上千家企業(yè)提供了,網站設計,網站制作,網絡營銷等服務!設計與技術結合,多年網站推廣經驗,合理的價格為您打造企業(yè)品質網站。
表級鎖,一般是指表結構共享鎖鎖,是不可對該表執(zhí)行DDL操作,但對DML操作都不限制。
行級鎖之前需要先加表結構共享鎖。
根據鎖的類型分,共有6種
LMODE
1、NULL,可以某些情況下,如分布式數據庫的查詢會產生此鎖。
2、SS,表結構共享鎖
3、SX,表結構共享鎖+被操作的記錄的排它鎖
4、S, 表結構共享鎖+所有記錄共享鎖
5、SRX 表結構共享鎖+所有記錄排它鎖
6、X 表結構排它鎖+所有記錄排它鎖
對WRITE,MySQL使用的表鎖定方法原理如下:
如果在表上沒有鎖,在它上面放一個寫鎖。 否則,把鎖定請求放在寫鎖定隊列中。
對READ,MySQL使用的鎖定方法原理如下:
如果在表上沒有寫鎖定,把一個讀鎖定放在它上面。 否則,把鎖請求放在讀鎖定隊列中。
當一個鎖定被釋放時,鎖定可被寫鎖定隊列中的線程得到,然后是讀鎖定隊列中的線程。這意味著,如果在一個表上有許多更新,SELECT語句將等待直到沒有更多的更新。
mysql 不同的存儲引擎表示對應的不同的鎖機制,如MyISAM和MEMORY存儲引擎采用的是表級鎖(table-level locking);BDB存儲引擎采用的是頁面鎖(page-level locking),但也支持表級鎖;InnoDB存儲引擎既支持行級鎖(row-level locking),也支持表級鎖,但默認情況下是采用行級鎖。
行級鎖 說粒度鎖行級鎖
需要更新同頁面數據升級頁面鎖
整表進行更新使用表級鎖;使用行級鎖光浪費資源影響效率
-