程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> mysql鎖和死鎖

mysql鎖和死鎖

編輯:關於MYSQL數據庫

以下是一些總結.引用了一些網絡上的經驗

MyISAM和MEMORY存儲引擎采用的是表級鎖table-level locking

BDB存儲引擎采用的是頁面鎖page-level locking,但也支持表級鎖

InnoDB存儲引擎既支持行級鎖row-level locking,也支持表級鎖,但默認情況下是采用行級鎖

表級鎖 開銷小,加鎖快;不會出現死鎖;鎖定粒度大,發生鎖沖突的概率最高,並發度最低

行級鎖 開銷大,加鎖慢;會出現死鎖;鎖定粒度最小,發生鎖沖突的概率最低,並發度也最高

頁面鎖 開銷和加鎖時間界於表鎖和行鎖之間;會出現死鎖;鎖定粒度界於表鎖和行鎖之間,並發度一般

僅從鎖的角度來說:

表級鎖更適合於以查詢為主,只有少量按索引條件更新數據的應用,如Web應用

行級鎖則更適合於有大量按索引條件並發更新少量不同數據,同時又有並發查詢的應用,如一些在線事務處理系統

死鎖

所謂死鎖<DeadLock>: 是指兩個或兩個以上的進程在執行過程中,

因爭奪資源而造成的一種互相等待的現象,若無外力作用,它們都將無法推進下去.

此時稱系統處於死鎖狀態或系統產生了死鎖,這些永遠在互相等竺的進程稱為死鎖進程.

表級鎖不會產生死鎖.所以解決死鎖主要還是真對於最常用的InnoDB.

在遇到問題時

先執行show  processlist找到死鎖線程號.然後Kill processNo

當然主要解決還是需要去看一下具體的操作.可能產生死鎖

Show innodb status檢查引擎狀態 ,可以看到哪些語句產生死鎖

然後就是解決了.怎麼解決還是要看具體什麼問題.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved