日韩av免费一二三区-2021精品久久久久精品k8-亚洲红杏AV无码专区首页-99精品久久久久久水蜜桃

咨詢電話:
15628812133
08
2025/08

MYSQL數(shù)據(jù)庫中表級(jí)鎖以及行級(jí)鎖的使用差異

發(fā)布時(shí)間:2025-08-08 13:59:19
發(fā)布者:已經(jīng)寫了
瀏覽量:
0

MySQL支持多種存儲(chǔ)引擎,其中最常用的InnoDB和MyISAM,他倆的主要區(qū)別呢,就是一個(gè)支持事務(wù),一個(gè)不支持事務(wù),一個(gè)查詢的快一個(gè)查詢的慢一些,其實(shí)對(duì)于新的項(xiàng)目可以自由的選擇,但是對(duì)于已經(jīng)運(yùn)行了很多年的系統(tǒng),想要切換就很難。

事情的起因事什么呢,手術(shù)護(hù)理系統(tǒng)在確認(rèn)了患者的信息之后,把所有需要用到的數(shù)據(jù)表中加入這個(gè)患者的基本信息創(chuàng)建一條數(shù)據(jù),但是現(xiàn)在出現(xiàn)了這樣一個(gè)情況, 在網(wǎng)絡(luò)不好或者請(qǐng)求重復(fù)的情況下,可能會(huì)每個(gè)表中都存在OPERATIONID 相同的數(shù)據(jù)兩條或者三條以上的重復(fù)性數(shù)據(jù),導(dǎo)致數(shù)據(jù)在聯(lián)查的時(shí)候出錯(cuò),但是目前數(shù)據(jù)庫的數(shù)據(jù)量很大,可能改不了主鍵來限制的方法。

于是呢就想到要可以用鎖來解決這個(gè)問題,但是現(xiàn)在的收據(jù)庫類型使用的事MyISAM類型,為什么要使用這個(gè)類型呢,因?yàn)閿?shù)據(jù)庫的屬于越來越多,查詢的速度越來越慢,在使用InnoDB的情況下,查詢的速度要比使用MyISAM慢好幾倍,為什么MyISAM的查詢更快呢,因?yàn)镸yISAM:索引與數(shù)據(jù)分離全表掃描時(shí)更快。

由于用的是MyISAM所以沒有辦法使用事務(wù)和行鎖,那么就嘗試一下使用表級(jí)鎖;

1. MyISAM:表級(jí)鎖(Coarse-Grained Locking)

工作機(jī)制:MyISAM僅支持表級(jí)鎖,任何寫操作(INSERT/UPDATE/DELETE)都會(huì)鎖定整個(gè)表,阻塞所有其他讀寫操作。讀操作(SELECT)會(huì)施加共享鎖,允許多個(gè)查詢并發(fā),但與寫操作互斥

MYSQL數(shù)據(jù)庫中表級(jí)鎖以及行級(jí)鎖的使用差異

時(shí)會(huì)話B需等待會(huì)話A的UNLOCK TABLES才能執(zhí)行,這樣就有點(diǎn)卡巴了,會(huì)話B還得等一會(huì)才能執(zhí)行,我感覺有點(diǎn)坑,影響使用體驗(yàn),所以我放棄了這個(gè)方案,先還是保持現(xiàn)狀吧。

最后做個(gè)總結(jié)

MyISAM:適合只讀為主的場(chǎng)景(如數(shù)據(jù)倉庫),優(yōu)勢(shì)在簡(jiǎn)單查詢速度和低內(nèi)存開銷,但表級(jí)鎖和缺乏事務(wù)是其硬傷。

InnoDB:適用于高并發(fā)寫入和需事務(wù)的場(chǎng)景(如電商),行級(jí)鎖和MVCC保障并發(fā)性能與數(shù)據(jù)安全,通過索引優(yōu)化可縮小查詢差距。

在SSD和內(nèi)存成本下降的當(dāng)下,InnoDB+硬件優(yōu)化已成為主流方案。MyISAM僅建議用于歸檔數(shù)據(jù)或特定只讀負(fù)載,新項(xiàng)目應(yīng)優(yōu)先InnoDB。

關(guān)鍵詞:
返回列表