日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

易语言mysql锁表_MySQL的3种锁定机制

發布時間:2024/7/19 数据库 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 易语言mysql锁表_MySQL的3种锁定机制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MySQL各存儲引擎使用了3種類型的鎖定機制:

1. 行級鎖定(row-level) --- MyISAM、Memory、CSV

*鎖定對象顆粒度最小,發生資源爭用的概率最小,在并發處理能力上有較大優勢。

*缺點是每次獲取鎖和釋放鎖需要做的事情很多,帶來消耗大,也最容易發生死鎖。

2. 表級鎖定(table-level)--- Innodb、NDB Cluster

*鎖定對象顆粒度最大,實現邏輯簡單,獲取鎖和釋放鎖的速度很快,一次會將整個表鎖定,可以很好避免死鎖。

*缺點是出現資源爭用的概率最高,致使并發度大打折扣。

*主要分為2種類型:讀鎖定和寫鎖定

*通過4個鎖定隊列來維護這2種鎖定:

Current read-lock queue (lock->read) --- 存放持有讀鎖的所有線程,按獲取到鎖的時間順序存放

Pending read-lock queue (lock->read_wait) --- 存放正在等待鎖定資源的線程

Current write-lock queue (lock->write) --- 存放持有寫鎖的所有線程,按獲取到鎖的時間順序存放

Pending write-lock queue (lock->write_wait) --- 存放正在等待鎖定資源的線程

*MySQL內部實現表鎖定多達11種類型,由系統中的一個枚舉量(thr_lock_type)定義,各值描述如下:

IGNORE --- 當發生鎖請求的時候內部交互使用,在鎖定結構和隊列中并不會有任何信息存儲

UNLOCK --- 釋放鎖定請求的交互用鎖類型

READ --- 普通讀鎖定

WRITE --- 普通寫鎖定

READ_WITH_SHARED_LOCKS --- 在Innodb中使用到,由如下方式產生:SELECT ... LOCK IN SHARE MODE

READ_HIGH_PRIORITY --- 高優先級讀鎖定

READ_NO_INSERT --- 不允許Concurrent Insert的鎖定

WRITE_ALLOW_WRITE --- 當由存儲引擎自行處理鎖定的時候,mysqld允許其他的線程再獲取讀或寫鎖定,因為即使資源沖突,存儲引擎自己也會知道怎么處理

WRITE_ALLOW_READ --- 這種鎖定發生在對表做DDL(ALTER TABLE ...)的時候,MySQL可以允許其他線程獲取讀鎖定,因為MySQL是通過重建整個表然后再RENAME而實現的該功能,所以整個過程原表仍然可以提供讀服務

WRITE_CONCURRENT_INSERT --- 正在進行Concurrent Insert 時候所使用的鎖定方式,該鎖定進行的時候,除了READ_NO_INSERT之外的其他任何讀鎖定請求都不會被阻塞

WRITE_DELAYED --- 在使用INSERT DELAYED時候的鎖定類型

WRITE_LOW_PRIORITY --- 顯示聲明的低級別鎖定方式,通過設置LOW_PRIORITY_UPDAT = 1 而產生

WRITE_ONLY --- 當在操作過程中某個鎖定異常中斷之后系統內部需要進行CLOSE TABLE操作,在這個過程中出現的鎖定類型就是WRITE_ONLY

3. 頁級鎖定(page-level) --- BerkeleyDB

鎖定顆粒度介于行級鎖定和表級鎖定之間,所需資源開銷以及所能提供的并發能力也介于兩者之間,與行級鎖定一樣會發生死鎖。

總結

以上是生活随笔為你收集整理的易语言mysql锁表_MySQL的3种锁定机制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。