色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

MySQL表鎖知識系統性梳理

dyquk4xk2p3d ? 來源:良許Linux ? 作者:良許Linux ? 2022-10-09 11:47 ? 次閱讀

這個問題,涉及MySQL表鎖的一些細節,借著這個問題,系統性說下表鎖的“所以然”。

畫外音:網上不少文章只說結論,不說為什么,容易讓人蒙圈。

MySQL表鎖知識系統性梳理。

哪些存儲引擎使用表鎖?

MySQL,除InnoDB支持行鎖外,MySQL的其他存儲引擎均只使用表鎖,例如:MyISAM, MEMORY, MERGE等。

表鎖有什么好處?

(1)表鎖占用內存少很多,行鎖的數量與行記錄數相關,非常耗內存;

(2)如果業務經常讀寫表中很大一部分數據時,表鎖會更快,因為此時只涉及一個鎖,而不是同時管理N多個鎖;

(3)如果業務經常使用group by,表鎖會更快,原因同(2);

畫外音:這樣的一些場景,使用MyISAM比InnoDB更優。

表鎖是怎么運作的?

和其他臨界資源的讀寫鎖類似。

寫時,要加寫鎖:

(1)如果表沒有鎖,對表加寫鎖;

(2)否則,入寫鎖隊列;

讀時,要加讀鎖:

(1)如果表沒有寫鎖,對表加讀鎖;

(2)否則,入讀鎖隊列;

表鎖釋放時:

如果寫鎖隊列和讀鎖隊列里都有鎖,寫有更高的優先級,即寫鎖隊列先出列。這么做的原因是,如果有“大查詢”,可能會導致寫鎖被批量“餓死”,而寫鎖往往釋放很快。

畫外音:潛臺詞是,如果有大量并發update請求,select會等所有update請求執行完才執行。

如何查看表鎖情況? 如果要分析表鎖沖突情況,可查看:

Table_locks_immediate:立刻獲得表鎖的次數;

Table_locks_waited:需要等待表鎖的次數;

這兩個變量。 使用以下命令查看:

show status like ‘Table%’;

b2febc4a-45e5-11ed-96c9-dac502259ad0.png

如果等待表鎖的次數占比較大,說明表鎖可能是潛在瓶頸。

說了半天,還是沒有講到點子上,為什么在并發插入量比較大的時候,比較適合使用MyISAM呢?不會因為表鎖頻繁沖突而導致吞吐量降低嗎?

畫外音:知識的系統性,比問題答案更重要。

知識點一:

MyISAM的索引與記錄存儲分離,有單獨的區域存儲行記錄,PK是非聚集索引。

b33ed136-45e5-11ed-96c9-dac502259ad0.png

這個知識點就不展開了,以前講過。

知識點二:

MyISAM表,如果數據文件(data file)緊密存儲,中間沒有空閑塊(free blocks),數據總是插入到數據文件的尾部(end),就如同追加日志一樣,性能很高,此時的并發insert與select是不加鎖的(lock free)。

b35201f2-45e5-11ed-96c9-dac502259ad0.png

如上圖所示:

(1)數據文件連續且緊密的存儲著; (2)并發insert無表鎖爭搶(只需插入隊列互斥); (3)insert只在數據文件的尾部進行; (4)并發select也能夠同時進行(共享讀鎖); 知識點三:

MyISAM表,如果數據文件(data file)中間有空洞(hole),上述機制會失效,直到空洞被新數據填滿,又會啟用不加鎖機制。 空洞是怎么導致的?

刪除或者修改數據,都可能導致空洞。

b36e1144-45e5-11ed-96c9-dac502259ad0.png

如上圖所示:

(1)中間刪除了一些數據,導致中間出現空閑塊(free blocks); (2)此時,select和insert會有表鎖沖突,無法并發;

b3861fe6-45e5-11ed-96c9-dac502259ad0.png

再如上圖所示:

(1)隨著插入的進行,中間的空閑塊又被填滿了; (2)此時,并發select和insert又恢復了; 結論

雖然MyISAM只支持表鎖,但高并發select與insert的業務場景,上述機制使得MyISAM的表鎖依然有非常強勁的性能。 畫外音:本文基于MySQL5.6。

審核編輯:彭靜
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據
    +關注

    關注

    8

    文章

    7134

    瀏覽量

    89475
  • 存儲
    +關注

    關注

    13

    文章

    4353

    瀏覽量

    86114
  • MySQL
    +關注

    關注

    1

    文章

    829

    瀏覽量

    26717

原文標題:頻繁插入,用什么存儲引擎更合適?| 數據庫系列

文章出處:【微信號:良許Linux,微信公眾號:良許Linux】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    基于MySQL機制

    在數據庫系統中,為了保證數據的一致和并發控制,機制發揮著至關重要的作用。尤其在關系型數據庫MySQL中,其獨特的機制設計更是贏得了許多
    的頭像 發表于 09-30 11:16 ?927次閱讀

    mysql中文參考手冊chm

    數據庫類型 10 從 MySQL 得到最大的性能 10.1 優化概述 10.2 系統/編譯時和啟動參數的調節 10.2.1 編譯和鏈接如何影響 MySQL 的速度 10.2.2 磁盤
    發表于 12-26 13:32

    MySQL分區類型及介紹

    分區是將一個的數據按照一定規則水平劃分成不同的邏輯塊,并分別進行物理存儲,這個規則就叫做分區函數,可以有不同的分區規則。通過show plugins語句查看當前MySQL是否支持
    發表于 06-29 16:31

    mysql的結構修改、約束

    mysql結構修改、約束(二)
    發表于 05-21 10:26

    鏡像對系統性能的影響有哪些?

    鏡像抑制基礎知識可減少AD9361和AD9371中正交不平衡的技術鏡像的來源、含義及對系統性能的影響
    發表于 03-29 07:59

    MySQL存儲引擎簡析

    MySQL存儲引擎InnoDB??InnoDB 的存儲文件有兩個,后綴名分別是.frm和.idb,其中.frm是的定義文件,而.idb是數據文件。InnoDB 中存在和行
    發表于 09-06 06:07

    嵌入式系統概述知識梳理

    《嵌入式系統》 |(一)嵌入式系統概述 知識梳理《嵌入式系統》 |(二)ARM Cortex M3 體系結構
    發表于 12-22 06:53

    新手必看!FPGA的系統性學習

    本系列將帶來FPGA的系統性學習,從最基本的數字電路基礎開始,最詳細操作步驟,最直白的言語描述,手把手的傻瓜式講解,讓電子、信息、通信類專業學生、初入職場小白及打算進階提升的職業開發者都可以有系統性
    的頭像 發表于 09-28 11:52 ?2528次閱讀
    新手必看!FPGA的<b class='flag-5'>系統性</b>學習

    MySQL中的高級內容詳解

    MySQL 進階!!! 本文思維導圖如下。 事務控制和鎖定語句 我們知道,MyISAM 和 MEMORY 存儲引擎支持級鎖定(table-level locking),InnoDB 存儲引擎支持行級鎖定
    的頭像 發表于 03-11 16:55 ?2244次閱讀
    <b class='flag-5'>MySQL</b>中的高級內容詳解

    MySQL是怎么加行級的?有什么規則?

    是不是很多人都對 MySQL 加行級的規則搞的迷迷糊糊,對記錄一會加的是 next-key ,一會加是間隙,一會又是記錄
    的頭像 發表于 11-17 09:28 ?849次閱讀

    MySQL索引下推知識分享

    Mysql 是大家最常用的數據庫,下面為大家帶來 mysql 索引下推知識點的分享,以便鞏固 mysql 基礎知識,如有錯誤,還請各位大佬們
    的頭像 發表于 12-27 09:49 ?676次閱讀

    一文徹底搞懂MySQL究竟的啥1

    MySQL系列文章已經鴿了挺久了,最近趕緊擠了擠時間,和大家聊一聊MySQL。 只要學計算機,「``」永遠是一個繞不過的話題。
    的頭像 發表于 03-03 10:12 ?496次閱讀
    一文徹底搞懂<b class='flag-5'>MySQL</b><b class='flag-5'>鎖</b>究竟<b class='flag-5'>鎖</b>的啥1

    一文徹底搞懂MySQL究竟的啥2

    MySQL系列文章已經鴿了挺久了,最近趕緊擠了擠時間,和大家聊一聊MySQL。 只要學計算機,「``」永遠是一個繞不過的話題。
    的頭像 發表于 03-03 10:13 ?464次閱讀
    一文徹底搞懂<b class='flag-5'>MySQL</b><b class='flag-5'>鎖</b>究竟<b class='flag-5'>鎖</b>的啥2

    LDO基礎知識:噪聲-降噪引腳如何提高系統性

    LDO基礎知識:噪聲-降噪引腳如何提高系統性
    的頭像 發表于 09-18 10:58 ?1348次閱讀
    LDO基礎<b class='flag-5'>知識</b>:噪聲-降噪引腳如何提高<b class='flag-5'>系統性</b>能

    MySQL數據庫基礎知識

    的基礎知識,包括其架構、數據類型、操作、查詢語句和數據導入導出等方面。 MySQL 數據庫架構 MySQL 數據庫由多個組件組成,包括服務器、存儲引擎和客戶端等。
    的頭像 發表于 11-21 11:09 ?1011次閱讀
    主站蜘蛛池模板: 日本无码人妻精品一区二区视频 | H厨房灌草莓 | 好大太快了快插穿子宫了 | 国产精品一区二区AV交换 | 小黄文纯肉污到你湿 | 精子网久久国产精品 | 亚洲成人免费观看 | 扒开黑女人p大荫蒂老女人 扒开粉嫩的小缝末成年小美女 | 国产精品路线1路线2路线 | qvod欧美电影| 国产av免费观看日本 | 久久99re热在线观看视频 | 久久久久久九九 | 亚洲日韩国产精品乱-久 | 国产白浆视频在线播放 | 国产成人免费片在线视频观看 | 久久香蕉国产免费天天 | 蜜臀AV色欲A片无码一区 | 久久精品男人影院 | 国产a级午夜毛片 | 一个人看的HD免费高清视频 | 九色终合九色综合88 | 久久久精品国产免费A片胖妇女 | 菠萝菠萝蜜在线观看视频 | 日本一本2017国产 | 亚洲无人区码二码三码区别图 | 亚洲综合视频 | 蜜桃久久久亚洲精品成人 | 果冻传媒视频在线观看完整版免费 | 脔到她哭H粗话HWWW男男动漫 | 妈妈的朋友5在线观看免费完整版中文 | 调教玩弄奶头乳夹开乳震动器 | 我解开了岳的乳第一个女人 | 亚洲欧洲日本天天堂在线观看 | 久青草国产97香蕉在线视频 | jjzz韩国| 海量激情文学 | 性色香蕉AV久久久天天网 | 亚洲乱码中文字幕久久孕妇黑人 | 久久AV无码AV高潮AV不卡 | 兽交白浆喷水高潮 |