内容简介
上篇 基础篇
第1章 Greenplum简介
1.1 Greenplum的起源和发展历程
1.2 OLTP与OLAP
1.3 PostgreSQL与Greenp lum的关系
1.3.1 PostgreSQL
1.3.2 Greenplum
1.4 Greenplum特性及应用场景
1.4.1 Greenplum特性
1.4.2 Greenplum应用场景
1.5 小结
第2章 Greenplum快速入门
2.1 软件安装及数据库初始化
2.1.1 Greenplum架构
2.1.2 环境搭建
2.1.3 Greenplum安装
2.1.4 创建数据库
2.1.5 数据库启动与关闭
2.2 安装Greenplum的常见问题
2.2.1 /etc/hosts配置错误
2.2.2 MASTER_DATA_DIRECTORY设置错误
2.3 畅游Greenplum
2.3.1 如何访问Greenplum
2.3.2 数据库整体概况
2.3.3 基本语法介绍
2.3.4 常用数据类型
2.3.5 常用函数
2.3.6 分析函数
2.3.7 分区表
2.3.8 外部表
2.3.9 COPY命令
2.4 小结
第3章 Greenplum实战
3.1 历史拉链表
3.1.1 应用场景描述
3.1.2 原理及步骤
3.1.3 表结构
3.1.4 Demo数据准备
3.1.5 数据加载
3.1.6 数据刷新
3.1.7 分区裁剪
3.1.8 数据导出
3.2 日志分析
3.2.1 应用场景描述
3.2.2 数据Demo
3.2.3 日志分析实战
3.3 数据分布
3.3.1 数据分散情况查看
3.3.2 数据加载速度影响
3.3.3 数据查询速度影响
3.4 数据压缩
3.4.1 数据加载速度影响
3.4.2 数据查询速度影响
3.5 索引
3.6 小结
中篇 进阶篇
第4章 数据字典详解
4.1 oid无处不在
4.2 数据库集群信息
4.2.1 Gp_configuration和gp_segment_configuration
4.2.2 Gp id
4.2.3 Gp_configuration_history
4.2.4 pg_filespace_entry
4.2.5 集群配置信息表转化
4.3 常用数据字典
4.3.1 pg_class
4.3.2 pg_attribute
4.3.3 gp_distribution_policy
4.3.4 pg_statistic和pg_stats
4.4 分区表信息
4.4.1 如何实现分区表
4.4.2 pg_partition
4.4.3 pg_partition_rule
4.4.4 pg_partitions视图及其优化
4.5 自定义类型以及类型转换
4.6 主、备节点同步的相关数据字典
4.7 数据字典应用示例
4.7.1 获取表的字段信息
4.7.2 获取表的分布键
4.7.3 获取一个视图的定义
4.7.4 查询comment(备注信息)
4.7.5 获取数据库建表语句
4.7.6 查询表上的视图
4.7.7 查询表的数据文件创建时间
4.7.8 分区表总大小
4.7.9 如何分析数据字典变化
4.7.10 获取数据库锁信息
4.8 Gp toolkit介绍
4.9 小结
第5章 执行计划详解
5.1 执行计划入门
5.1.1 什么是执行计划
5.1.2 查看执行计划
5.2 分布式执行计划概述
5.2.1 架构
5.2.2 重分布与广播
5.2.3 Greenplum Master的工作
5.3 Greenplum执行计划中的术语
5.3.1 数据扫描方式
5.3.2 分布式执行
5.3.3 两种聚合方式
5.3.4 关联
5.3.5 SQL消耗
5.3.6 其他术语
5.4 数据库统计信息收集
5.4.1 Analyze分析
5.4.2 固定执行计划
5.5 控制执行计划的参数介绍
5.6 规划器开销的计算方法
5.7 各种执行计划原理分析
5.7.1 详解关联的广播与重分布
5.7.2 HashAggregate与GroupAggregate
5.7.3 Nestloop Join、Hash Join与Merge Join
5.7.4 分析函数:开窗函数和grouping sets
5.8 案例
5.8.1 关联键强制类型转换,导致重分布
5.8.2 统计信息过期
5.8.3 执行计划出错
5.8.4 分布键选择不恰当
5.8.5 计算distinct
5.8.6 union与union all
5.8.7 子查询notin
5.8.8 聚合函数太多导致内存不足
5.9 小结
第6章 Greenplum高级应用
6.1 Appendonly表与压缩表
6.1.1 应用场景及语法介绍
6.1.2 压缩表的性能差异
6.1.3 Appendonly表特性
6.1.4 相关数据字典
6.2 列存储
6.2.1 应用场景
6.2.2 数据文件存储特性
6.2.3 如何使用列存储
6.2.4 性能比较
6.3 外部表高级应用
6.3.1 外部表实现原理
6.3.2 可写外部表
6.3.3 HDFS外部表
6.3.4 可执行外部表
6.4 自定义函数——各个编程接口
6.4.1 pl/pgsql
6.4.2 C语言接口
6.4.3 plpython
6.5 Greenplum MapReduce
6.6 小结
第7章 Greenplum架构介绍
7.1 并行和分布式计算
7.2 并行数据库
7.3 Greenplum架构分析
7.4 冗余与故障切换
7.5 数据分布及负载均衡
7.6 跨库关联
7.7 分布式事务
7.8 其他大数据分析方案
7.9 小结
下篇 管理篇
第8章 Greenplum线上环境部署
8.1 服务器硬件选型
8.1.1 CPU
8.1.2 内存
8.1.3 磁盘及硬盘接口
8.1.4 网络
8.2 服务器系统参数调整
8.2.1 Solaris参数修改
8.2.2 Linux参数修改
8.2.3 系统参数及性能验证
8.3 计算节点分配技巧
8.4 数据库参数介绍
8.5 数据库集群基准测试
8.6 小结
第9章 数据库管理
9.1 用户及权限管理
9.1.1 Greenplum数据库逻辑结构
9.1.2 Grant语法
9.2 登录权限控制
9.3 资源队列及并发控制
9.4 Greenplum锁机制
9.5 数据目录结构
9.6 数据文件存储分布
9.7 表空间管理
9.8 小结
第10章 数据库监控及调优
10.1 Linux监控工具介绍
10.1.1 监控磁盘
10.1.2 监控网络
10.1.3 监控CPU
10.1.4 监控内存
10.2 安装Performance Monitor
10.3 监控Segment是否正常
10.4 VACUUM系统表
10.5 数据倾斜排查
10.6 查看子节点的SQL运行状态
10.7 自动加分区
10.8 自动赋权
10.9 清理过期数据
10.10 小结
第11章 解读Greenplum维护脚本
11.1 添加Greenplum Contrib模块
11.2 启动和关闭脚本gpstart和gpstop
11.3 初始化系统脚本gpinitsystem
11.4 集群操作脚本gpssh和gpscp
11.5 数据库状态检查脚本gpstate
11.6 数据库升级脚本gpmigrate
11.7 参数修改脚本gpconfig
11.8 数据库一致性检查脚本gpcheckcat
11.9 小结
第12章 备份及恢复策略
12.1 Greenplum 3.x
12.2 Greenplum 4.x
12.3 gp_dump和pg_dump
12.4 Greenplum Master备份策略
12.4.1 增加Standby Master
12.4.2 重新同步Standby Master
12.4.3 启用Standby Master
12.5 小结
第13章 数据库扩容
13.1 迁移计算节点
13.1.1 两种备份方案
13.1.2 数据迁移实战
13.2 增加计算节点
13.3 小结
第14章 基于Greenplum的海量数据实时分析服务平台
14.1 需求概述
14.2 典型方案
14.2.1 NoSQL
14.2.2 分布式数据库/集群
14.2.3 分表分库
14.2.4 方案优劣分析
14.3 基于Greenplum的混合架构
14.3.1 架构分析
14.3.2 实施要点
14.4 小结
第15章 使用Greenplum的常见报错及小技巧
15.1 分析常见报错
15.1.1 找不到类型705对应的操作符
15.1.2 SQL占用的资源超过了资源队列限制
15.1.3 自定义函数不能在Segment上执行
15.1.4 子查询没有加别名
15.1.5 字段名有歧义
15.1.6 字段重名
15.1.7 gpfdist错误:无法读取文件
15.1.8 事务被中止
15.1.9 网络异常错误
15.1.10 无法删除表
15.1.11 内存不足
15.1.12 文件名在pg_class中已存在
15.1.13 不能对分布键执行Update
15.1.14 网络错误
15.1.15 无法找到数据文件
15.2 常见问题及解决办法
15.3 常用的一些小技巧
15.3.1 显示SQL执行的时间
15.3.2 获取某个schema下所有的表或视图
15.3.3 查找分区最多的表
15.3.4 连接Segment节点
15.3.5 psql默认密码登录
15.3.6 查看数据库启动时间
15.3.7 查看在psql中\d到底查询了哪些数据字典
15.4 小结