標籤:

如何才能讓自己看懂MySQL源碼,並且能夠自己寫出相應的patch?

請有經驗的高手回答下,如何才能讓自己看懂MySQL源碼,並且能夠自己寫出相應的patch?就是說如果才能做一個NB的MySQL的開發的DBA,需要懂什麼語言?學習哪些東西才能讓自己達到能給MySQL打補丁,定製MySQL,並且能自己開發出業務想要的功能?PS:我是搞Oracle的


樓主,我以前也是 Oracle dba,後來做過半年的 MySQL 源碼的開發。

關於 mysql 的源碼的書,我整理過一個豆列 ,mysql source code 可以幫你入門。

知道如何為添加個函數,加個命令,加個 plugin,replication 的細枝末節。

但如果要真正的掌握他的代碼,需要很長的時間。MySQL 加上 Innodb 的代碼有 140w 行代碼 ,有且是你要完全看懂 Innodb 需要啃下 事務處理 這本書,這本書比較難以理解。

之外 Mysql Server 的代碼雖然多,但是比較好理解了,我看過下面這些:

1. 網路模型,MySQL 的網路模型太老了, one connection per thread,代碼很簡單。

2. 協議解析,MySQL 的 協議還算比較簡單的,但是設計的 prepare 的協議就要花點時間,我寫個一些分析的文章和圖,網上你搜索下。這裡你要花時間把 mysql client 這個客戶端的代碼都看看,這樣對你往後無論開發 jdbc還是 libmysqlclient 的項目都有幫助。

3. SQL 解析,咳咳,不好意思大難題了。不過還好對於編譯原理的知識你只需要了解前端的詞法解析和 yacc 的使用即可,你可以參考 flex and bison 這本書 ,僅僅需要看懂 yy 和 lex 文件即可,yy 比較長,但裡面涵蓋了所有的 MySQL 所支持的 sql 的語法。我也寫過一個簡單的 sql parser,在我的 github 上。

4.replication,這個不複雜就幾個文件。

還有一些忘記了,基本上我就看過這些,因為 MySQL 實在太大了。

另外淘寶幾位同事的博客應該多關注一下,他們是專門的 MySQL 開發人員。


推薦閱讀:

高性能mysql優化一之配置篇
mysql 的事件調度器(Event Scheduler)穩定性如何?主要用在什麼場合?
MySQL 中一個庫中表數量是否有限制?表太多是否影響數據的性能?比如要把一張表拆成 1024 張,對於每個表的性能的影響是什麼?這些影響需要考慮哪些因素?
誰殺死了 MySQL? - 後記

TAG:MySQL | MySQL入門 |