书籍详情
PostgreSQL修炼之道:从小工到专家(第2版)
作者:唐成 著
出版社:机械工业出版社
出版时间:2020-09-01
ISBN:9787111665038
定价:¥129.00
购买这本书可以去
内容简介
本书分为四大部分,分别为准备篇、基础篇、提高篇和配套开源软件及架构篇。准备篇为没有数据库基础的读者准备的,如果读者已经具备了一定的数据库基础,可以跳过其中的一些内容。基础篇介绍了PostgreSQL数据库中的一些基础内容,读者学习完此篇可以完成基本的PostgreSQL数据库的日常操作工作。提高篇讲解了一些更深的内容,如PostgreSQL的一些技术内幕、特色功能、优化等方面的内容,读者仔细阅读此篇以便早日成为PostgreSQL数据库高手。第三方开源软件及架构篇讲解了与PostgreSQL数据库配套使用的一些常用的开源软件及架构设计方面的内容,通过阅读此篇,可以提高读者的眼界和数据库架构设计能力。
作者简介
英文书名:Guide To Expert, The Pragmatic PostgreSQL
目录
前言
第一篇 准备篇
第1章 PostgreSQL简介 2
1.1 什么是PostgreSQL 2
1.1.1 PostgreSQL的发展历史 2
1.1.2 PostgreSQL数据库的优势 4
1.1.3 PostgreSQL应用现状和发展趋势 5
1.2 PostgreSQL数据库与其他数据库的对比 6
1.2.1 PostgreSQL与MySQL数据库的对比 6
1.2.2 PostgreSQL与Oracle数据库的对比 8
1.3 小结 8
第2章 PostgreSQL的安装与配置 9
2.1 从发行版本安装 9
2.1.1 Red Hat/CentOS下的安装方法 10
2.1.2 Windows下的安装方法 12
2.1.3 从发行版本安装总结 18
2.2 从源码安装 18
2.2.1 编译安装过程简介 18
2.2.2 下载源代码 18
2.2.3 编译及安装 20
2.2.4 PostgreSQL的配置 22
2.2.5 创建数据库实例 23
2.2.6 安装contrib目录下的工具 23
2.2.7 启动和停止数据库 23
2.2.8 编译安装过程中的常见问题及解决方法 24
2.3 PostgreSQL的简单配置 25
2.3.1 pg_hba.conf的配置 26
2.3.2 修改监听的IP和端口 26
2.3.3 数据库日志相关参数 26
2.3.4 内存参数的设置 27
2.4 PostgreSQL的安装技巧 27
2.4.1 不想把数据库实例创建到“/var/lib/pgsql”目录下 27
2.4.2 如何使用较大的数据块提高I/O性能 29
2.4.3 打开数据块的checksum功能 29
2.5 小结 30
第3章 SQL入门 31
3.1 SQL语句语法简介 31
3.1.1 语句的分类 31
3.1.2 词法结构 31
3.2 DDL语句 32
3.2.1 建表语句 32
3.2.2 删除表语句 34
3.3 DML语句 34
3.3.1 插入语句 34
3.3.2 更新语句 35
3.3.3 删除语句 35
3.4 查询语句 36
3.4.1 单表查询语句 36
3.4.2 过滤条件的查询 36
3.4.3 排序 37
3.4.4 分组查询 38
3.4.5 多表关联查询 38
3.4.6 子查询 40
3.5 其他SQL语句 42
3.5.1 INSERT ... SELECT语句 42
3.5.2 UNION语句 42
3.5.3 TRUNCATE TABLE语句 43
3.6 小结 43
第二篇 基础篇
第4章 psql工具 46
4.1 psql介绍 46
4.2 psql的简单使用 46
4.3 psql的常用命令 48
4.3.1 “\\h”命令 49
4.3.2 “\\d”命令 49
4.3.3 指定客户端字符集的命令 52
4.3.4 格式化输出的\\pset命令 52
4.3.5 “\\x”命令 55
4.3.6 执行存储在外部文件中的SQL命令 56
4.3.7 编辑命令 56
4.3.8 输出信息的“\\echo”命令 57
4.3.9 其他命令 58
4.4 psql的使用技巧 59
4.4.1 历史命令与补全功能 59
4.4.2 自动提交技巧 59
4.4.3 如何得到psql中快捷命令执行的实际SQL 60
4.5 小结 62
第5章 数据类型 63
5.1 数据类型介绍 63
5.1.1 数据类型的分类 63
5.1.2 数据类型的输入与转换 65
5.2 布尔类型 65
5.2.1 布尔类型介绍 65
5.2.2 布尔类型的操作符 67
5.3 数值类型 68
5.3.1 数值类型介绍 68
5.3.2 整数类型 68
5.3.3 精确的小数类型 69
5.3.4 浮点数类型 70
5.3.5 序列类型 70
5.3.6 货币类型 70
5.3.7 数学函数和操作符 71
5.4 字符串类型 73
5.4.1 字符串类型介绍 73
5.4.2 字符串函数和操作符 73
5.5 二进制数据类型 76
5.5.1 二进制数据类型介绍 76
5.5.2 二进制数据类型转义表示 76
5.5.3 二进制数据类型的函数 77
5.6 位串类型 78
5.6.1 位串类型介绍 78
5.6.2 位串类型的使用方法 78
5.6.3 位串的操作符及函数 79
5.7 日期/时间类型 80
5.7.1 日期/时间类型介绍 80
5.7.2 日期输入 81
5.7.3 时间输入 82
5.7.4 特殊值 84
5.7.5 函数和操作符列表 84
5.7.6 时间函数 85
5.7.7 extract和date_part函数 89
5.8 枚举类型 90
5.8.1 枚举类型的使用 90
5.8.2 枚举类型说明 91
5.8.3 枚举类型的函数 92
5.9 几何类型 92
5.9.1 几何类型概况 93
5.9.2 几何类型的输入 93
5.9.3 几何类型的操作符 98
5.9.4 几何类型的函数 106
5.10 网络地址类型 107
5.10.1 网络地址类型概况 107
5.10.2 inet与cidr类型 107
5.10.3 macaddr类型 110
5.10.4 网络地址类型的操作符 110
5.10.5 网络地址类型的函数 111
5.11 复合类型 112
5.11.1 复合类型的定义 112
5.11.2 复合类型的输入 113
5.11.3 访问复合类型 114
5.11.4 修改复合类型 114
5.11.5 复合类型的输入输出 115
5.12 xml类型 116
5.12.1 xml类型的输入 116
5.12.2 字符集的问题 117
5.12.3 xml类型函数 118
5.13 JSON类型 124
5.13.1 JSON类型简介 124
5.13.2 JSON类型的输入与输出 125
5.13.3 JSON类型的操作符 126
5.13.4 JSON类型的函数 127
5.13.5 JSON类型的索引 132
5.14 Range类型 136
5.14.1 Range类型简介 136
5.14.2 创建Range类型 138
5.14.3 Range类型的输入与输出 138
5.14.4 Range类型的操作符 141
5.14.5 Range类型的函数 142
5.14.6 Range类型的索引和约束 142
5.15 数组类型 143
5.15.1 数组类型的声明 143
5.15.2 如何输入数组值 144
5.15.3 访问数组 146
5.15.4 修改数组 148
5.15.5 数组的操作符 149
5.15.6 数组的函数 151
5.16 伪类型 153
5.17 其他类型 154
5.17.1 UUID类型 154
5.17.2 pg_lsn 类型 154
5.18 小结 155
第6章 逻辑结构管理 156
6.1 数据库逻辑结构介绍 156
6.2 数据库基本操作 156
6.2.1 创建数据库 156
6.2.2 修改数据库 157
6.2.3 删除数据库 158
6.2.4 常见问题及解答 158
6.3 模式 159
6.3.1 什么是模式 159
6.3.2 模式的使用 159
6.3.3 公共模式 161
6.3.4 模式的搜索路径 161
6.3.5 模式的权限 162
6.3.6 模式的可移植性 162
6.4 表 163
6.4.1 创建表 163
6.4.2 表的存储属性 165
6.4.3 临时表 167
6.4.4 UNLOGGED表 170
6.4.5 默认值 170
6.4.6 约束 171
6.4.7 修改表 175
6.4.8 表继承 179
6.4.9 通过表继承实现分区表 181
6.4.10 声明式分区 186
6.5 触发器 188
6.5.1 创建触发器 189
6.5.2 语句级触发器与行级触发器 190
6.5.3 BEFORE触发器与AFTER触发器 193
6.5.4 删除触发器 194
6.5.5 触发器的行为 194
6.5.6 触发器函数中的特殊变量 195
6.6 事件触发器 196
6.6.1 创建事件触发器 198
6.6.2 修改事件触发器 201
6.7 表空间 201
6.7.1 什么是表空间 201
6.7.2 表空间的使用方法 201
6.8 视图 202
6.8.1 什么是视图 202
6.8.2 创建视图 203
6.8.3 可更新视图 204
6.9 索引 207
6.9.1 索引简介 207
6.9.2 索引的分类 207
6.9.3 创建索引 208
6.9.4 并发创建索引 209
6.9.5 修改索引 211
6.9.6 删除索引 212
6.10 用户及权限管理 213
6.10.1 用户和角色 213
6.10.2 创建用户和角色 213
6.10.3 权限的管理 214
6.10.4 函数和触发器的权限 219
6.10.5 权限的总结 220
6.10.6 权限的示例 220
6.11 事务、并发和锁 220
6.11.1 什么是ACID 221
6.11.2 DDL事务 221
6.11.3 事务的使用方法 221
6.11.4 SAVEPOINT 222
6.11.5 事务隔离级别 224
6.11.6 两阶段提交 225
6.11.7 锁机制 226
6.11.8 死锁及防范 230
6.11.9 表级锁命令LOCK TABLE 230
6.11.10 行级锁命令 231
6.11.11 锁的查看 231
6.12 小结 238
第7章 PostgreSQL的核心架构 239
7.1 进程及内存结构 239
7.1.1 进程和内存架构图 239
7.1.2 主进程Postmaster介绍 240
7.1.3 Logger系统日志进程介绍 241
7.1.4 BgWriter后台写进程介绍 241
7.1.5 WalWriter预写式日志写进程介绍 241
7.1.6 PgArch归档进程 242
7.1.7 AutoVacuum自动清理进程 242
7.1.8 PgStat统计数据收集进程 242
7.1.9 共享内存 242
7.1.10 本地内存 243
7.2 存储结构 243
7.2.1 逻辑存储结构 243
7.2.2 软件目录结构 244
7.2.3 物理存储结构 244
7.2.4 表空间的目录 246
7.3 应用程序访问接口 247
7.3.1 访问接口总体图 247
7.3.2 不同编程语言的PostgreSQL驱动介绍 248
7.4 小结 249
第8章 服务管理 250
8.1 服务的启停及原理 250
8.1.1 服务的启停方法 250
8.1.2 pg_ctl工具 251
8.1.3 信号 255
8.1.4 postgres及单用户模式 255
8.2 服务配置介绍 256
8.2.1 配置参数 256
8.2.2 连接配置项 259
8.2.3 内存配置项 261
8.2.4 预写式日志的配置项 262
8.2.5 错误报告和日志项 264
8.3 访问控制配置文件 268
8.3.1 pg_hba.conf 文件 268
8.3.2 认证方法介绍 269
8.3.3 认证方法实战 270
8.4 备份和还原 271
8.4.1 逻辑备份 271
8.4.2 pg_dump命令 272
8.4.3 pg_restore命令 275
8.4.4 pg_dump和pg_restore应用示例 278
8.4.5 物理备份 279
8.4.6 使用LVM快照进行热备份 279
8.5 常用的管理命令 282
8.5.1 查看系统信息的常用命令 282
8.5.2 系统维护常用命令 288
8.6 小结 289
第三篇 提高篇
第9章 PostgreSQL执行计划 292
9.1 执行计划的解释 292
9.1.1 EXPLAIN命令 292
9.1.2 EXPLAIN输出结果解释 293
9.1.3 EXPLAIN使用示例 294
9.1.4 全表扫描 297
9.1.5 索引扫描 297
9.1.6 位图扫描 297
9.1.7 条件过滤 298
9.1.8 嵌套循环连接 299
9.1.9 散列连接 299
9.1.10 合并连接 300
9.2 与执行计划相关的配置项 301
9.2.1 ENABLE_*参数 301
9.2.2 COST基准值参数 301
9.2.3 基因查询优化的参数 302
9.2.4 其他执行计划配置项 303
9.3 统计信息的收集 304
9.3.1 统计信息收集器的配置项 304
9.3.2 SQL执行的统计信息输出 304
9.3.3 手动收集统计信息 305
9.4 小结 306
第10章 PostgreSQL中的技术内幕 307
10.1 表中的系统字段 307
10.1.1 oid 308
10.1.2 ctid 310
10.1.3 xmin、xmax、cmin、cmax 311
10.2 多版本并发控制 312
10.2.1 多版本并发控制的原理 312
10.2.2 Postg
第一篇 准备篇
第1章 PostgreSQL简介 2
1.1 什么是PostgreSQL 2
1.1.1 PostgreSQL的发展历史 2
1.1.2 PostgreSQL数据库的优势 4
1.1.3 PostgreSQL应用现状和发展趋势 5
1.2 PostgreSQL数据库与其他数据库的对比 6
1.2.1 PostgreSQL与MySQL数据库的对比 6
1.2.2 PostgreSQL与Oracle数据库的对比 8
1.3 小结 8
第2章 PostgreSQL的安装与配置 9
2.1 从发行版本安装 9
2.1.1 Red Hat/CentOS下的安装方法 10
2.1.2 Windows下的安装方法 12
2.1.3 从发行版本安装总结 18
2.2 从源码安装 18
2.2.1 编译安装过程简介 18
2.2.2 下载源代码 18
2.2.3 编译及安装 20
2.2.4 PostgreSQL的配置 22
2.2.5 创建数据库实例 23
2.2.6 安装contrib目录下的工具 23
2.2.7 启动和停止数据库 23
2.2.8 编译安装过程中的常见问题及解决方法 24
2.3 PostgreSQL的简单配置 25
2.3.1 pg_hba.conf的配置 26
2.3.2 修改监听的IP和端口 26
2.3.3 数据库日志相关参数 26
2.3.4 内存参数的设置 27
2.4 PostgreSQL的安装技巧 27
2.4.1 不想把数据库实例创建到“/var/lib/pgsql”目录下 27
2.4.2 如何使用较大的数据块提高I/O性能 29
2.4.3 打开数据块的checksum功能 29
2.5 小结 30
第3章 SQL入门 31
3.1 SQL语句语法简介 31
3.1.1 语句的分类 31
3.1.2 词法结构 31
3.2 DDL语句 32
3.2.1 建表语句 32
3.2.2 删除表语句 34
3.3 DML语句 34
3.3.1 插入语句 34
3.3.2 更新语句 35
3.3.3 删除语句 35
3.4 查询语句 36
3.4.1 单表查询语句 36
3.4.2 过滤条件的查询 36
3.4.3 排序 37
3.4.4 分组查询 38
3.4.5 多表关联查询 38
3.4.6 子查询 40
3.5 其他SQL语句 42
3.5.1 INSERT ... SELECT语句 42
3.5.2 UNION语句 42
3.5.3 TRUNCATE TABLE语句 43
3.6 小结 43
第二篇 基础篇
第4章 psql工具 46
4.1 psql介绍 46
4.2 psql的简单使用 46
4.3 psql的常用命令 48
4.3.1 “\\h”命令 49
4.3.2 “\\d”命令 49
4.3.3 指定客户端字符集的命令 52
4.3.4 格式化输出的\\pset命令 52
4.3.5 “\\x”命令 55
4.3.6 执行存储在外部文件中的SQL命令 56
4.3.7 编辑命令 56
4.3.8 输出信息的“\\echo”命令 57
4.3.9 其他命令 58
4.4 psql的使用技巧 59
4.4.1 历史命令与补全功能 59
4.4.2 自动提交技巧 59
4.4.3 如何得到psql中快捷命令执行的实际SQL 60
4.5 小结 62
第5章 数据类型 63
5.1 数据类型介绍 63
5.1.1 数据类型的分类 63
5.1.2 数据类型的输入与转换 65
5.2 布尔类型 65
5.2.1 布尔类型介绍 65
5.2.2 布尔类型的操作符 67
5.3 数值类型 68
5.3.1 数值类型介绍 68
5.3.2 整数类型 68
5.3.3 精确的小数类型 69
5.3.4 浮点数类型 70
5.3.5 序列类型 70
5.3.6 货币类型 70
5.3.7 数学函数和操作符 71
5.4 字符串类型 73
5.4.1 字符串类型介绍 73
5.4.2 字符串函数和操作符 73
5.5 二进制数据类型 76
5.5.1 二进制数据类型介绍 76
5.5.2 二进制数据类型转义表示 76
5.5.3 二进制数据类型的函数 77
5.6 位串类型 78
5.6.1 位串类型介绍 78
5.6.2 位串类型的使用方法 78
5.6.3 位串的操作符及函数 79
5.7 日期/时间类型 80
5.7.1 日期/时间类型介绍 80
5.7.2 日期输入 81
5.7.3 时间输入 82
5.7.4 特殊值 84
5.7.5 函数和操作符列表 84
5.7.6 时间函数 85
5.7.7 extract和date_part函数 89
5.8 枚举类型 90
5.8.1 枚举类型的使用 90
5.8.2 枚举类型说明 91
5.8.3 枚举类型的函数 92
5.9 几何类型 92
5.9.1 几何类型概况 93
5.9.2 几何类型的输入 93
5.9.3 几何类型的操作符 98
5.9.4 几何类型的函数 106
5.10 网络地址类型 107
5.10.1 网络地址类型概况 107
5.10.2 inet与cidr类型 107
5.10.3 macaddr类型 110
5.10.4 网络地址类型的操作符 110
5.10.5 网络地址类型的函数 111
5.11 复合类型 112
5.11.1 复合类型的定义 112
5.11.2 复合类型的输入 113
5.11.3 访问复合类型 114
5.11.4 修改复合类型 114
5.11.5 复合类型的输入输出 115
5.12 xml类型 116
5.12.1 xml类型的输入 116
5.12.2 字符集的问题 117
5.12.3 xml类型函数 118
5.13 JSON类型 124
5.13.1 JSON类型简介 124
5.13.2 JSON类型的输入与输出 125
5.13.3 JSON类型的操作符 126
5.13.4 JSON类型的函数 127
5.13.5 JSON类型的索引 132
5.14 Range类型 136
5.14.1 Range类型简介 136
5.14.2 创建Range类型 138
5.14.3 Range类型的输入与输出 138
5.14.4 Range类型的操作符 141
5.14.5 Range类型的函数 142
5.14.6 Range类型的索引和约束 142
5.15 数组类型 143
5.15.1 数组类型的声明 143
5.15.2 如何输入数组值 144
5.15.3 访问数组 146
5.15.4 修改数组 148
5.15.5 数组的操作符 149
5.15.6 数组的函数 151
5.16 伪类型 153
5.17 其他类型 154
5.17.1 UUID类型 154
5.17.2 pg_lsn 类型 154
5.18 小结 155
第6章 逻辑结构管理 156
6.1 数据库逻辑结构介绍 156
6.2 数据库基本操作 156
6.2.1 创建数据库 156
6.2.2 修改数据库 157
6.2.3 删除数据库 158
6.2.4 常见问题及解答 158
6.3 模式 159
6.3.1 什么是模式 159
6.3.2 模式的使用 159
6.3.3 公共模式 161
6.3.4 模式的搜索路径 161
6.3.5 模式的权限 162
6.3.6 模式的可移植性 162
6.4 表 163
6.4.1 创建表 163
6.4.2 表的存储属性 165
6.4.3 临时表 167
6.4.4 UNLOGGED表 170
6.4.5 默认值 170
6.4.6 约束 171
6.4.7 修改表 175
6.4.8 表继承 179
6.4.9 通过表继承实现分区表 181
6.4.10 声明式分区 186
6.5 触发器 188
6.5.1 创建触发器 189
6.5.2 语句级触发器与行级触发器 190
6.5.3 BEFORE触发器与AFTER触发器 193
6.5.4 删除触发器 194
6.5.5 触发器的行为 194
6.5.6 触发器函数中的特殊变量 195
6.6 事件触发器 196
6.6.1 创建事件触发器 198
6.6.2 修改事件触发器 201
6.7 表空间 201
6.7.1 什么是表空间 201
6.7.2 表空间的使用方法 201
6.8 视图 202
6.8.1 什么是视图 202
6.8.2 创建视图 203
6.8.3 可更新视图 204
6.9 索引 207
6.9.1 索引简介 207
6.9.2 索引的分类 207
6.9.3 创建索引 208
6.9.4 并发创建索引 209
6.9.5 修改索引 211
6.9.6 删除索引 212
6.10 用户及权限管理 213
6.10.1 用户和角色 213
6.10.2 创建用户和角色 213
6.10.3 权限的管理 214
6.10.4 函数和触发器的权限 219
6.10.5 权限的总结 220
6.10.6 权限的示例 220
6.11 事务、并发和锁 220
6.11.1 什么是ACID 221
6.11.2 DDL事务 221
6.11.3 事务的使用方法 221
6.11.4 SAVEPOINT 222
6.11.5 事务隔离级别 224
6.11.6 两阶段提交 225
6.11.7 锁机制 226
6.11.8 死锁及防范 230
6.11.9 表级锁命令LOCK TABLE 230
6.11.10 行级锁命令 231
6.11.11 锁的查看 231
6.12 小结 238
第7章 PostgreSQL的核心架构 239
7.1 进程及内存结构 239
7.1.1 进程和内存架构图 239
7.1.2 主进程Postmaster介绍 240
7.1.3 Logger系统日志进程介绍 241
7.1.4 BgWriter后台写进程介绍 241
7.1.5 WalWriter预写式日志写进程介绍 241
7.1.6 PgArch归档进程 242
7.1.7 AutoVacuum自动清理进程 242
7.1.8 PgStat统计数据收集进程 242
7.1.9 共享内存 242
7.1.10 本地内存 243
7.2 存储结构 243
7.2.1 逻辑存储结构 243
7.2.2 软件目录结构 244
7.2.3 物理存储结构 244
7.2.4 表空间的目录 246
7.3 应用程序访问接口 247
7.3.1 访问接口总体图 247
7.3.2 不同编程语言的PostgreSQL驱动介绍 248
7.4 小结 249
第8章 服务管理 250
8.1 服务的启停及原理 250
8.1.1 服务的启停方法 250
8.1.2 pg_ctl工具 251
8.1.3 信号 255
8.1.4 postgres及单用户模式 255
8.2 服务配置介绍 256
8.2.1 配置参数 256
8.2.2 连接配置项 259
8.2.3 内存配置项 261
8.2.4 预写式日志的配置项 262
8.2.5 错误报告和日志项 264
8.3 访问控制配置文件 268
8.3.1 pg_hba.conf 文件 268
8.3.2 认证方法介绍 269
8.3.3 认证方法实战 270
8.4 备份和还原 271
8.4.1 逻辑备份 271
8.4.2 pg_dump命令 272
8.4.3 pg_restore命令 275
8.4.4 pg_dump和pg_restore应用示例 278
8.4.5 物理备份 279
8.4.6 使用LVM快照进行热备份 279
8.5 常用的管理命令 282
8.5.1 查看系统信息的常用命令 282
8.5.2 系统维护常用命令 288
8.6 小结 289
第三篇 提高篇
第9章 PostgreSQL执行计划 292
9.1 执行计划的解释 292
9.1.1 EXPLAIN命令 292
9.1.2 EXPLAIN输出结果解释 293
9.1.3 EXPLAIN使用示例 294
9.1.4 全表扫描 297
9.1.5 索引扫描 297
9.1.6 位图扫描 297
9.1.7 条件过滤 298
9.1.8 嵌套循环连接 299
9.1.9 散列连接 299
9.1.10 合并连接 300
9.2 与执行计划相关的配置项 301
9.2.1 ENABLE_*参数 301
9.2.2 COST基准值参数 301
9.2.3 基因查询优化的参数 302
9.2.4 其他执行计划配置项 303
9.3 统计信息的收集 304
9.3.1 统计信息收集器的配置项 304
9.3.2 SQL执行的统计信息输出 304
9.3.3 手动收集统计信息 305
9.4 小结 306
第10章 PostgreSQL中的技术内幕 307
10.1 表中的系统字段 307
10.1.1 oid 308
10.1.2 ctid 310
10.1.3 xmin、xmax、cmin、cmax 311
10.2 多版本并发控制 312
10.2.1 多版本并发控制的原理 312
10.2.2 Postg
猜您喜欢