目的
作為一個後臺開發者,我覺得了解資料庫的運作原理是非常有必要的,而Mysql資料庫就是開源資料庫之中的佼佼者,這裡列出我這2個月以來的一些心德體會,以及自己用到的工具
官方文件
仔細的閱讀官方的技術文件是十分有必要的,mysql8地址:dev.mysql.com/doc/refman/8.0/en/
我覺得官方的文件寫的很好,裡面會提到用到的一些技術
舉個例子 dev.mysql.com/doc/refman/8.0/en/se...
這裡列出了mysql8的所有的系統變數,比如
對於每個系統變數,你可以搜尋原始碼,看在哪裡用到了,比如 group_replication_recovery_ssl_ca
原始碼地址
github地址: github.com/mysql/mysql-server
原始碼結構
下面是mysql8的原始碼結構,這裡面最重要的就是sql和storage,mysql8採用的是外掛化的組織架構
原始碼閱讀工具
我建議採用vscode,另外需要裝一個書籤外掛,截圖如下:
書籤效果如下:
當然了,C++的外掛也是必不可少的
cmake外掛
筆記工具的話,我建議微軟的onenote,比如我的:
必要技能
為了讀懂mysql8的程式碼,你需要掌握的開發語言C/C++,因為mysql8採用的編譯工具為cmake,所以你也需要懂cmake的基本操作,另外就是bison,yacc等
原始碼編譯
這裡,建議參考:dev.mysql.com/doc/refman/8.0/en/so...
比如我的編譯選項:
cmake .. -DWITH_DEBUG=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=./boost -DCMAKE_INSTALL_PREFIX=./compiled -DWITH_UNIT_TESTS=OFF
程式碼除錯
gdb基本是linux開發必備的除錯工具,比如對於我當前的開發環境來說,啟動gdb,除錯mysql的引數如下:
啟動之後
關於gdb的具體操作,可以網上查,這裡不再詳述
個人建議
mysql8的程式碼很複雜,但是也很有條理,讀懂的話是很有難度的,所以需要一定的耐心,建議多對照官網的文件看,相信你會有所收穫
本作品採用《CC 協議》,轉載必須註明作者和本文連結