目 錄
前言
上篇 基 礎 篇
第1章 Greenplum簡介 2
1.1 Greenplum的起源和發展曆程 2
1.2 OLTP與OLAP 3
1.3 PostgreSQL與Greenplum的關係 3
1.3.1 PostgreSQL 3
1.3.2 Greenplum 5
1.4 Greenplum特性及應用場景 6
1.4.1 Greenplum特性 6
1.4.2 Greenplum應用場景 7
1.5 小結 8
第2章 Greenplum快速入門 9
2.1 軟件安裝及數據庫初始化 9
2.1.1 Greenplum架構 9
2.1.2 環境搭建 11
2.1.3 Greenplum安裝 13
2.1.4 創建數據庫 20
2.1.5 數據庫啓動與關閉 20
2.2 安裝Greenplum的常見問題 22
2.2.1 /etc/hosts配置錯誤 22
2.2.2 MASTER_DATA_DIRECTORY設置錯誤 24
2.3 暢遊Greenplum 25
2.3.1 如何訪問Greenplum 25
2.3.2 數據庫整體概況 27
2.3.3 基本語法介紹 28
2.3.4 常用數據類型 35
2.3.5 常用函數 37
2.3.6 分析函數 43
2.3.7 分區錶 46
2.3.8 外部錶 49
2.3.9 COPY命令 51
2.4 小結 52
第3章 Greenplum實戰 53
3.1 曆史拉鏈錶 53
3.1.1 應用場景描述 53
3.1.2 原理及步驟 54
3.1.3 錶結構 55
3.1.4 Demo數據準備 57
3.1.5 數據加載 58
3.1.6 數據刷新 61
3.1.7 分區裁剪 64
3.1.8 數據導齣 64
3.2 日誌分析 65
3.2.1 應用場景描述 65
3.2.2 數據Demo 65
3.2.3 日誌分析實戰 66
3.3 數據分布 68
3.3.1 數據分散情況查看 69
3.3.2 數據加載速度影響 69
3.3.3 數據查詢速度影響 72
3.4 數據壓縮 73
3.4.1 數據加載速度影響 73
3.4.2 數據查詢速度影響 74
3.5 索引 75
3.6 小結 75
中篇 進 階 篇
第4章 數據字典詳解 78
4.1 oid無處不在 78
4.2 數據庫集群信息 80
4.2.1 Gp_configuration和gp_segment_configuration 80
4.2.2 Gp_id 82
4.2.3 Gp_configuration_history 84
4.2.4 pg_filespace_entry 84
4.2.5 集群配置信息錶轉化 84
4.3 常用數據字典 85
4.3.1 pg_class 85
4.3.2 pg_attribute 88
4.3.3 gp_distribution_policy 89
4.3.4 pg_statistic和pg_stats 90
4.4 分區錶信息 90
4.4.1 如何實現分區錶 91
4.4.2 pg_partition 91
4.4.3 pg_partition_rule 92
4.4.4 pg_partitions視圖及其優化 93
4.5 自定義類型以及類型轉換 94
4.6 主、備節點同步的相關數據字典 95
4.7 數據字典應用示例 96
4.7.1 獲取錶的字段信息 96
4.7.2 獲取錶的分布鍵 96
4.7.3 獲取一個視圖的定義 97
4.7.4 查詢comment(備注信息) 98
4.7.5 獲取數據庫建錶語句 99
4.7.6 查詢錶上的視圖 103
4.7.7 查詢錶的數據文件創建時間 104
4.7.8 分區錶總大小 106
4.7.9 如何分析數據字典變化 108
4.7.10 獲取數據庫鎖信息 111
4.8 Gp_toolkit介紹 112
4.9 小結 114
第5章 執行計劃詳解 115
5.1 執行計劃入門 115
5.1.1 什麼是執行計劃 115
5.1.2 查看執行計劃 116
5.2 分布式執行計劃概述 116
5.2.1 架構 116
5.2.2 重分布與廣播 117
5.2.3 Greenplum Master的工作 119
5.3 Greenplum執行計劃中的術語 120
5.3.1 數據掃描方式 120
5.3.2 分布式執行 121
5.3.3 兩種聚閤方式 122
5.3.4 關聯 123
5.3.5 SQL消耗 126
5.3.6 其他術語 126
5.4 數據庫統計信息收集 128
5.4.1 Analyze分析 128
5.4.2 固定執行計劃 129
5.5 控製執行計劃的參數介紹 130
5.6 規劃器開銷的計算方法 131
5.7 各種執行計劃原理分析 133
5.7.1 詳解關聯的廣播與重分布 133
5.7.2 HashAggregate與GroupAggregate 137
5.7.3 Nestloop Join 、 Hash Join 與Merge Join 141
5.7.4 分析函數:開窗函數和grouping sets 142
5.8 案例 144
5.8.1 關聯鍵強製類型轉換,導緻重分布 144
5.8.2 統計信息過期 145
5.8.3 執行計劃齣錯 145
5.8.4 分布鍵選擇不恰當 147
5.8.5 計算distinct 148
5.8.6 union與union all 150
5.8.7 子查詢not in 152
5.8.8 聚閤函數太多導緻內存不足 154
5.9 小結 155
第6章 Greenplum高級應用 156
6.1 Appendonly錶與壓縮錶 157
6.1.1 應用場景及語法介紹 157
6.1.2 壓縮錶的性能差異 157
6.1.3 Appendonly錶特性 158
6.1.4 相關數據字典 164
6.2 列存儲 165
6.2.1 應用場景 165
6.2.2 數據文件存儲特性 166
6.2.3 如何使用列存儲 166
6.2.4 性能比較 166
6.3 外部錶高級應用 168
6.3.1 外部錶實現原理 168
6.3.2 可寫外部錶 171
6.3.3 HDFS外部錶 173
6.3.4 可執行外部錶 177
6.4 自定義函數—各個編程接口 179
6.4.1 pl/pgsql 180
6.4.2 C語言接口 182
6.4.3 plpython 185
6.5 Greenplum MapReduce 187
6.6 小結 193
第7章 Greenplum架構介紹 195
7.1 並行和分布式計算 195
7.2 並行數據庫 197
7.3 Greenplum架構分析 198
7.4 冗餘與故障切換 199
7.5 數據分布及負載均衡 200
7.6 跨庫關聯 202
7.7 分布式事務 203
7.8 其他大數據分析方案 205
7.9 小結 208
下篇 管 理 篇
第8章 Greenplum綫上環境部署 210
8.1 服務器硬件選型 210
8.1.1 CPU 211
8.1.2 內存 211
8.1.3 磁盤及硬盤接口 211
8.1.4 網絡 213
8.2 服務器係統參數調整 213
8.2.1 Solaris參數修改 214
8.2.2 Linux參數修改 216
8.2.3 係統參數及性能驗證 217
8.3 計算節點分配技巧 221
8.4 數據庫參數介紹 221
8.5 數據庫集群基準測試 225
8.6 小結 227
第9章 數據庫管理 228
9.1 用戶及權限管理 228
9.1.1 Greenplum數據庫邏輯結構 228
9.1.2 Grant語法 229
9.2 登錄權限控製 231
9.3 資源隊列及並發控製 232
9.4 Greenplum鎖機製 236
9.5 數據目錄結構 238
9.6 數據文件存儲分布 240
9.7 錶空間管理 241
9.8 小結 244
第10章 數據庫監控及調優 245
10.1 Linux監控工具介紹 245
10.1.1 監控磁盤 245
10.1.2 監控網絡 246
10.1.3 監控CPU 247
10.1.4 監控內存 247
10.2 安裝Performance Monitor 248
10.3 監控Segment是否正常 252
10.4 VACUUM係統錶 253
10.5 數據傾斜排查 255
10.6 查看子節點的SQL運行狀態 258
10.7 自動加分區 261
10.8 自動賦權 266
10.9 清理過期數據 266
10.10 小結 267
第11章 解讀Greenplum維護腳本 268
11.1 添加Greenplum Contrib模塊 268
11.2 啓動和關閉腳本gpstart和gpstop 270
11.3 初始化係統腳本gpinitsystem 272
11.4 集群操作腳本gpssh和gpscp 274
11.5 數據庫狀態檢查腳本gpstate 275
11.6 數據庫升級腳本gpmigrate 276
11.7 參數修改腳本gpconfig 281
11.8 數據庫一緻性檢查腳本gpcheckcat 282
11.9 小結 284
第12章 備份及恢復策略 286
12.1 Greenplum 3.x 286
12.2 Greenplum 4.x 287
12.3 gp_dump和pg_dump 290
12.4 Greenplum Master備份策略 294
12.4.1 增加Standby Master 295
12.4.2 重新同步Standby Master 296
12.4.3 啓用Standby Master 296
12.5 小結 297
第13章 數據庫擴容 299
13.1 遷移計算節點 299
13.1.1 兩種備份方案 300
13.1.2 數據遷移實戰 301
13.2 增加計算節點 306
13.3 小結 311
第14章 基於Greenplum的海量數據實時分析服務平颱 312
14.1 需求概述 312
14.2 典型方案 313
14.2.1 NoSQL 313
14.2.2 分布式數據庫/集群 314
14.2.3 分錶分庫 315
14.2.4 方案優劣分析 316
14.3 基於Greenplum的混閤架構 316
14.3.1 架構分析 317
14.3.2 實施要點 317
14.4 小結 318
第15章 使用Greenplum的常見報錯及小技巧 319
15.1 分析常見報錯 319
15.1.1 找不到類型705對應的操作符 319
15.1.2 SQL占用的資源超過瞭資源隊列限製 321
15.1.3 自定義函數不能在Segment上執行 321
15.1.4 子查詢沒有加彆名 322
15.1.5 字段名有歧義 322
15.1.6 字段重名 323
15.1.7 gpfdist錯誤:無法讀取文件 323
15.1.8 事務被中止 324
15.1.9 網絡異常錯誤 324
15.1.10 無法刪除錶 324
15.1.11 內存不足 325
15.1.12 文件名在pg_class中已存在 325
15.1.13 不能對分布鍵執行Update 325
15.1.14 網絡錯誤 326
15.1.15 無法找到數據文件 326
15.2 常見問題及解決辦法 326
15.3 常用的一些小技巧 329
15.3.1 顯示SQL執行的時間 330
15.3.2 獲取某個schema下所有的錶或視圖 330
15.3.3 查找分區最多的錶 330
15.3.4 連接Segment節點 331
15.3.5 psql默認密碼登錄 331
15.3.6 查看數據庫啓動時間 331
15.3.7 查看在psql中d到底查詢瞭哪些數據字典 331
15.4 小結 332
· · · · · · (
收起)