日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Mysql的锁机制之表锁

發(fā)布時間:2025/3/19 数据库 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mysql的锁机制之表锁 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Mysql的鎖機制之表鎖

鎖是計算機協(xié)調(diào)多個進(jìn)程或線程并發(fā)訪問某一資源的機制.

? ? ? 在數(shù)據(jù)庫中,除傳統(tǒng)的計算資源(如CPU,RAM,I/O等)的爭用外,數(shù)據(jù)也是一種供許多用戶共享的資源,如何保證數(shù)據(jù)并發(fā)訪問的一致性,有效性是所有數(shù)據(jù)庫必須解決的一個問題,鎖沖突也是影響數(shù)據(jù)庫并發(fā)訪問性能的一個重要因素.從這個角度來說,鎖對數(shù)據(jù)庫而言現(xiàn)得尤其重要,也更加復(fù)雜.

? ?按照對數(shù)據(jù)庫的操作分為讀鎖和寫鎖

? ?讀鎖(共享鎖):針對同一份數(shù)據(jù),多個讀操作可以同時進(jìn)行而不會互相影響.

? ?寫鎖(排他鎖):當(dāng)前寫操作沒有完成前,它會阻斷其他寫鎖和讀鎖.

? ?按對數(shù)據(jù)操作的粒度分為表鎖和行鎖。

? ??表鎖:開銷小,加鎖快;不會出現(xiàn)死鎖;鎖定力度大,發(fā)生鎖沖突概率高,并發(fā)度最低
? ??行鎖:開銷大,加鎖慢;會出現(xiàn)死鎖;鎖定粒度小,發(fā)生鎖沖突的概率低,并發(fā)度高
? ??頁鎖:開銷和加鎖速度介于表鎖和行鎖之間;會出現(xiàn)死鎖;鎖定粒度介于表鎖和行鎖之間,并發(fā)度一般

?

? lock table 表名字 read(write),表名字2 read(write); 查看表上加過的鎖. ?show open tables;

? ? ? ?MyISAM表鎖

讀鎖

? ? ?MyISAM存儲引擎只支持表鎖,新建book表,存儲引擎為MyISAM.

寫鎖

為book表添加寫鎖;

? MyISAM在執(zhí)行查詢語句之前,會自動給涉及的所有表加讀鎖,在執(zhí)行增刪改操作前,會自動給涉及的表加寫鎖.?

???MySQL的表級鎖有兩種模式:

? ? ? ? 表共享讀鎖(Table Read Lock)

? ? ? ? 表獨占寫鎖(Table Write Lock)

鎖類型可否兼容讀鎖讀鎖
讀鎖
寫鎖

結(jié)論:對MyISAM表進(jìn)行操作,會有以下情況

? ? 1.對MyISAM表的讀操作(加讀鎖),不會阻塞其他進(jìn)程對同意表的讀請求,但會阻塞對同一表的寫請求.只有當(dāng)讀鎖釋放后,

才會執(zhí)行其他進(jìn)程的寫操作.

? ? ?2,對MyISAM表的寫操作(加寫鎖),會阻塞其他進(jìn)程對同一表的讀和寫操作,只有當(dāng)寫鎖釋放后,才會執(zhí)行其他進(jìn)程的讀寫操作.

? ? ? ? ?讀鎖會阻塞寫,但是不會阻塞讀。而寫鎖則會把讀和寫都阻塞.

看看哪些表被鎖了

SHOW OPEN TABLES;

分析表鎖定?

SHOW STATUS LIKE 'table%'; SHOW GLOBAL STATUS LIKE 'table_locks%';

Table_locks_immediate 和Table_locks_waited狀態(tài)變量記錄MySQL內(nèi)部表級鎖定的情況,

Table_locks_immediate 產(chǎn)生表級鎖定的次數(shù),表示可以立即獲取鎖的查詢次數(shù),每次立即獲得則加1

Table_locks_waited? 出現(xiàn)表級鎖定爭用而發(fā)生等待的次數(shù)(不能立即獲取鎖的次數(shù),沒等待一次鎖則加1),此值高則說明存在著較嚴(yán)重的表級鎖定爭用情況.

? ??MyISAM的讀寫鎖調(diào)度是寫優(yōu)先,這也是MyISAM不適合做寫為主表的引擎.因為寫鎖后,其他線程不能做任何操作,大量的更新會使查詢很難得到鎖,從而造成永遠(yuǎn)阻塞.

如果 Table_locks_immediate / Table_locks_waited > 5000,最好采用InnoDB引擎,因為InnoDB是行鎖而MyISAM是表鎖,對于高并發(fā)寫入的應(yīng)用InnoDB效果會好些.

原文地址 https://blog.csdn.net/yjaspire/article/details/81133149

總結(jié)

以上是生活随笔為你收集整理的Mysql的锁机制之表锁的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。