mysql 鎖級別說明 一

2021-09-27 12:34:35 字數 1674 閱讀 7811

1.鎖的型別

mysql各儲存引擎使用了三種型別(級別)的鎖定機制:表級鎖定,行級鎖定和頁級鎖定。

鎖級別儲存引擎

表級別(table-level)

myisam,memory,csv

行級別(row-level)

inndb

頁級別(page-level)

bdb2.鎖型別說明

2.1表級鎖定(table-level)

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

當然,鎖定顆粒度大所帶來最大的負面影響就是出現鎖定資源爭用的概率也會最高致使併發度大打折扣

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

2.2行級鎖定(row-level)

行級鎖定最大的特點就是鎖定物件的顆粒度很小,也是目前各大資料庫管理軟體所實現的鎖定顆粒度最小的。由於鎖定顆粒度很小,所以發生鎖定資源爭用的概率也最小,能夠給予應用程式盡可能大的併發處理能力而提高一些需要高併發應用系統的整體效能。

雖然能夠在併發處理能力上面有較大的優勢,但是行級鎖定也因此帶來了不少弊端。由於鎖定資源的顆粒度很小,所以每次獲取鎖和釋放鎖需要做的事情也更多帶來的消耗自然也就更大了。此外,行級鎖定也最容易發生死鎖

使用行級鎖定的主要是innodb儲存引擎。

2.3頁級鎖定(page-level)

頁級鎖定是mysql中比較獨特的一種鎖定級別,在其他資料庫管理軟體中也並不是太常見。頁級鎖定的特點是鎖定顆粒度介於行級鎖定與表級鎖之間,所以獲取鎖定所需要的資源開銷,以及所能提供的併發處理能力也同樣是介於上面二者之間。另外,頁級鎖定和行級鎖定一樣,會發生死鎖

在資料庫實現資源鎖定的過程中,隨著鎖定資源顆粒度的減小,鎖定相同資料量的資料所需要消耗的記憶體數量是越來越多的,實現演算法也會越來越複雜。不過,隨著鎖定資源顆粒度的減小,應用程式的訪問請求遇到鎖等待的可能性也會隨之降低,系統整體併發度也隨之提公升

使用頁級鎖定的主要是berkeleydb儲存引擎。

3.mysql這3種鎖的特性可大致歸納如下:

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

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

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

log日誌級別說明

日誌記錄器 logger 是日誌處理的核心元件。log4j具有5種正常級別 level 1.static level debug debug level指出細粒度資訊事件對除錯應用程式是非常有幫助的。2.static level info info level表明 訊息在粗粒度級別上突出強調應用程式...

logger日誌級別說明

日誌記錄器 logger 是日誌處理的核心元件。log4j具有5種正常級別 level 日誌記錄器 logger 的可用級別level 不包括自定義級別level warn level 表明會出現潛在錯誤的情形 error level 指出雖然發生錯誤事件,但仍然不影響系統的繼續執行 fatal l...

PHP錯誤級別說明

按系統錯誤 常量 1.e error 致命錯誤 1 2.e notice 提示性錯誤 8 3.e warning 警告性錯誤 2 自定義錯誤 e user error 自定義致命錯誤 e user warning 自定義警告性錯誤 e all 所有錯誤 function getbinstr e ec...