mysql鎖的使用 MySQL之鎖的使用

2021-10-17 13:56:16 字數 960 閱讀 2490

mysql表級鎖的鎖模式:

mysql的表級鎖有兩種模式:表共享讀鎖(table read lock)和表獨佔寫鎖(table write lock)。

鎖模式的相容性:

對myisam表的讀操作,不會阻塞其他使用者對同一表的讀請求,但會阻塞對同一表的寫請求;對 myisam表的寫操作,則會阻塞其他使用者對同一表的讀和寫操作;myisam表的讀操作與寫操作之間,以及寫操作之間是序列的!

寫鎖定:

當乙個執行緒獲得對乙個表的寫鎖後,只有持有鎖的執行緒可以對錶進行插入、更新和查詢操作。其他執行緒的讀、寫操作都會等待,直到鎖被釋放為止。

mysql>lock table test write;

讀鎖定:

當乙個執行緒獲得對乙個表的讀鎖後,可以查詢鎖定表中的記錄,但更新或訪問其他表都會提示錯誤;同時,另外乙個執行緒可以查詢表中的記錄,但更新和插入就會出現鎖等待。

mysql>lock table test read;

在一定條件下,myisam表也支援查詢和插入操作的併發進行。

myisam儲存引擎有乙個系統變數concurrent_insert:

當concurrent_insert設定為0時,不允許併發插入。

當concurrent_insert設定為1時,如果myisam表中沒有空洞(即表的中間沒有被刪除的行),myisam允許在乙個程序讀表的同時,另乙個程序從表尾插入記錄。這也是mysql的預設設定。

當concurrent_insert設定為2時,無論myisam表中有沒有空洞,都允許在表尾併發插入記錄。

獲得讀鎖定的時候增加local選項:

該執行緒可以對錶進行查詢操作,但不能對錶進行插入和更新操作;其他的執行緒,雖然不能對錶進行刪除和更新操作,但卻可以對該錶進行併發插入操作,表尾插入記錄。

mysql> lock table test read local;

ps:myisam和innodb 區別:其實我們平時建的就是myisam格式的。

mysql 鎖怎麼使用 MySQL鎖的用法之行級鎖

行級鎖是mysql中粒度最小的一種鎖,他能大大減少資料庫操作的衝突。但是粒度越小,實現的成本也越高。myisam引擎只支援表級鎖,而innodb引擎能夠支援行級鎖,下面的內容也是針對innodb行級鎖展開的。innodb的行級鎖有共享鎖 s lock 和排他鎖 x lock 兩種。共享鎖允許事物讀一...

MySQL之鎖的使用

mysql表級鎖的鎖模式 mysql的表級鎖有兩種模式 表共享讀鎖 table read lock 和表獨佔寫鎖 table write lock 鎖模式的相容性 對myisam表的讀操作,不會阻塞其他使用者對同一表的讀請求,但會阻塞對同一表的寫請求 對 myisam表的寫操作,則會阻塞其他使用者對...

Mysql的鎖機制之表鎖

在資料庫中,除傳統的計算資源 如cpu,ram,i o等 的爭用外,資料也是一種供許多使用者共享的資源,如何保證資料併發訪問的一致性,有效性是所有資料庫必須解決的乙個問題,鎖衝突也是影響資料庫併發訪問效能的乙個重要因素.從這個角度來說,鎖對資料庫而言現得尤其重要,也更加複雜.按照對資料庫的操作分為讀...