为你推荐
前言
第一篇 准备篇
第1章 PostgreSQL简介
1.1 什么是PostgreSQL
1.1.1 PostgreSQL的发展历史
1.1.2 PostgreSQL数据库的优势
1.1.3 PostgreSQL应用现状和发展趋势
1.2 PostgreSQL数据库与其他数据库的对比
1.2.1 PostgreSQL与MySQL数据库的对比
1.2.2 PostgreSQL与Oracle数据库的对比
1.3 小结
第2章 PostgreSQL的安装与配置
2.1 从发行版本安装
2.1.1 Red Hat/CentOS下的安装方法
2.1.2 Windows下的安装方法
2.1.3 从发行版本安装总结
2.2 从源码安装
2.2.1 编译安装过程简介
2.2.2 下载源代码
2.2.3 编译及安装
2.2.4 PostgreSQL的配置
2.2.5 创建数据库实例
2.2.6 安装contrib目录下的工具
2.2.7 启动和停止数据库
2.2.8 编译安装过程中的常见问题及解决方法
2.3 PostgreSQL的简单配置
2.3.1 pg_hba.conf的配置
2.3.2 修改监听的IP和端口
2.3.3 数据库日志相关参数
2.3.4 内存参数的设置
2.4 PostgreSQL的安装技巧
2.4.1 不想把数据库实例创建到“/var/lib/pgsql”目录下
2.4.2 如何使用较大的数据块提高I/O性能
2.4.3 打开数据块的checksum功能
2.5 小结
第3章 SQL入门
3.1 SQL语句语法简介
3.1.1 语句的分类
3.1.2 词法结构
3.2 DDL语句
3.2.1 建表语句
3.2.2 删除表语句
3.3 DML语句
3.3.1 插入语句
3.3.2 更新语句
3.3.3 删除语句
3.4 查询语句
3.4.1 单表查询语句
3.4.2 过滤条件的查询
3.4.3 排序
3.4.4 分组查询
3.4.5 多表关联查询
3.4.6 子查询
3.5 其他SQL语句
3.5.1 INSERT...SELECT语句
3.5.2 UNION语句
3.5.3 TRUNCATE TABLE语句
3.6 小结
第二篇 基础篇
第4章 psql工具
4.1 psql介绍
4.2 psql的简单使用
4.3 psql的常用命令
4.3.1 “\h”命令
4.3.2 “\d”命令
4.3.3 指定客户端字符集的命令
4.3.4 格式化输出的\pset命令
4.3.5 “\x”命令
4.3.6 执行存储在外部文件中的SQL命令
4.3.7 编辑命令
4.3.8 输出信息的“\echo”命令
4.3.9 其他命令
4.4 psql的使用技巧
4.4.1 历史命令与补全功能
4.4.2 自动提交技巧
4.4.3 如何得到psql中快捷命令执行的实际SQL
4.5 小结
第5章 数据类型
5.1 数据类型介绍
5.1.1 数据类型的分类
5.1.2 数据类型的输入与转换
5.2 布尔类型
5.2.1 布尔类型介绍
5.2.2 布尔类型的操作符
5.3 数值类型
5.3.1 数值类型介绍
5.3.2 整数类型
5.3.3 精确的小数类型
5.3.4 浮点数类型
5.3.5 序列类型
5.3.6 货币类型
5.3.7 数学函数和操作符
5.4 字符串类型
5.4.1 字符串类型介绍
5.4.2 字符串函数和操作符
5.5 二进制数据类型
5.5.1 二进制数据类型介绍
5.5.2 二进制数据类型转义表示
5.5.3 二进制数据类型的函数
5.6 位串类型
5.6.1 位串类型介绍
5.6.2 位串类型的使用方法
5.6.3 位串的操作符及函数
5.7 日期/时间类型
5.7.1 日期/时间类型介绍
5.7.2 日期输入
5.7.3 时间输入
5.7.4 特殊值
5.7.5 函数和操作符列表
5.7.6 时间函数
5.7.7 extract和date_part函数
5.8 枚举类型
5.8.1 枚举类型的使用
5.8.2 枚举类型说明
5.8.3 枚举类型的函数
5.9 几何类型
5.9.1 几何类型概况
5.9.2 几何类型的输入
5.9.3 几何类型的操作符
5.9.4 几何类型的函数
5.10 网络地址类型
5.10.1 网络地址类型概况
5.10.2 inet与cidr类型
5.10.3 macaddr类型
5.10.4 网络地址类型的操作符
5.10.5 网络地址类型的函数
5.11 复合类型
5.11.1 复合类型的定义
5.11.2 复合类型的输入
5.11.3 访问复合类型
5.11.4 修改复合类型
5.11.5 复合类型的输入输出
5.12 xml类型
5.12.1 xml类型的输入
5.12.2 字符集的问题
5.12.3 xml类型函数
5.13 JSON类型
5.13.1 JSON类型简介
5.13.2 JSON类型的输入与输出
5.13.3 JSON类型的操作符
5.13.4 JSON类型的函数
5.13.5 JSON类型的索引
5.14 Range类型
5.14.1 Range类型简介
5.14.2 创建Range类型
5.14.3 Range类型的输入与输出
5.14.4 Range类型的操作符
5.14.5 Range类型的函数
5.14.6 Range类型的索引和约束
5.15 数组类型
5.15.1 数组类型的声明
5.15.2 如何输入数组值
5.15.3 访问数组
5.15.4 修改数组
5.15.5 数组的操作符
5.15.6 数组的函数
5.16 伪类型
5.17 其他类型
5.17.1 UUID类型
5.17.2 pg_lsn类型
5.18 小结
第6章 逻辑结构管理
6.1 数据库逻辑结构介绍
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 公共模式
6.3.4 模式的搜索路径
6.3.5 模式的权限
6.3.6 模式的可移植性
6.4 表
6.4.1 创建表
6.4.2 表的存储属性
6.4.3 临时表
6.4.4 UNLOGGED表
6.4.5 默认值
6.4.6 约束
6.4.7 修改表
6.4.8 表继承
6.4.9 通过表继承实现分区表
6.4.10 声明式分区
6.5 触发器
6.5.1 创建触发器
6.5.2 语句级触发器与行级触发器
6.5.3 BEFORE触发器与AFTER触发器
6.5.4 删除触发器
6.5.5 触发器的行为
6.5.6 触发器函数中的特殊变量
6.6 事件触发器
6.6.1 创建事件触发器
6.6.2 修改事件触发器
6.7 表空间
6.7.1 什么是表空间
6.7.2 表空间的使用方法
6.8 视图
6.8.1 什么是视图
6.8.2 创建视图
6.8.3 可更新视图
6.9 索引
6.9.1 索引简介
6.9.2 索引的分类
6.9.3 创建索引
6.9.4 并发创建索引
6.9.5 修改索引
6.9.6 删除索引
6.10 用户及权限管理
6.10.1 用户和角色
6.10.2 创建用户和角色
6.10.3 权限的管理
6.10.4 函数和触发器的权限
6.10.5 权限的总结
6.10.6 权限的示例
6.11 事务、并发和锁
6.11.1 什么是ACID
6.11.2 DDL事务
6.11.3 事务的使用方法
6.11.4 SAVEPOINT
6.11.5 事务隔离级别
6.11.6 两阶段提交
6.11.7 锁机制
6.11.8 死锁及防范
6.11.9 表级锁命令LOCK TABLE
6.11.10 行级锁命令
6.11.11 锁的查看
6.12 小结
第7章 PostgreSQL的核心架构
7.1 进程及内存结构
7.1.1 进程和内存架构图
7.1.2 主进程Postmaster介绍
7.1.3 Logger系统日志进程介绍
7.1.4 BgWriter后台写进程介绍
7.1.5 WalWriter预写式日志写进程介绍
7.1.6 PgArch归档进程
7.1.7 AutoVacuum自动清理进程
7.1.8 PgStat统计数据收集进程
7.1.9 共享内存
7.1.10 本地内存
7.2 存储结构
7.2.1 逻辑存储结构
7.2.2 软件目录结构
7.2.3 物理存储结构
7.2.4 表空间的目录
7.3 应用程序访问接口
7.3.1 访问接口总体图
7.3.2 不同编程语言的PostgreSQL驱动介绍
7.4 小结
第8章 服务管理
8.1 服务的启停及原理
8.1.1 服务的启停方法
8.1.2 pg_ctl工具
8.1.3 信号
8.1.4 postgres及单用户模式
8.2 服务配置介绍
8.2.1 配置参数
8.2.2 连接配置项
8.2.3 内存配置项
8.2.4 预写式日志的配置项
8.2.5 错误报告和日志项
8.3 访问控制配置文件
8.3.1 pg_hba.conf文件
8.3.2 认证方法介绍
8.3.3 认证方法实战
8.4 备份和还原
8.4.1 逻辑备份
8.4.2 pg_dump命令
8.4.3 pg_restore命令
8.4.4 pg_dump和pg_restore应用示例
8.4.5 物理备份
8.4.6 使用LVM快照进行热备份
8.5 常用的管理命令
8.5.1 查看系统信息的常用命令
8.5.2 系统维护常用命令
8.6 小结
第三篇 提高篇
第9章 PostgreSQL执行计划
9.1 执行计划的解释
9.1.1 EXPLAIN命令
9.1.2 EXPLAIN输出结果解释
9.1.3 EXPLAIN使用示例
9.1.4 全表扫描
9.1.5 索引扫描
9.1.6 位图扫描
9.1.7 条件过滤
9.1.8 嵌套循环连接
9.1.9 散列连接
9.1.10 合并连接
9.2 与执行计划相关的配置项
9.2.1 ENABLE_*参数
9.2.2 COST基准值参数
9.2.3 基因查询优化的参数
9.2.4 其他执行计划配置项
9.3 统计信息的收集
9.3.1 统计信息收集器的配置项
9.3.2 SQL执行的统计信息输出
9.3.3 手动收集统计信息
9.4 小结
第10章 PostgreSQL中的技术内幕
10.1 表中的系统字段
10.1.1 oid
10.1.2 ctid
10.1.3 xmin、xmax、cmin、cmax
10.2 多版本并发控制
10.2.1 多版本并发控制的原理
10.2.2 PostgreSQL中的多版本并发控制
10.2.3 PostgreSQL多版本的优劣分析
10.3 物理存储结构
10.3.1 PostgreSQL中的术语
10.3.2 数据块结构
10.3.3 Tuple结构
10.3.4 数据块空闲空间管理
10.3.5 可见性映射表文件
10.4 控制文件解密
10.4.1 控制文件介绍
10.4.2 数据库的唯一标识串解密
10.4.3 Checkpoint信息解密
10.4.4 与Standby相关的信息
10.5 WAL文件解密
10.5.1 WAL文件介绍
10.5.2 WAL文件名的秘密
10.5.3 WAL文件循环复用原理
10.6 CommitLog文件与事务ID技术解密
10.6.1 CommitLog文件介绍
10.6.2 事务ID技术
10.7 实例恢复与热备份原理解密
10.7.1 实例恢复的原理
10.7.2 热备份的原理
10.8 一些技术解密
10.8.1 Index-Only Scans
10.8.2 Heap-Only Tuples
10.9 小结
第11章 PostgreSQL的特色功能
11.1 规则系统
11.1.1 SELECT规则
11.1.2 更新规则
11.1.3 规则和权限
11.1.4 规则和命令状态
11.1.5 规则与触发器的比较
11.2 模式匹配和正则表达式
11.2.1 PostgreSQL中的模式匹配和正则表达式
11.2.2 传统SQL的LIKE操作符
11.2.3 SIMILAR TO正则表达式
11.2.4 POSIX正则表达式
11.2.5 模式匹配函数substring
11.3 LISTEN与NOTIFY命令
11.3.1 LISTEN与NOTIFY的简单示例
11.3.2 LISTEN与NOTIFY的相关命令
11.3.3 LISTEN与NOTIFY的使用详解
11.4 索引的特色
11.4.1 表达式上的索引
11.4.2 部分索引
11.4.3 GiST索引
11.4.4 SP-GiST索引
11.4.5 GIN索引
11.4.6 BRIN索引
11.5 序列的使用
11.5.1 序列的创建
11.5.2 序列的使用及相关函数
11.5.3 常见问题及解答
11.6 咨询锁的使用
11.6.1 什么是咨询锁
11.6.2 咨询锁的函数及使用
11.6.3 常见问题及解答
11.7 SQL/MED
11.7.1 SQL/MED的介绍
11.7.2 外部数据包装器对象
11.7.3 外部服务器对象
11.7.4 用户映射对象
11.7.5 外部表对象
11.7.6 file_fdw使用实例
11.7.7 postgres_fdw使用实例
11.7.8 oracle_fdw使用实例
11.7.9 odbc_fdw使用实例
11.8 全文检索
11.8.1 全文检索介绍
11.8.2 全文检索入门
11.8.3 使用zhparser做中文全文检索
11.9 数组的特色功能
11.9.1 数组的应用场景介绍
11.9.2 数组的使用技巧
11.10 并行查询功能
11.10.1 并行查询相关的配置参数
11.10.2 支持的并行操作介绍
11.11 小结
第12章 数据库优化
12.1 数据库优化准则和方法
12.1.1 数据库优化准则
12.1.2 优化方法
12.2 硬件知识
12.2.1 CPU及服务器体系结构
12.2.2 内存
12.2.3 硬盘
12.3 文件系统及I/O调优
12.3.1 文件系统的崩溃恢复
12.3.2 Ext2文件系统
12.3.3 Ext3文件系统
12.3.4 Ext4文件系统
12.3.5 XFS文件系统
12.3.6 Barriers I/O
12.3.7 I/O调优的方法
12.3.8 SSD的Trim优化
12.4 性能监控
12.4.1 数据库性能视图
12.4.2 Linux监控工具
12.5 数据库配置优化
12.5.1 内存配置优化
12.5.2 大页内存的配置
12.5.3 VACUUM中的优化
12.5.4 预写式日志写优化
12.5.5 配置的最佳实践
12.6 数据库的逻辑结构优化
12.6.1 表的优化
12.6.2 索引的优化
12.7 SQL的优化
12.7.1 找出慢的SQL
12.7.2 SQL语句的优化技巧
12.8 小结
第13章 Standby数据库的搭建
13.1 Standby数据库原理
13.1.1 PITR原理
13.1.2 WAL日志归档
13.1.3 流复制
13.1.4 Standby数据库的运行原理
13.1.5 建Standby数据库的步骤
13.2 pg_basebackup命令行工具
13.2.1 pg_basebackup介绍
13.2.2 pg_basebackup的命令行参数
13.2.3 pg_basebackup使用示例
13.3 异步流复制Hot Standby的示例
13.3.1 配置环境
13.3.2 主数据库的配置
13.3.3 在Standby上生成基础备份
13.3.4 启动Standby数据库
13.3.5 交换主备库的角色
13.3.6 故障切换
13.4 同步流复制的Standby数据库
13.4.1 同步流复制的架构
13.4.2 同步复制的配置
13.4.3 配置实例
13.5 检查备库及流复制情况
13.5.1 检查异步流复制的情况
13.5.2 检查同步流复制的情况
13.5.3 pg_stat_replication视图详解
13.5.4 查看备库的状态
13.6 Hot Standby的限制
13.6.1 Hot Standby的查询限制
13.6.2 Hot Standby的查询冲突处理
13.7 恢复配置详解
13.7.1 归档恢复配置项
13.7.2 Recovery Target配置
13.7.3 Standby Server配置
13.8 流复制的注意事项
13.8.1 min_wal_size参数的配置
13.8.2 vacuum_defer_cleanup_age参数的配置
13.9 逻辑复制
13.9.1 逻辑复制的介绍
13.9.2 逻辑复制的发布
13.9.3 逻辑复制的订阅
13.9.4 逻辑复制的冲突处理
13.9.5 逻辑复制的限制
13.9.6 逻辑复制的监控与安全
13.9.7 逻辑复制的相关配置参数
13.9.8 逻辑复制的搭建实践
13.10 小结
第四篇 架构篇
第14章 PgBouncer
14.1 PgBouncer介绍
14.2 PgBouncer的相关概念
14.3 PgBouncer的安装方法
14.4 PgBouncer的简单使用
14.4.1 简单配置方法
14.4.2 启动PgBouncer
14.4.3 停止PgBouncer
14.4.4 查看连接池信息
14.5 PgBouncer的配置文件详解
14.5.1 “[databases]”配置
14.5.2 “[pgbouncer]”配置
14.5.3 用户密码文件
14.6 小结
第15章 Slony-I的使用
15.1 Slony-I中的主要概念
15.1.1 集群
15.1.2 节点
15.1.3 复制集合
15.1.4 数据原始生产者、数据提供者和数据订阅者
15.1.5 Slon守护程序
15.1.6 Slonik配置程序
15.2 Slony-I复制的一些限制
15.3 在Linux下安装和配置Slony-I
15.3.1 二进制方式安装Slony-I
15.3.2 源码编译安装Slony-I
15.3.3 配置Slony-I的基本复制
15.3.4 添加和移除表的复制
15.3.5 主备切换
15.4 小结
第16章 Bucardo的使用
16.1 Bucardo的相关概念
16.1.1 Bucardo介绍
16.1.2 Bucardo FAQ
16.1.3 Bucardo同步中定义的概念
16.2 Bucardo的安装方法
16.2.1 Bucardo的安装步骤
16.2.2 安装Test-Simple、ExtUtils-MakeMaker、version
16.2.3 安装DBI及DBD::Pg
16.2.4 安装DBIx-Safe
16.2.5 安装Bucardo源码包
16.2.6 使用yum安装Bucardo
16.3 Bucardo同步配置
16.3.1 示例环境
16.3.2 Bucardo的工作原理
16.3.3 bucardo install
16.3.4 配置同步
16.3.5 Bucardo常用命令
16.4 Bucardo的日常维护
16.4.1 Bucardo的触发器日志清理
16.4.2 临时停止和启动同步的方法
16.4.3 新增表到同步的方法
16.4.4 移除某个表或序列的方法
16.5 小结
第17章 PL/Proxy的使用
17.1 PL/Proxy的相关概念
17.1.1 什么是PL/Proxy
17.1.2 PL/Proxy的特性说明
17.2 PL/Proxy的安装及配置
17.2.1 编译安装
17.2.2 安装规划
17.2.3 配置过程
17.3 PL/Proxy的集群配置详解
17.3.1 Cluster configuration API方式
17.3.2 SQL/MED方式配置集群
17.4 PL/Proxy语言详解
17.4.1 CONNECT
17.4.2 CLUSTER
17.4.3 RUN ON
17.4.4 SPLIT
17.4.5 TARGET
17.5 PL/Proxy的高可用方案
17.5.1 方案介绍
17.5.2 方案架构
17.5.3 具体实施步骤
17.6 小结
第18章 pgpool-II的使用
18.1 pgpool-II的相关概念
18.1.1 什么是pgpool-II
18.1.2 pgpool-II的发展简介
18.1.3 pgpool-II的架构
18.1.4 pgpool-II的工作模式
18.1.5 pgpool-II的程序模块
18.2 pgpool-II的安装方法
18.2.1 安装软件
18.2.2 安装pgpool_regclass
18.2.3 建立insert_lock表
18.2.4 安装pgpool_recovery
18.3 pgpool-II配置快速入门
18.3.1 pgpool-II的配置过程
18.3.2 内置复制模式的示例
18.3.3 流复制的主备模式示例
18.3.4 show命令
18.4 pgpool-II高可用配置方法
18.4.1 pgpool-II高可用切换及恢复的原理
18.4.2 pgpool-II的在线恢复
18.4.3 流复制模式中的故障切换
18.4.4 pgpool-II的健康检查
18.4.5 流复制的主备模式的高可用示例
18.4.6 watchdog的配置
18.5 小结
第19章 Postgres-XC的使用
19.1 Postgres-XC的相关概念
19.1.1 什么是Postgres-XC
19.1.2 Postgres-XC的特点
19.1.3 Postgres-XC的性能
19.1.4 Postgres-XC的组件
19.2 Postgres-XC的安装
19.2.1 源码安装方法
19.2.2 Postgres-XC目录及程序说明
19.3 配置Postgres-XC集群
19.3.1 集群规划
19.3.2 初始化GTM
19.3.3 初始化GTM备库
19.3.4 初始化GTM Proxy
19.3.5 初始化Coordinators、数据节点
19.3.6 启动集群
19.3.7 停止集群
19.3.8 配置集群节点信息
19.4 Postgres-XC的使用
19.4.1 建表详解
19.4.2 使用限制
19.4.3 重新分布数据
19.4.4 增加Coordinator节点的方法
19.4.5 移除Coordinator节点的方法
19.4.6 增加Datanode节点的方法
19.4.7 移除Datanode节点的方法
19.5 小结
第20章 高可用性方案设计
20.1 高可用架构基础
20.1.1 各种高可用架构介绍
20.1.2 服务的可靠性设计
20.1.3 数据可靠性设计
20.2 基于共享存储的高可用方案
20.2.1 SAN存储方案
20.2.2 DRBD方案
20.3 WAL日志同步或流复制同步方案
20.3.1 持续复制归档的Standby方法
20.3.2 异步流复制方案
20.3.3 同步流复制方案
20.4 基于触发器的同步方案
20.4.1 基于触发器的同步方案特点
20.4.2 基于此方案的同步软件介绍
20.5 基于中间件的高可用方案
20.5.1 基于中间件的高可用方案的特点
20.5.2 基本中间件的开源软件介绍
20.6 小结
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜