Mysql8.0原始碼閱讀建議

Dennis_Ritchie發表於2023-01-03

目的

作為一個後臺開發者,我覺得了解資料庫的運作原理是非常有必要的,而Mysql資料庫就是開源資料庫之中的佼佼者,這裡列出我這2個月以來的一些心德體會,以及自己用到的工具

官方文件

仔細的閱讀官方的技術文件是十分有必要的,mysql8地址:dev.mysql.com/doc/refman/8.0/en/
我覺得官方的文件寫的很好,裡面會提到用到的一些技術

Mysql8.0原始碼閱讀建議

舉個例子 dev.mysql.com/doc/refman/8.0/en/se...

這裡列出了mysql8的所有的系統變數,比如

Mysql8.0原始碼閱讀建議

對於每個系統變數,你可以搜尋原始碼,看在哪裡用到了,比如 group_replication_recovery_ssl_ca

Mysql8.0原始碼閱讀建議

Mysql8.0原始碼閱讀建議

原始碼地址

github地址: github.com/mysql/mysql-server

原始碼結構

下面是mysql8的原始碼結構,這裡面最重要的就是sql和storage,mysql8採用的是外掛化的組織架構

Mysql8.0原始碼閱讀建議

原始碼閱讀工具

我建議採用vscode,另外需要裝一個書籤外掛,截圖如下:

Mysql8.0原始碼閱讀建議

書籤效果如下:

Mysql8.0原始碼閱讀建議

當然了,C++的外掛也是必不可少的

Mysql8.0原始碼閱讀建議

cmake外掛

Mysql8.0原始碼閱讀建議

筆記工具的話,我建議微軟的onenote,比如我的:

Mysql8.0原始碼閱讀建議

Mysql8.0原始碼閱讀建議

必要技能

為了讀懂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的引數如下:

Mysql8.0原始碼閱讀建議

啟動之後

Mysql8.0原始碼閱讀建議

關於gdb的具體操作,可以網上查,這裡不再詳述

個人建議

mysql8的程式碼很複雜,但是也很有條理,讀懂的話是很有難度的,所以需要一定的耐心,建議多對照官網的文件看,相信你會有所收穫

本作品採用《CC 協議》,轉載必須註明作者和本文連結
微信:okayGoHome

相關文章