1. 程式人生 > >mysql 加鎖 解鎖 頁錶行鎖

mysql 加鎖 解鎖 頁錶行鎖

頁級的典型代表引擎為BDB。 
表級的典型代表引擎為MyISAM,MEMORY以及很久以前的ISAM。 
行級的典型代表引擎為INNODB。 
-我們實際應用中用的最多的就是行鎖。 
行級鎖的優點如下: 
1)、當很多連線分別進行不同的查詢時減小LOCK狀態。 
2)、如果出現異常,可以減少資料的丟失。因為一次可以只回滾一行或者幾行少量的資料。 
行級鎖的缺點如下: 
1)、比頁級鎖和表級鎖要佔用更多的記憶體。 
2)、進行查詢時比頁級鎖和表級鎖需要的I/O要多,所以我們經常把行級鎖用在寫操作而不是讀操作。 

3)、容易出現死鎖。 

加鎖:select ...for update 


MYSQL 解鎖與鎖表

解鎖:

1,

第一種
show processlist;
找到鎖程序,kill id ;
2、第二種
mysql>UNLOCK TABLES;

鎖表
鎖定資料表,避免在備份過程中,表被更新
mysql>LOCK TABLES tbl_name READ;
為表增加一個寫鎖定:
mysql>LOCK TABLES tbl_name WRITE;


SELECT ... LOCK IN SHARE MODE sets a shared mode lock on the rows read. A shared mode lock enables other sessions to read the rows but not to modify them. The rows read are the latest available, so if they belong to another transaction that has not yet committed, the read blocks until that transaction ends. 
在讀取的行上設定一個共享模式的鎖。這個共享鎖允許其它session讀取資料

不允許修改它。 行讀取的是最新的資料,如果他被其它事務使用中而沒有提交,讀取鎖將被阻塞直到那個事務結束。 
      SELECT ... FOR UPDATE sets an exclusive lock on the rows read. An exclusive lock prevents other sessions from accessing the rows for reading or writing. 
在讀取行上設定一個排他鎖。阻止其他session讀取或者寫入行資料