
項(xiàng)目起因2021 年,我在面試中多次被問到數(shù)據(jù)庫內(nèi)核相關(guān)問題,比如 “MySQL 是如何做性能優(yōu)化的?”、“InnoDB 的 MVCC 怎么實(shí)現(xiàn)?”。
那時(shí)我發(fā)現(xiàn),雖然平時(shí)用 MySQL 很多,但對(duì)它底層協(xié)議、存儲(chǔ)引擎、事務(wù)機(jī)制,其實(shí)了解不深。
那段時(shí)間我也剛學(xué) Go,想真正把它用在系統(tǒng)編程里。
于是我給自己定了個(gè)挑戰(zhàn):用純 Go 從零寫一個(gè) MySQL 兼容數(shù)據(jù)庫內(nèi)核,目標(biāo)對(duì)齊 MySQL 5.7 協(xié)議,參考 InnoDB 的設(shè)計(jì),支持事務(wù)、MVCC、Redo/Undo 日志…。