譯者序
前言
致謝
審校者簡介
第一部分 方法和工具
第1章性能調優(yōu)方法 2
1.1 警示故事 2
1.2 對癥性能調優(yōu) 3
1.3 系統(tǒng)性能調優(yōu) 3
1.3.1 數(shù)據庫請求剖析 3
1.3.2 MongoDB數(shù)據庫的層次 4
1.4 小化應用程序工作負載 5
1.5 減少物理IO 6
1.6 優(yōu)化磁盤IO 6
1.7 集群調優(yōu) 7
1.8 小結 7
第2章MongoDB架構與概念 8
2.1 MongoDB文檔模型 8
2.1.1 JSON 9
2.1.2 二進制JSON 9
2.1.3 集合 9
2.1.4 MongoDB schema 9
2.2 MongoDB協(xié)議 12
2.2.1 有線協(xié)議 12
2.2.2 MongoDB驅動程序 12
2.3 MongoDB命令 13
2.3.1 查找命令 13
2.3.2 聚合命令 14
2.3.3 數(shù)據操作命令 15
2.4 一致性機制 15
2.4.1 讀取策略與寫入策略 15
2.4.2 事務 16
2.5 查詢優(yōu)化 16
2.6 MongoDB架構 17
2.6.1 mongod 17
2.6.2 存儲引擎 17
2.6.3 副本集 18
2.6.4 分片 19
2.6.5 分片機制 19
2.6.6 集群平衡 20
2.7 小結 20
第3章行業(yè)工具 21
3.1 explain() 21
3.1.1 開始使用explain() 22
3.1.2 替代計劃 24
3.1.3 執(zhí)行統(tǒng)計信息 25
3.1.4 使用explain()來調優(yōu)查詢 26
3.1.5 可視化解釋函數(shù)的使用方法 28
3.2 查詢剖析器 29
3.2.1 system.prof?ile集合 30
3.2.2 分析剖析數(shù)據 31
3.3 使用MongoDB日志進行調優(yōu) 33
3.4 服務器統(tǒng)計信息 35
3.5 檢查當前操作 38
3.6 操作系統(tǒng)監(jiān)控 41
3.7 MongoDB Compass 42
3.8 小結 43
第二部分 應用程序與數(shù)據庫設計
第4章schema建?!?6
4.1 指導原則 46
4.2 鏈接與嵌入 47
4.2.1 案例研究 47
4.2.2 獲取客戶的所有數(shù)據 50
4.2.3 獲取所有未結訂單 51
4.2.4 熱門產品 52
4.2.5 插入新訂單 53
4.2.6 更新產品 54
4.2.7 刪除客戶 54
4.2.8 案例研究總結 55
4.3 高級模式 56
4.3.1 子集化 56
4.3.2 垂直分區(qū) 58
4.3.3 屬性模式 58
4.4 小結 60
第5章索引 61
5.1 B樹索引 61
5.1.1 索引選擇性 62
5.1.2 唯一索引 63
5.1.3 索引掃描 63
5.1.4 不區(qū)分大小寫的搜索 64
5.2 復合索引 65
5.2.1 復合索引性能 66
5.2.2 復合索引鍵順序 66
5.2.3 復合索引指南 67
5.2.4 覆蓋索引 67
5.3 索引合并 68
5.4 局部索引和稀疏索引 68
5.4.1 局部索引 69
5.4.2 稀疏索引 69
5.5 使用索引進行排序和連接 70
5.5.1 排序 70
5.5.2 連接 70
5.6 索引開銷 70
5.7 文本索引 73
5.8 地理空間索引 78
5.8.1 地理空間索引性能 81
5.8.2 地理空間索引限制 81
5.9 小結 82
第三部分 MongoDB代碼調優(yōu)
第6章查詢調優(yōu) 84
6.1 緩存結果 84
6.2 優(yōu)化網絡往返 86
6.2.1 投影 86
6.2.2 批處理 87
6.2.3 在代碼中避免過多的
網絡往返 88
6.2.4 批量插入 90
6.2.5 應用程序架構 90
6.3 選擇索引與選擇掃描 90
6.4 優(yōu)化排序操作 93
6.5 選擇或創(chuàng)建正確的索引 95
6.6 過濾策略 97
6.6.1 不等條件 97
6.6.2 范圍查詢 99
6.6.3 $OR或$IN操作 100
6.6.4 數(shù)組查詢 101
6.6.5 正則表達式 102
6.6.6 $exists查詢 103
6.7 優(yōu)化集合掃描 105
6.8 小結 105
第7章調優(yōu)和利用聚合管道 106
7.1 調優(yōu)聚合管道 106
7.1.1 優(yōu)化聚合排序 109
7.1.2 自動管道優(yōu)化 111
7.2 優(yōu)化多集合連接 113
7.2.1 連接順序 115
7.2.2 優(yōu)化圖查找 116
7.3 聚合內存利用 118
7.4 在聚合管道中排序 119
7.4.1 索引聚合排序 119
7.4.2 磁盤排序 121
7.5 優(yōu)化視圖 122
7.6 小結 126
第8章插入、更新和刪除 127
8.1 基礎知識 127
8.1.1 過濾器優(yōu)化 127
8.1.2 解釋數(shù)據操作語句 128
8.1.3 索引開銷 128
8.1.4 找到未使用的索引 129
8.1.5 寫入策略 130
8.2 插入 130
8.2.1 批處理 130
8.2.2 克隆數(shù)據 132
8.2.3 從文件加載 134
8.3 更新 134
8.3.1 動態(tài)值批量更新 134
8.3.2 multi:true標志 135
8.3.3 upsert 136
8.3.4 使用$merge的批量upsert 137
8.4 刪除 138
8.5 小結 138
第9章事務 139
9.1 事務理論 139
9.2 MongoDB事務 140
9.2.1 事務限制 141
9.2.2 TransientTransactionError 141
9.2.3 MongoDB驅動程序中的事務 143
9.2.4TransientTransactionError對
性能的影響 145
9.3 事務優(yōu)化 146
9.3.1 避免事務 146
9.3.2 操作順序 148
9.3.3 對熱文檔分區(qū) 149
9.4 小結 150
第10章服務器監(jiān)控 152
10.1 主機級監(jiān)控 152
10.1.1 網絡 153
10.1.2 CPU 155
10.1.3 內存 156
10.1.4 磁盤IO 156
10.2 MongoDB服務器監(jiān)控 156
10.2.1 Compass 156
10.2.2 Free Monitoring服務 157
10.2.3 Ops Manager 158
10.2.4 MongoDB Atlas 158
10.2.5 第三方監(jiān)控工具 160
10.3 小結 160
第四部分 服務器調優(yōu)
第11章內存調優(yōu) 162
11.1 MongoDB內存架構 162
11.1.1 主機內