MySQL技術內幕:InnoDB儲存引擎

hzbook2008發表於2011-06-08
MySQL技術內幕:InnoDB儲存引擎

《MySQL技術內幕:InnoDB儲存引擎》前言

        過去這些年,我一直在和各種不同的資料庫打交道,見證了MySQL從一個小型的關係型資料庫發展成為各大企業的核心資料庫系統的過程,並且參與了一些大大小小的專案的開發工作,成功地幫助開發人員構建了一些可靠、健壯的應用程式。在這個過程中積累了一些經驗,正是這些不斷累積的經驗賦予了我靈感,於是有了本書。這本書實際上反映了這些年來我做了哪些事情,彙集了很多同行每天可能都會遇到的一些問題,並給出瞭解決方案。

        MySQL資料庫獨有的外掛式儲存引擎架構使得它與其他任何資料庫都不同,不同的儲存引擎有著完全不同的功能,而InnoDB儲存引擎的存在使得MySQL躍入了企業級資料庫領域。本書完整地講解了InnoDB儲存引擎中最重要的一些內容,即InnoDB的體系結構和工作原理,並結合InnoDB的原始碼講解了它的內部實現機制。
        《MySQL技術內幕:InnoDB儲存引擎》不僅介紹了InnoDB儲存引擎的諸多功能和特性,而且還闡述瞭如何正確地使用這些功能和特性。更重要的是,它還嘗試教大家如何Think Different。Think Different是20世紀90年代蘋果公司在其曠日持久的宣傳活動中提出的一個口號,藉此來重振公司的品牌,更重要的是改變人們對技術在日常生活中的作用的看法。需要注意的是,蘋果的口號不是Think Differently,而是Think Different。這裡的Different是名詞,意味該思考些什麼。
        很多DBA和開發人員都相信某些“神話”,然而這些“神話”往往都是錯誤的。無論計算機技術發展的速度變得多快、資料庫的使用變得多麼簡單,任何時候WHY都比WHAT重要。只有真正地理解了內部實現原理、體系結構,才能更好地去使用。這正是人類正確思考問題的原則。因此,對於當前出現的技術,儘管學習應用層面的技術很重要,但更重要的是,應當正確地理解和使用這些技術。
        關於這本書,我想實現好幾個目標,但最重要的是想告訴大家如下幾個簡單的觀點:
  •      不要相信任何“神話”,學會自己思考。
  •      不要墨守成規,大部分人都知道的事情可能是錯誤的。
  •      不要相信網上的傳言,去測試,根據自己的實踐做出決定。
  •      花時間充分地思考,敢於提出質疑。

為什麼寫本書

    當前有關MySQL的書籍大部分都集中在教讀者如何使用MySQL,例如SQL語句的使用、複製的搭建、資料的切分等。沒錯,這對快速掌握和使用MySQL資料庫非常有好處,但是真正的資料庫工作者需要了解的不僅僅是應用,更多的是內部的具體實現。
    MySQL資料庫獨有的外掛式儲存引擎結構使得想要在一本書內完整地講解各個儲存引擎變得十分困難。有的書可能偏重於對MyISAM的介紹,有的書則可能偏重於對InnoDB儲存引擎的介紹。對於初級的DBA來說,這可能會使他們的理解變得更困難。對於大多數MySQL DBA和開發人員來說,他們往往更希望瞭解作為MySQL企業級資料庫應用的第一儲存引擎—InnoDB。我想在本書中,他們可以找到他們想要的內容。
    再強調一遍,任何時候WHY都比WHAT重要。本書從原始碼的角度對InnoDB的儲存引擎的整個體系架構的各個組成部分進行了系統的分析和講解,剖析了InnoDB儲存引擎的核心實現和工作機制,相信這在其他書中是很難找到的。

本書面向的讀者

        《MySQL技術內幕:InnoDB儲存引擎》不是一本面向應用的資料庫類書籍,也不是一本參考手冊,更不會教你如何在MySQL中使用SQL語句。本書面向那些使用MySQL InnoDB儲存引擎作為資料庫後端開發應用程式的開發者和有一定經驗的MySQL DBA。書中的大部分例子都是用SQL語句來展示關鍵特性的,如果想通過本書來了解如何啟動MySQL,如何配置Replication環境,可能並不能如願。不過,通過本書,你將理解InnoDB儲存引擎是如何工作的,它的關鍵特性的功能和作用是什麼,以及如何正確地配置和使用這些特性。
        如果想更好地使用InnoDB儲存引擎,如果想讓你的資料庫應用獲得更好的效能,就請閱讀本書。從某種程度上講,技術經理或總監也要非常瞭解資料庫,要知道資料庫對於企業的重要性。如果技術經理或總監想安排員工參加MySQL資料庫技術方面的培訓,完全可以利用本書來“充電”,相信你一定不會失望的。
        要想更好地學習本書,要求具備以下條件:
  •      掌握SQL。
  •      掌握基本的MySQL操作。
  •      接觸過一些高階語言,如C、C++、Python或Java。
  •      對一些基本演算法有所瞭解,因為本書會分析InnoDB儲存引擎的部分原始碼,如果你能看懂這些程式碼,這會對你的理解非常有幫助。

如何閱讀本書

        本書一共有10章,每一章都像一本“迷你書”,可以單獨成冊,也就說,你完全可以從書中任何一章開始閱讀。例如,要了解第10章中的InnoDB原始碼編譯和除錯的知識,就不必先去閱讀第3章有關檔案的知識。當然,如果你不太確定自己是否已經對本書所涉及的內容已經完全掌握,建議你係統地閱讀本書。
        本書不是一本入門書,不會一步步引導你去如何操作。倘若你尚不瞭解InnoDB儲存引擎,本書對你來說可能就顯得沉重了些,建議你先查閱官方的API文件,大致掌握InnoDB的基礎知識,然後再來閱讀本書,相信你會領略到不同的風景。
        需要特別說明的是,附錄B~D詳細給出了Master Thread、Doublewrite、雜湊演算法和雜湊表的原始碼,前面學習了這些理論知識,再適當地閱讀這些原始碼,相信有經驗的DBA可以更好地掌握和理解InnoDB儲存引擎的本質。為了便於大家閱讀,本書在提供原始碼下載的同時也將原始碼附在了書中,因此佔去了一些篇幅,還請大家理解。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16502878/viewspace-697420/,如需轉載,請註明出處,否則將追究法律責任。

相關文章