一.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資料鎖 全域性讀鎖...