国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySQL鎖機制與用法分析

2024-07-24 12:50:21
字體:
來源:轉載
供稿:網友

本文實例講述了MySQL鎖機制與用法。,具體如下:

MySQL的鎖機制比較簡單,其最顯著的特點是不同的存儲引擎支持不同的鎖機制。比如,MyISAM和MEMORY存儲引擎采用的是表級鎖;BDB存儲引擎采用的是頁面鎖,但也支持表級鎖;InnoDB存儲引擎既支持行級鎖,也支持表級鎖,但默認情況下采用行級鎖。

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

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

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

(3)頁面鎖:開銷和加鎖時間界于表鎖和行鎖之間;會出現死鎖;鎖定粒度界于表鎖和行鎖之間,并發度一般。

僅從鎖的角度來說,表級鎖更適合于以查詢為主,只有少量按索引條件更新數據的應用,如Web應用;而行級鎖則更適合于有大量按索引條件并發更新少量不同數據,同時又有并發查詢的應用,如一些在線事務處理系統。

一、MyISAM表鎖

1. 查詢表級鎖爭用情況

show status like 'table%';

如果table_locks_waited 的值比較高,則說明存在著比較嚴重的表級鎖爭用情況。

2. MySQL表級鎖的鎖模式

MySQL 的表級鎖有兩種模式:表共享讀鎖和表獨占寫鎖。

當一個session對某個表加了讀鎖之后,該session只能訪問加鎖的這個表,而且只能進行讀操作;其他session可以對這個表進行讀操作,但是進行寫操作會被阻塞,需要等待鎖的釋放。當一個session對某個表加了寫鎖之后,該session只能訪問加鎖的這個表,可以進行讀操作和寫操作,其他session對這個表的讀和寫操作都會被阻塞,需要等待鎖的釋放。

MyISAM 表的讀操作與寫操作之間,以及寫操作之間是串行的。

3. 如何加表鎖

加讀鎖:

lock table tbl_name read;

加寫鎖:

lock table tbl_name write;

釋放鎖:

unlock tables;

MyISAM 在執行查詢語句前,會自動給涉及的所有表加讀鎖,在執行更新操作前,會自動給涉及的表加寫鎖,這個過程并不需要用戶干預,因此,用戶一般不需要直接用LOCK TABLE命令給MyISAM表顯式加鎖。給MyISAM表顯式加鎖,一般是為了在一定程度模擬事務操作,實現對某一時間點多個表的一致性讀取。

注意,當使用LOCK TABLES時,不僅需要一次鎖定用到的所有表,而且,同一個表在SQL語句中出現多少次,就要通過與SQL語句中相同的別名鎖定多少次,否則也會出錯!

4. 并發插入

MyISAM存儲引擎有一個系統變量concurrent_insert,專門用以控制其并發插入的行為,其值分別可以為0、1或2。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 浦江县| 四川省| 石狮市| 黔南| 巴中市| 洛浦县| 通榆县| 广水市| 邓州市| 正阳县| 颍上县| 东乌| 墨竹工卡县| 惠东县| 云霄县| 伊吾县| 南丰县| 中宁县| 海淀区| 民权县| 无棣县| 平果县| 黔西县| 曲松县| 闵行区| 洞头县| 汾阳市| 融水| 申扎县| 米林县| 四平市| 永寿县| 乌拉特后旗| 临潭县| 洪江市| 德格县| 米易县| 郸城县| 石林| 邹平县| 玉溪市|