<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

        MySQLmetadatalock的前世今生(5.1=&amp;gt;5.7)_MySQL

        來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-09 19:16:22
        文檔

        MySQLmetadatalock的前世今生(5.1=&gt;5.7)_MySQL

        MySQLmetadatalock的前世今生(5.1=>5.7)_MySQL:最近有同事經(jīng)常問到一些metadata lock相關(guān)的問題,就順便理一下吧,主要是整理下相關(guān)的連接和文檔,標(biāo)題寫的有點(diǎn)大——————————–最初為了解決著名的bug#989,在MySQL5.5中開始引入了meta data lock;mdl允許一個(gè)事務(wù)涉及到的表、庫信息直到事務(wù)結(jié)束
        推薦度:
        導(dǎo)讀MySQLmetadatalock的前世今生(5.1=>5.7)_MySQL:最近有同事經(jīng)常問到一些metadata lock相關(guān)的問題,就順便理一下吧,主要是整理下相關(guān)的連接和文檔,標(biāo)題寫的有點(diǎn)大——————————–最初為了解決著名的bug#989,在MySQL5.5中開始引入了meta data lock;mdl允許一個(gè)事務(wù)涉及到的表、庫信息直到事務(wù)結(jié)束
        最近有同事經(jīng)常問到一些metadata lock相關(guān)的問題,就順便理一下吧,主要是整理下相關(guān)的連接和文檔,標(biāo)題寫的有點(diǎn)大:-)

        ——————————–

        最初為了解決著名的bug#989,在MySQL5.5中開始引入了meta data lock;mdl允許一個(gè)事務(wù)涉及到的表、庫信息直到事務(wù)結(jié)束都被維持,這樣如果一條事務(wù)內(nèi)的某個(gè)STATEMENT完成后,其他session發(fā)出一條DDL就會被阻塞;這解決了DDL/DML并發(fā)導(dǎo)致的復(fù)制中斷問題。

        不過用過5.5的人都知道,這玩意兒實(shí)際上太令人討厭了,尤其是那陰魂不散的“wait for global read lock”或者“wait for table lock”之類的。當(dāng)備份時(shí)的大查詢,再來個(gè)DDL,哐當(dāng)~故障發(fā)生..直接堵死…

        在我們的內(nèi)部alisql-5.5版本中,我們使用的是和facebook類似的辦法(好吧,就是我直接從fb port過來的),即增加接口替換掉flush tables with read lock, 只創(chuàng)建一個(gè)read view ,外加返回當(dāng)前binlog位點(diǎn);另外percona也實(shí)現(xiàn)了一種類似的辦法來繞過ftwrl,具體點(diǎn)擊文檔連接以及percona的博客, 不展開說了。

        MDL解決了bug#989,卻引入了一個(gè)新的熱點(diǎn),所有的mdl對象由于存到全局對象里;對于熱點(diǎn),最正常的想法當(dāng)然是對其進(jìn)行分區(qū),不過這也是Mark Callaghan在report了bug#66473后才加入的,當(dāng)時(shí)Mark觀察到MDL_map::mutex的鎖競爭非常高,進(jìn)而推動官方改變;

        在MySQL5.6.8版本,引入了新參數(shù)metadata_locks_hash_instances來控制對mdl hash的分區(qū)數(shù)(Rev:4350);

        Oracle的QA dimitrik 對該特性的評測

        不過后面的測試又發(fā)現(xiàn)哈希函數(shù)有問題,類似類似somedb.someprefix1….somedb.someprefix8的hash key值相同,都被hash到同一個(gè)桶下面了.相當(dāng)于hash分區(qū)沒生效。??樱?!具體怎么算的可以看bug#66473后面Dmitry Lenev的分析。

        另外Mark也提出了質(zhì)疑,innodb的hash計(jì)算函數(shù)比my_hash_sort_bin要更高效, Oracle的開發(fā)人員重開了個(gè)bug#68487來跟蹤該問題,并在MySQL5.6.15對hash key計(jì)算函數(shù)進(jìn)行優(yōu)化,包括fix 上面說的hash計(jì)算問題(Rev:5459),使用MurmurHash3算法來計(jì)算mdl key的hash值,(有空看看幾種hash函數(shù)到底哪個(gè)性能更好)

        往后直到MySQL5.6.18版本都沒有針對mdl部分的單獨(dú)優(yōu)化;很顯然,后面也不會在5.6版本里出現(xiàn)了,因?yàn)閙dl優(yōu)化已經(jīng)在5.7.4版本里展開了。包含3個(gè)worklog

        1. WL#7304

        簡化DML操作對MDL鎖的持有/釋放;大體思路是把MDL鎖拆分成兩類,一類是DML的mdl(也成為unobtrusive lock),之間互相兼容,另一類是DDL的mdl(也稱為obtrusive lock),與其他鎖互斥;

        針對DML的MDL,避免了復(fù)雜的鎖檢查和對m_waiting/m_granted鏈表的維護(hù),改而使用計(jì)數(shù)器的方式來實(shí)現(xiàn)(稱為fast-path);不過相應(yīng)的對DDL的MDL鎖的管理邏輯就變的復(fù)雜了。沒有細(xì)看,貌似fast-path的mdl在遇到?jīng)_突時(shí)會進(jìn)行轉(zhuǎn)換,將其加入到m_granted列表中,并從m_fast_path_state移除

        PATCH(Rev:7067, Rev:7129)

        2. WL#7305

        使用Lock free的hash對象來管理MDL;由于鎖沖突被移除,因此metadata_locks_hash_instances及metadata_locks_cache_size在之后的版本中可能被棄用;

        基本思路是使用LF_HASH(lock free hash, 而不是分區(qū)的hash)來實(shí)現(xiàn)MDL_MAP

        PATCH(Rev:7249)

        3. WL#7306

        這個(gè)實(shí)際上是對WL#7304和WL#的進(jìn)一步優(yōu)化,針對dml的mdl鎖(也就是所謂fast path),在檢查沖突和釋放時(shí)都需要施加m_rwlock鎖,新的改進(jìn)移除讀寫鎖,改使用原子操作

        PATCH(Rev:7586)

        這三個(gè)worklog是在5.7.4版本中的主要影響性能的大改動之一,官方對MySQL5.7.4的測試數(shù)據(jù),這部分的改進(jìn)必然有所貢獻(xiàn)。

        后續(xù)的新的改進(jìn)計(jì)劃目前還沒看到,現(xiàn)在worklog上的更新總要等到實(shí)現(xiàn)之后才會更新,讓我們拭目以待吧…

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        MySQLmetadatalock的前世今生(5.1=&gt;5.7)_MySQL

        MySQLmetadatalock的前世今生(5.1=>5.7)_MySQL:最近有同事經(jīng)常問到一些metadata lock相關(guān)的問題,就順便理一下吧,主要是整理下相關(guān)的連接和文檔,標(biāo)題寫的有點(diǎn)大——————————–最初為了解決著名的bug#989,在MySQL5.5中開始引入了meta data lock;mdl允許一個(gè)事務(wù)涉及到的表、庫信息直到事務(wù)結(jié)束
        推薦度:
        標(biāo)簽: mysql mysql5 前世今生
        • 熱門焦點(diǎn)

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲αv久久久噜噜噜噜噜| 国产午夜免费福利红片| 免费看美女裸露无档网站| 免费人成在线观看网站品爱网日本| 亚洲熟妇无码AV在线播放| 亚洲免费观看网站| 成年网在线观看免费观看网址| 免费一级毛片无毒不卡| 国产免费观看a大片的网站| 亚洲精品永久在线观看| xxxx日本免费| 亚洲性久久久影院| 亚洲一久久久久久久久| 99精品免费观看| 国产AⅤ无码专区亚洲AV| 精品国产_亚洲人成在线| 国产免费的野战视频| 亚洲av最新在线网址| 99热在线免费播放| 亚洲宅男精品一区在线观看| 一级毛片免费不卡在线| 亚洲日韩精品射精日| 久久免费看少妇高潮V片特黄| 亚洲综合精品网站| a在线观看免费视频| 亚洲午夜福利精品无码| 久久国产乱子精品免费女| 亚洲性无码av在线| 精品无码国产污污污免费网站| 亚洲乱码中文字幕综合 | 毛片免费在线播放| 亚洲成综合人影院在院播放| 成人毛片免费观看视频在线| 免费视频成人国产精品网站| 免费萌白酱国产一区二区| 国产在线观看无码免费视频| 亚洲中文字幕无码久久精品1| xxxxwww免费| 久久九九免费高清视频| 九月丁香婷婷亚洲综合色| 好久久免费视频高清|