• <em id="6vhwh"><rt id="6vhwh"></rt></em>

    <style id="6vhwh"></style>

    <style id="6vhwh"></style>
    1. <style id="6vhwh"></style>
        <sub id="6vhwh"><p id="6vhwh"></p></sub>
        <p id="6vhwh"></p>
          1. 国产亚洲欧洲av综合一区二区三区 ,色爱综合另类图片av,亚洲av免费成人在线,久久热在线视频精品视频,成在人线av无码免费,国产精品一区二区久久毛片,亚洲精品成人片在线观看精品字幕 ,久久亚洲精品成人av秋霞

            如何閱讀mysql源代碼_我是如何開始閱讀MySQL源碼的?

            更新時(shí)間:2023-12-11 19:02:36 閱讀: 評(píng)論:0

            2023年12月11日發(fā)(作者:元夕古詩(shī))

            -

            如何閱讀mysql源代碼_我是如何開始閱讀MySQL源碼的?

            如何閱讀mysql源代碼_我是如何開始閱讀MySQL源碼的?

            1. 為什么要閱讀MySQL源碼?

            之前已經(jīng)看過 高性能MySQL 和 MySQL技術(shù)內(nèi)幕InnoDB存儲(chǔ)引擎, 但總覺得只是看看書上這么說還是不夠.

            比如 高性能MySQL 里畫的有B-Tree索引的示意圖,可是B-Tree索引究竟長(zhǎng)什么樣子,在MySQL里是怎么存儲(chǔ)的,沒什么概念; 里邊還提到關(guān)

            聯(lián)查詢的”泳道圖”,在代碼層面到底是怎么執(zhí)行的,也不清楚.

            2. 從哪兒開始?

            直接看MySQL的源碼有點(diǎn)困難.

            好在有一本講MySQL的書, 叫 als, 書雖然有點(diǎn)老,但看起來是個(gè)不錯(cuò)的開始.

            大概過一下書的內(nèi)容,發(fā)現(xiàn)大部分內(nèi)容還是看不下去. 只有第4章 Client/Server Communication 還能看.

            3. Protocol

            als 的第4章 Client/Server Communication 講了MySQL Server和客戶端溝通的協(xié)議, 結(jié)合著

            wireshark, 很快就能搞明白.

            4. main() -> mysqld_main()

            MySQL是由C++寫的,入口函數(shù)main()直接調(diào)用了mysqld_main().

            Server啟動(dòng)的代碼都在這里,大部分都看不懂.

            直到最后的 handle_connections_sockets().

            5. handle_connections_sockets()

            讀過UNP的看這部分代碼應(yīng)該都沒問題.

            poll()

            accept()

            thread_scheduler->add_connection()

            pthread_create() or thead_cache

            handle_one_connection()

            for (;;) {

            while (connection_alive()) {

            do_command();

            }

            cache_thread();

            }

            do_command() -> dispatch_command()

            6. dispatch_command()

            這里已經(jīng)能夠看到很多熟悉的詞語了,CHANGE_USER,STMT_EXECUTE,STMT_FETCH.

            不過最關(guān)鍵的執(zhí)行SQL語句的部分, COM_QUERY, 看不懂.

            mysql_par() -> MYSQLpar()als 的第9章 Parr and Optimizer, 是講這部分的.

            在Par Tree部分有提到SQL語句最終在 mysql_execute_command() 里執(zhí)行.

            7. mysql_execute_command()

            ca SQLCOM_CREATE_DB: mysql_create_db();

            ca SQLCOM_CREATE_TABLE: mysql_create_table();

            ca SQLCOM_INSERT: mysql_inrt();

            ca SQLCOM_SELECT: execute_sqlcom_lect();

            mysql_create_db()好理解.

            mysql_create_table()里有創(chuàng)建一個(gè).frm文件,要是有文檔說明下.frm文件的格式就好了.

            從這往篇文檔可以看出, MySQL的歷史真的太久了,官方文檔對(duì)很多字段的說明都是always, ??.

            看了這個(gè)文檔還是搞不明白.frm文件的格式.

            8. .MYD and .MYI

            由于之前看過InnoDB技術(shù)內(nèi)幕,顯然InnoDB比MyISAM要復(fù)雜多了.

            MySQL Internals Manual 里邊有一章講MyISAM的,仔細(xì)分析了.MYD和.MYI文件的格式,講的挺清楚的.

            .MYD的文件格式挺簡(jiǎn)單的.

            .MYI的就復(fù)雜很多了. 對(duì)著文檔寫個(gè)小程序讀取并解析.MYI文件,有很大幫助.

            搞清楚了.MYD和.MYI的文件格式,很多名詞術(shù)語也混個(gè)臉兒熟了.

            回過頭來再看.frm.

            9. .frm

            創(chuàng)建.frm文件的代碼在 mysql_create_frm() 里.

            努力一番后,再寫個(gè)小程序讀取并解析下.frm文件,總算搞清楚其格式了.

            在創(chuàng)建完.frm后,又調(diào)用了Storage Engine的ha_create()方法創(chuàng)建了其它相關(guān)的文件,比如MyISAM就創(chuàng)建了.MYD和.MYI文件.

            10. plugin_init, mysql_inrt, execute_sqlcom_lect

            這個(gè)時(shí)間回過頭來再看下啟動(dòng)代碼里的plugin_init部分,還是相對(duì)容易的搞清楚了Stroage Engine是怎么加載的了.

            自己編譯一個(gè)debug版本的mysqld會(huì)有一些幫助.

            mysql_inrt()還是比較簡(jiǎn)單的.

            execute_sqlcom_lect()就復(fù)雜了.

            結(jié)合著als 的第9章 Parr and Optimizer, 總算看到”泳道圖”是怎么執(zhí)行的了.

            11. 下一步

            OK, 萬事開頭難. 到此也算是開了個(gè)頭了.

            -

            如何閱讀mysql源代碼_我是如何開始閱讀MySQL源碼的?

            本文發(fā)布于:2023-12-11 19:02:36,感謝您對(duì)本站的認(rèn)可!

            本文鏈接:http://m.newhan.cn/zhishi/a/1702292556243248.html

            版權(quán)聲明:本站內(nèi)容均來自互聯(lián)網(wǎng),僅供演示用,請(qǐng)勿用于商業(yè)和其他非法用途。如果侵犯了您的權(quán)益請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)刪除。

            本文word下載地址:如何閱讀mysql源代碼_我是如何開始閱讀MySQL源碼的?.doc

            本文 PDF 下載地址:如何閱讀mysql源代碼_我是如何開始閱讀MySQL源碼的?.pdf

            標(biāo)簽:文件   代碼   閱讀   文檔   看到   源碼
            留言與評(píng)論(共有 0 條評(píng)論)
               
            驗(yàn)證碼:
            推薦文章
            排行榜
            Copyright ?2019-2022 Comsenz Inc.Powered by ? 實(shí)用文體寫作網(wǎng)旗下知識(shí)大全大全欄目是一個(gè)全百科類寶庫(kù)! 優(yōu)秀范文|法律文書|專利查詢|
            主站蜘蛛池模板: 蜜臀av一区二区精品字幕| 一本色道久久东京热| 长腿校花无力呻吟娇喘| 四虎国产精品成人免费久久| 国产精品自在拍首页视频8| 久久国产乱子伦免费精品无码| 91毛片网| 男人的天堂av一二三区| 大地资源网中文第一页| 麻豆av一区二区三区| 最新偷拍一区二区三区| 国产精品自在自线视频| 亚洲乱熟女一区二区三区| 国产精品美腿一区在线看| 亚洲人成人无码网WWW电影首页| 激情在线网| 国产成人亚洲精品无码青APP| 黑人av无码一区| 国产成人综合亚洲第一区| 不卡乱辈伦在线看中文字幕| 国产精品久久久久鬼色| 国产亚洲色婷婷久久99精品| 久久一亚色院精品全部免费| 四川丰满少妇无套内谢| 日本中文字幕乱码免费| 99re热精品视频中文字幕不卡| 国产精品男女午夜福利片| 久久天天躁狠狠躁夜夜婷| 欧美丰满熟妇乱XXXXX网站| 色图网免费视频在线观看十八禁| 92国产精品午夜福利免费| 国产高潮刺激叫喊视频| 亚洲性啪啪无码AV天堂| 欧美视频免费一区二区三区| 亚洲第一区二区三区av| 亚洲欧美中文字幕5发布| 国内精品伊人久久久久7777| 国产精品人成视频免| 午夜av高清在线观看| 亚洲第一尤物视频在线观看导航| 无码国内精品人妻少妇|