推薦序
前言
緻謝
第1章 mysql體係結構和存儲引擎 1
1.1 定義數據庫和實例 1
1.2 mysql體係結構 3
1.3 mysql錶存儲引擎 5
1.3.1 innodb存儲引擎 6
1.3.2 myisam存儲引擎 7
1.3.3 ndb存儲引擎 7
1.3.4 memory存儲引擎 8
1.3.5 archive存儲引擎 9
1.3.6 federated存儲引擎 9
1.3.7 maria存儲引擎 9
1.3.8 其他存儲引擎 9
1.4 各種存儲引擎之間的比較 10
1.5 連接mysql 13
1.5.1 tcp/ip 13
1.5.2 命名管道和共享內存 14
1.5.3 unix域套接字 15
.1.6 小結 15
第2章 innodb存儲引擎 17
2.1 innodb存儲引擎概述 17
2.2 innodb體係架構 18
2.2.1 後颱綫程 19
2.2.2 內存 22
2.3 master thread 24
2.3.1 master thread源碼分析 25
2.3.2 master thread的潛在問題 30
2.4 關鍵特性 33
2.4.1 插入緩衝 33
2.4.2 兩次寫 36
2.4.3 自適應哈希索引 38
2.5 啓動、關閉與恢復 39
2.6 innodb plugin = 新版本的innodb存儲引擎 42
2.7 小結 44
第3章 文件 45
3.1 參數文件 45
3.1.1 什麼是參數 46
3.1.2 參數類型 47
3.2 日誌文件 48
3.2.1 錯誤日誌 48
3.2.2 慢查詢日誌 50
3.2.3 查詢日誌 54
3.2.4 二進製日誌 55
3.3 套接字文件 64
3.4 pid文件 64
3.5 錶結構定義文件 65
3.6 innodb存儲引擎文件 65
3.6.1 錶空間文件 66
3.6.2 重做日誌文件 67
3.7 小結 70
第4章 錶 72
4.1 innodb存儲引擎錶類型 72
4.2 innodb邏輯存儲結構 72
4.2.1 錶空間 72
4.2.2 段 75
4.2.3 區 75
4.2.4 頁 82
4.2.5 行 83
4.3 innodb物理存儲結構 83
4.4 innodb行記錄格式 83
4.4.1 compact 行記錄格式 85
4.4.2 redundant 行記錄格式 88
4.4.3 行溢齣數據 91
4.4.4 compressed與dynamic行記錄格式 98
4.4.5 char的行結構存儲 99
4.5 innodb數據頁結構 101
4.5.1 file header 103
4.5.2 page header 104
4.5.3 infimum和supremum記錄 105
4.5.4 user records與freespace 106
4.5.5 page directory 106
4.5.6 file trailer 107
4.5.7 innodb數據頁結構示例分析 107
4.6 named file formats 114
4.7 約束 116
4.7.1 數據完整性 116
4.7.2 約束的創建和查找 117
4.7.3 約束和索引的區彆 119
4.7.4 對於錯誤數據的約束 119
4.7.5 enum和set約束 120
4.7.6 觸發器與約束 121
4.7.7 外鍵 123
4.8 視圖 125
4.8.1 視圖的作用 125
4.8.2 物化視圖 128
4.9 分區錶 132
4.9.1 分區概述 132
4.9.2 range分區 134
4.9.3 list分區 141
4.9.4 hash分區 143
4.9.5 key分區 146
4.9.6 columns分區 146
4.9.7 子分區 148
4.9.8 分區中的null值 152
4.9.9 分區和性能 155
4.10 小結 159
第5章 索引與算法 160
5.1 innodb存儲引擎索引概述 160
5.2 二分查找法 161
5.3 平衡二叉樹 162
5.4 b+樹 164
5.4.1 b+樹的插入操作 165
5.4.2 b+樹的刪除操作 167
5.5 b+樹索引 169
5.5.1 聚集索引 170
5.5.2 輔助索引 174
5.5.3 b+樹索引的管理 178
5.6 b+樹索引的使用 183
5.6.1 什麼時候使用b+樹索引 183
5.6.2 順序讀、隨機讀與預讀取 188
5.6.3 輔助索引的優化使用 191
5.6.4 聯閤索引 194
5.7 哈希算法 198
5.7.1 哈希錶 199
5.7.2 innodb存儲引擎中的哈希算法 201
5.7.3 自適應哈希索引 201
5.8 小結 203
第6章 鎖 204
6.1 什麼是鎖 204
6.2 innodb存儲引擎中的鎖 205
6.2.1 鎖的類型 205
6.2.2 一緻性的非鎖定讀操作 211
6.2.3 select ... for update & select ... lock in share mode 214
6.2.4 自增長和鎖 215
6.2.5 外鍵和鎖 217
6.3 鎖的算法 218
6.4 鎖問題 220
6.4.1 丟失更新 221
6.4.2 髒讀 222
6.4.3 不可重復讀 223
6.5 阻塞 224
6.6 死鎖 227
6.7 鎖升級 229
6.8 小結 229
第7章 事務 230
7.1 事務概述 230
7.2 事務的實現 231
7.2.1 redo 231
7.2.2 undo 233
7.3 事務控製語句 236
7.4 隱式提交的sql語句 241
7.5 對於事務操作的統計 243
7.6 事務的隔離級彆 244
7.7 分布式事務 248
7.8 不好的事務習慣 253
7.8.1 在循環中提交 253
7.8.2 使用自動提交 255
7.8.3 使用自動迴滾 256
7.9 小結 258
第8章 備份與恢復 260
8.1 備份與恢復概述 260
8.2 冷備 262
8.3 邏輯備份 263
8.3.1 mysqldump 263
8.3.2 select ... into outfile 270
8.3.3 邏輯備份的恢復 272
8.3.4 load data infile 273
8.3.5 mysqlimport 278
8.4 二進製日誌備份與恢復 280
8.5 熱備 281
8.5.1 ibbackup 281
8.5.2 xtrabackup 282
8.5.3 xtrabackup實現增量備份 284
8.6 快照備份 286
8.7 復製 291
8.7.1 復製的工作原理 291
8.7.2 快照+復製的備份架構 295
8.8 小結 297
第9章 性能調優 298
9.1 選擇閤適的cpu 298
9.2 內存的重要性 299
9.3 硬盤對數據庫性能的影響 302
9.3.1 傳統機械硬盤 302
9.3.2 固態硬盤 302
9.4 閤理地設置raid 304
9.4.1 raid類型 304
9.4.2 raid write back功能 306
9.4.3 raid配置工具 308
9.5 操作係統的選擇也很重要 311
9.6 不同的文件係統對數據庫性能的影響 312
9.7 選擇閤適的基準測試工具 313
9.7.1 sysbench 313
9.7.2 mysql-tpcc 320
9.8 小結 324
第10章 innodb存儲引擎源代碼的編譯和調試 325
10.1 獲取innodb存儲引擎源代碼 325
10.2 innodb源代碼結構 329
10.3 編譯和調試innodb源代碼 330
10.3.1 windows下的調試 330
10.3.2 linux下的調試 333
10.4 小結 338
附錄a secondary buffer pool for innodb 339
附錄b master thread源代碼 342
附錄c doublewrite源代碼 353
附錄d 哈希算法和哈希錶源代碼 361
· · · · · · (
收起)