MySQL資料庫的鎖定機制及優化

2023-01-27 07:16:12 字數 962 閱讀 1057

一.mysql資料庫鎖定機制

1.行級鎖定(row-level)

鎖定物件的粒度最小,發生鎖定資源爭用的概率小,提高高併發系統的整體效能

粒度小,每次獲取和釋放鎖做的事情更多,消耗大.行級鎖最容易發生死鎖

2.表級鎖定(table-level)

最大粒度的鎖,邏輯簡單,負面影響小,獲取鎖和釋放鎖速度快

併發量大大減少

3.頁級鎖定(page-level)

粒度和開銷介於兩者之間,會發生死鎖

總結:隨著鎖粒度的減小,鎖定相同資料量的資料消耗的記憶體越來越多,實現演算法也越來越複雜

不過,請求遇到鎖等待的可能性降低,系統整體併發性提高

發生死鎖有死鎖的解決機制

使用表級鎖定的主要是myisam,memory,csv等非事務性儲存引擎,

行級鎖主要是innodb,ndb cluster儲存引擎

頁級鎖berkeleydb儲存引擎

二.優化

myisam表鎖的優化(提高併發能力)

1.縮短鎖定時間

a.儘量減小大的複製query,將複製的拆分

b.建立高效索引,

c.儘量讓myisam儲存引擎的表只存放必要的資訊,控制欄位型別

d.優化myisam表資料檔案

2.分離能並行的操作(myisam)儲存引擎有concurrent insert特性,可以設定0,1,2(建議1)

3.合理利用讀寫優先順序(預設寫優先順序大於讀)

可根據系統的實際設定,若系統以讀為主,則設定讀優先順序大於寫low_priority_updates=1

innodb行鎖優化建議

1.儘量讓所有的資料檢索通過索引完成,

2.合理設計索引

3.儘可能減少基於範圍的資料檢索過濾條件

4.儘量控制事務的大小,減少鎖定資源量和鎖定時間長度

5.在業務允許的情況下,儘量使用低階別的事務隔離

6.減少死鎖的發生

Mysql資料庫鎖定機制

總的來說,mysql 各儲存引擎使用了三種型別的鎖定機制 行鎖定,頁級鎖定和表級鎖定。下面我們簡要進行分析這三種鎖定的特點和各自的優劣。行級鎖定最大的特點就是鎖定物件的顆粒度很小,也是目前個大資料庫管理軟體實現鎖定顆粒最小的,由於鎖定顆粒度很小,所以發生鎖定資源爭用的概率也最小。盡最大可能的併發處理...

MySQL資料庫鎖機制

資料庫鎖機制 mysql資料庫從粒度分類 1 表級鎖定 table level 表級別的鎖定是mysql各儲存引擎中最大顆粒度的鎖定機制。該鎖定機制最大的特點是實現邏輯非常簡單,帶來的系統負面影響最小。所以獲取鎖和釋放鎖的速度很快。由於表級鎖一次會將整個表鎖定,所以可以很好的避免困擾我們的死鎖問題。...

Mysql資料庫鎖機制

mysql資料庫鎖管理機制 sql層實現的鎖機制 meta data後設資料鎖 在table cache快取裡實現的,為ddl data definition language 提供隔離操作。一種特別的meta data後設資料型別,叫name lock。表級table level資料鎖 全域性讀鎖...