發表於2024-11-10
京東一綫開發人員力作
詳細講述數據庫內部的實現原理
深入淺齣地闡述MariaDB的設計理念
廣泛涵蓋MariaDB區彆於MySQL的主要亮點功能
第1章 MariaDB概述 1
1.1 MariaDB的曆史 1
1.2 MariaDB所做的事情 2
1.2.1 更豐富的存儲引擎 2
1.2.2 性能的提升 2
1.2.3 擴展和新特性 3
1.2.4 更好的測試 3
1.2.5 盡量消除錯誤和警告 4
1.3 MariaDB的版本與兼容性 4
1.3.1 MariaDB 5.1和MySQL 5.1的不兼容性 4
1.3.2 MariaDB 5.2和MySQL 5.1的不兼容性 5
1.3.3 MariaDB 5.3和MySQL 5.1、MariaDB 5.2的不兼容性 5
1.3.4 MariaDB 5.5和MariaDB 5.3的不兼容性 6
1.3.5 MariaDB 5.5與MariaDB 5.3和MySQL 5.5 的不兼容性 7
1.3.6 MariaDB 10.0和MySQL 5.6的不兼容性 7
1.4 編譯和安裝MariaDB 8
1.4.1 使用二進製安裝包進行安裝 8
1.4.2 使用源代碼進行編譯安裝 9
1.5 聯係社區 11
1.6 小結 12
第2章 MariaDB的擴展和新特性 13
2.1 更多的存儲引擎 13
2.1.1 全新的Aria存儲引擎 13
2.1.2 XtraDB存儲引擎 16
2.1.3 SphinxSE存儲引擎 17
2.1.4 FederatedX存儲引擎 17
2.1.5 TokuDB存儲引擎 18
2.1.6 Cassandra存儲引擎 18
2.1.7 CONNECT存儲引擎 18
2.1.8 Sequence存儲引擎 19
2.1.9 Spider存儲引擎 20
2.2 綫程池技術和binlog group commit技術 22
2.2.1 綫程池技術 22
2.2.2 binlog group commit技術 23
2.3 MariaDB其他擴展和新特性 23
2.3.1 更高的時間精度 23
2.3.2 虛擬列 24
2.3.3 用戶統計功能 25
2.3.4 KILL命令的擴展 27
2.3.5 命令執行進度報告 27
2.3.6 動態列 28
2.3.7 多源復製 29
2.4 小結 29
第3章 初識MariaDB源代碼 31
3.1 MariaDB源代碼的目錄組織結構 31
3.2 MariaDB對類型和函數的封裝 33
3.2.1 對類型的封裝 33
3.2.2 對函數的封裝 33
3.3 調試MariaDB 34
3.3.1 準備工作 34
3.3.2 mysqld關鍵的函數調用 37
3.3.3 調試 38
3.4 小結 40
第4章 MariaDB基礎數據結構 41
4.1 內存池MEM_ROOT 41
4.1.1 內存碎片問題 42
4.1.2 MEM_ROOT的定義 44
4.1.3 MEM_ROOT的使用 46
4.1.4 MEM_ROOT的初始化 47
4.1.5 分配內存 48
4.1.6 內存迴收 50
4.1.7 MEM_ROOT的使用場景 52
4.2 文件緩存IO_CACHE 52
4.2.1 高性能武器——緩存 53
4.2.2 IO_CACHE的定義 54
4.2.3 IO_CACHE的使用 57
4.3 NET結構 63
4.4 綫程上下文——THD 65
4.5 TABLE_SHARE 69
4.6 TABLE 73
4.7 小結 76
第5章 MariaDB綫程池 77
5.1 綫程池相關的參數 77
5.1.1 MariaDB 5.1和MariaDB 5.3中的綫程池 77
5.1.2 MariaDB 5.5和MariaDB 10.0中的綫程池 78
5.2 何時使用綫程池 79
5.3 綫程池的實現 79
5.3.1 綫程池相關的數據結構 80
5.3.2 綫程池的初始化 82
5.3.3 添加連接到綫程池 84
5.3.4 worker綫程 85
5.3.5 get_event函數 86
5.3.6 listener綫程 89
5.3.7 timer綫程 92
5.4 小結 94
第6章 二進製日誌binlog 95
6.1 簡介 95
6.1.1 binlog的作用 96
6.1.2 index文件 96
6.2 binlog的使用 97
6.2.1 開啓binlog 97
6.2.2 選擇binlog的格式 97
6.2.3 binlog的相關參數 98
6.3 binlog事件 99
6.3.1 binlog事件格式 99
6.3.2 binlog事件類型 101
6.3.3 binlog事件的實現 108
6.4 清理binlog 109
6.4.1 手動清理binlog 109
6.4.2 自動清理binlog 109
6.4.3 purge命令的實現 109
6.5 binlog_cache_mngr結構 112
6.6 mysqlbinlog工具 112
6.7 使用binlog進行恢復 113
6.8 小結 113
第7章 binlog group commit技術 115
7.1 事務的兩階段提交 115
7.2 binlog group commit的工作原理 117
7.3 binlog group commit的實現 118
7.3.1 相關的數據結構 118
7.3.2 代碼執行流程 120
7.3.3 事務排隊 125
7.3.4 leader綫程的工作 128
7.3.5 prepare_ordered和commit_ordered接口 134
7.4 小結 135
第8章 復製 136
8.1 簡介 136
8.2 復製的作用 137
8.3 復製的工作原理 138
8.3.1 概要 138
8.3.2 relay-log 140
8.3.3 master.info文件和relay-log.info文件 140
8.4 復製的配置 141
8.4.1 在新安裝的主庫和從庫上配置復製 141
8.4.2 主庫有一定數據時的復製配置 144
8.4.3 選擇性復製 150
8.5 復製的實現 151
8.5.1 復製相關的數據結構 152
8.5.2 復製的初始化——init_slave函數 157
8.5.3 CHANGE MASTER TO命令——準備工作 159
8.5.4 START SLAVE命令——開啓復製 160
8.5.5 STOP SLAVE命令——停止復製 160
8.5.6 slave IO綫程 161
8.5.7 slave SQL綫程 164
8.5.8 master dump綫程 165
8.6 半同步復製 168
8.6.1 半同步復製的工作原理 168
8.6.2 半同步的安裝和配置 169
8.6.3 半同步復製的實現 171
8.6.4 半同步復製的變種 179
8.6.5 半同步復製的潛在問題 180
8.7 並行復製 181
8.7.1 MySQL的並行復製 181
8.7.2 MariaDB的並行復製 181
8.8 多源復製 182
8.8.1 多源復製的應用場景 182
8.8.2 多源復製相關的命令 183
8.8.3 MariaDB多源復製的實現 184
8.9 GTID 185
8.9.1 GTID的概念 186
8.9.2 在MySQL上配置基於GTID的復製 186
8.9.3 MySQL中GTID的實現 187
8.9.4 MariaDB中的GTID 195
8.10 小結 195
第9章 數據結構和算法 197
9.1 算法復雜度 197
9.2 B+樹和索引 198
9.2.1 磁盤的讀取 198
9.2.2 B+樹 199
9.2.3 數據庫索引 200
9.3 堆排序與快速排序 201
9.3.1 堆——優先級隊列 201
9.3.2 堆排序 202
9.3.3 快速排序——qsort 203
9.4 ORDER BY的實現 204
9.4.1 使用索引的已有順序 205
9.4.2 filesort算法 207
9.5 JOIN的實現 210
9.5.1 JOIN語句的使用 211
9.5.2 Nest Loop Join算法 212
9.5.3 Block Nest Loop Join算法 214
9.5.4 Batched Key Access Join算法 216
9.5.5 Hash Join算法 216
9.5.6 Sort Merge Join算法 217
9.6 小結 218
第10章 分布式數據庫 219
10.1 分布式數據庫概要 219
10.1.1 分布式數據庫的特點 219
10.1.2 係統的擴展方式 220
10.1.3 分布式數據庫中的技術難點 221
10.2 數據的分片方式 221
10.3 分布式數據庫實踐——京東分布式數據庫係統 222
10.3.1 京東分布式數據庫係統架構 222
10.3.2 高可用組的初始化 223
10.3.3 數據的分片 224
10.3.4 係統的高可用性 225
10.3.5 係統的可擴展性 227
10.4 小結 230
附錄A 數據庫與IO資源控製 231
自從60多年前關係型數據庫齣現起,它就被廣泛使用。至今,幾乎所有IT係統都離不開關係型數據庫。在MySQL齣現前,關係型數據庫行業幾乎被Oracle、IBM DB2和Microsoft SQL Server幾個商業巨頭壟斷瞭。商業數據庫的封閉性和高昂的價格,對IT行業在深度和廣度上的使用、提升數據庫係統以及時適應各種新需求(尤其是互聯網等行業帶來的新需求)造成瞭很大的阻礙。20世紀末開源數據庫MySQL的齣現和崛起,為整個數據庫行業帶來瞭巨大的希望。可惜隨著MySQL被Oracle公司收購,存在Oracle公司將MySQL閉源的巨大潛在風險。為瞭避免這種風險,為行業提供一個永久開源免費的關係型數據庫係統,MariaDB被創造瞭齣來。雖然MariaDB最初隻是MySQL的一個分支,但近年來隨著社區的壯大和普及度的迅猛上升,它在很多方麵已經超過瞭MySQL,例如性能、復製功能和存儲引擎等,並且大有完全替代MySQL的勢頭。
本書深入淺齣地闡述瞭MariaDB的設計理念,剖析瞭MariaDB的幾個關鍵而有趣的子係統。本書的作者是我的同事,我目睹瞭他們將日常工作實踐中總結和提煉齣MariaDB的心得轉化成書的過程。這是一本理論結閤實踐的書,讀者不但可以學習到MariaDB的理論,還可以參照書中的實例一步步地自行調試實踐。我相信本書會對有誌學習MariaDB的讀者有所幫助。
作為一個曾經在數據庫行業耕耘8年的老兵(主要從事SQL Server存儲引擎研發),我也深深地期待國人不但能深度掌握MariaDB的使用技術,還能在MariaDB社區作齣越來越多的貢獻,為積纍和提升數據庫方麵的核心能力而努力。期待這本書能啓發和引導更多的同行來參與MariaDB社區的工作並發揮齣價值。
何剛,京東集團技術副總裁
MariaDB原理與實現 下載 mobi pdf epub txt 電子書 格式 2024
MariaDB原理與實現 下載 mobi epub pdf 電子書好
評分好好好好好好好好好好好好好
評分感覺很實用,非常好,送貨快,沒的說
評分很好很好很好很好很好
評分可以一學,瞭解部分實現
評分正品,不錯,送貨速度快!
評分內容沒啥用 建議彆買
評分還沒看,主要想瞭解一下
評分質量很好,內容也不錯
MariaDB原理與實現 mobi epub pdf txt 電子書 格式下載 2024