第1 章 MySQL 的前世今生
1.1 MySQL 的歷史
1.2 儲存引擎
1.3 MySQL 市場
1.4 小結
第2 章 資料庫系統的立體檢視
2.1 資料庫系統架構
2.2 資料庫系統的分類
2.2.1 物件導向型資料庫
2.2.2 關聯式資料庫
2.2.3 物件關聯式資料庫
2.3 關聯式資料庫系統架構
2.3.1 用戶端應用程式
2.3.2 查詢介面
2.3.3 查詢敘述處理
2.3.4 查詢最佳化
2.3.5 敘述執行
2.3.6 讀寫檔案
2.3.7 模組協作
2.3.8 RDBMS 的層次結構
2.4 MySQL 資料庫系統
2.4.1 MySQL 資料庫系統架構
2.4.2 子系統之間的關聯
2.4.3 MySQL 子系統和程式碼
2.5 小結
第3 章 暢遊原始程式碼
3.1 下載MySQL 原始程式碼
3.1.1 Bazaar 安裝
3.1.2 存取MySQL 原始程式碼
3.2 原始程式碼目錄結構
3.2.1 主要關鍵目錄
3.2.2 開放原始碼社區貢獻的程式碼
3.2.3 解讀sql/sql_delete.cc
3.3 MySQL 核心分析工具
3.3.1 編譯和安裝MySQL
3.3.2 偵錯MySQL
3.3.3 原始程式碼檢索工具
3.3.4 Doxygen 分析原始程式碼
3.4 小結
第4 章 核心類別、函式庫函數和演算法
4.1 核心類別
4.1.1 執行緒類別(THD)
4.1.2 Item 類別
4.1.3 表描述類別——TABLE
4.1.4 Field 類別
4.2 函數庫
4.2.1 記憶體操作函數
4.2.2 檔案系統操作函數
4.2.3 雜湊表操作
4.2.4 字串操作
4.2.5 巨集定義
4.3 核心算法
4.3.1 Bitmaps——點陣圖
4.3.2 表連接緩衝工作原理
4.3.3 MySQL 排序實現
4.3.4 字元集和校對規則
4.4 小結
第5 章 連接和網路系統
5.1 MySQL NET 協定
5.1.1 協定和作業系統協定堆疊
5.2 網路封包格式
5.2.1 Null 結尾字串和帶長度標誌字串
5.2.2 網路封包頭部格式
5.3 用戶端發送的封包
5.3.1 用戶端驗證封包
5.3.2 指令封包(Command)
5.4 伺服器端發送的封包
5.4.1 驗證初始化封包
5.4.2 結果封包分類
5.4.3 OK 封包
5.4.4 ERROR 封包
5.4.5 結果集封包
5.5 小結
第6 章 伺服器執行緒和資源管理
6.1 執行緒還是處理程序
6.1.1 執行緒概念的引入
6.1.2 執行緒與處理程序的比較
6.2 MySQL 執行緒問題和解決方案
6.2.1 標準C 函式呼叫
6.2.2 互斥量
6.2.3 執行緒同步
6.3 用戶端請求的處理
6.3.1 MySQL 的啟動過程
6.3.2 執行流
6.4 類別、API、變數和結構體
6.5 MySQL 記憶體分配
6.5.1 記憶體共用區塊
6.5.2 執行緒記憶體區域(TMA)
6.5.3 MySQL 如何實現記憶體分配
6.6 小結
第7 章 查詢解析與最佳化器
7.1 MySQL 解析器
7.1.1 詞法分析程式
7.1.2 語法分析器
7.1.3 幾個關鍵類別
7.2 查詢最佳化工具
7.2.1 傳統最佳化演算法
7.2.2 MySQL 的查詢演算法
7.3 小結
第8 章 安全管理系統
8.1 帳號驗證
8.1.1 帳號定義
8.1.2 身份審核
8.1.3 實際優先原則
8.2 權限控制
8.2.1 系統許可權表
8.2.2 許可權審核
8.2.3 許可權級別
8.3 安全佈署
8.3.1 伺服器系統安全
8.3.2 資料庫系統安全
8.4 小結
第9 章 儲存引擎介面詳解與實作
9.1 MySQL 外掛式儲存引擎體系結構
9.1.1 基本流程
9.1.2 從原始程式碼檔案開始
9.1.3 意想不到的幫助
9.1.4 handlerton
9.1.5 handler 類別
9.1.6 Archive 儲存引擎的簡單分析
9.2 開發我的儲存引擎——Lillian( 模版剖析)
9.2.1 底層I/O 類別
9.2.2 Lillian_data 類別
9.2.3 Lillian_index 類別
9.3 開發我的儲存引擎——Lillian( 程式碼撰寫)
9.3.1 階段一:初始化儲存引擎
9.3.2 階段二:表操作
9.3.3 階段三:讀寫資料
9.3.4 階段四:修改、刪除資料
9.3.5 階段五:索引功能
9.4 小結
第10 章 經典儲存引擎
10.1 MySQL 中繼資料檔案——frm
10.2 MyISAM 儲存引擎
10.2.1 MyISAM 的架構
10.2.2 資料檔案(.MYD)
10.2.3 索引檔案(.MYI)
10.3 InnoDB 儲存引擎
10.3.1 InnoDB 的宗旨和主要功能特性
10.3.2 InnoDB 的架構和程式碼佈局
10.3.3 InnoDB 檔案格式
10.3.4 InnoDB 記錄結構
10.3.5 InnoDB 頁結構
10.4 小結
第11 章 MySQL 記錄檔功能及實現分析
11.1 錯誤記錄檔
11.1.1 錯誤記錄檔功能介紹
11.1.2 錯誤記錄檔初始化
11.1.3 錯誤記錄檔的記錄實現
11.2 普通記錄檔
11.2.1 普通記錄檔功能介紹
11.2.2 普通記錄檔的初始化
11.2.3 普通記錄檔記錄功能實現
11.3 慢查詢記錄檔( 譯註:Slow query log)
11.3.1 慢查詢記錄檔功能概述
11.3.2 慢查詢記錄檔的初始化
11.3.3 慢查詢記錄檔的實現
11.4 二進位記錄檔
11.4.1 二進位記錄檔功能介紹
11.4.2 二進位記錄檔的初始化
11.4.3 二進位記錄檔的實現
11.5 小結
第12 章 其他子系統
12.1 複製功能(Replication) 子系統
12.1.1 Replication 基礎架構描述
12.1.2 Replication 實現原理簡述
12.1.3 Replication 複製執行緒
12.1.4 Replication 功能檔案
12.1.5 Replication 子系統組成
12.1.6 Replication 原理剖析
12.1.7 小結
12.2 錯誤訊息子系統
12.2.1 錯誤訊息的實現原理
12.2.2 錯誤訊息的一致性
12.2.3 不同版本下錯誤訊息的增加方法
12.2.4 小結
附錄A Bazaar 入門指南
A.1 什麼是Bazaar
A.2 安裝Bazaar
A.2.1 Linux 下安裝
A.2.2 其他系統下安裝
A.3 向Bazaar 中註冊使用者資訊
A.4 向Bazaar 中傳送專案檔案
A.4.1 建立專案