内容简介
本书将教你如何构建及运行一个可扩展且已经优化的PostgreSQL服务器。全书始于基本概念(例如从源代码中安装PostgreSQL),并逐渐深入理论部分(例如并发性和事务管理)。在此之后,你将学习如何设置副本、使用负载均衡进行水平扩展以及排除故障。继续阅读本书,你将看到配置参数对性能、可扩展性以及事务管理所起到的显著影响。最后,你将接触到PostgreSQL生态系统中那些有用的工具,它们被用来分析PostgreSQL日志、设置负载均衡和进行数据恢复。
作者简介
Jayadevan Maymala,是一位数据库开发工程师、设计师和架构师。他开始于1999年在甲骨文(Oracle)公司的数据库部门工作。多年以来,他研究并使用过 DB2、Sybase和SQL Server等数据库产品。 近,他一直致力于开源技术的研究。他选择的数据库是PostgreSQL。职业生涯中,他在不同的领域工作过,跨越供应链管理、金融和旅游等多个领域。他 一方面致力于支持关键事务处理系统的数据库技术,另一方面致力于支持分析系统的数据仓库技术,在两方面工作上,他差不多花了等量的时间。
不研究这些开源技术时,他会利用业余时间进行大量阅读,并不断更新自己在经济和政治领域的知识。
我要感谢我的妻子——Uma,因为她可以忍受我在周末进行马拉松式的写作。我还要深深感激PostgreSQL社区,社区里面的人总是及时回复我的问题, 不管是基础的还是特殊的问题。这是一个神奇的团队,他们一直不知疲倦地构建这样一个宏大的数据库,然后用这样的自由许可条款开源。谢谢他们!
About the reviewersPascal Charest,是前沿技术专家,他致力于一系列非常广泛的开源技术。在网络基础设施的战略规划领域,他是优秀的系统管理专家,并且经常从事系统架构设计 的咨询工作。可以通过他LinkedIn的个人资料联系他http://www.linkedin.com/in/pascalcharest。
我想谢谢安东尼(Anthony)和扎卡里(Zachary),不管是白天或黑夜,他们都让我保持清醒。
目录
作者简介
审校者简介
前 言
第1章 安装PostgreSQL 1
1.1 安装选项 1
1.1.1 下载并提取源码 2
1.1.2 检查源码内容 3
1.2 编译源码的各种依赖 3
1.3 配置和创建makefile 4
1.4 建立和创建可执行文件 6
1.5 安装和移动文件到指定的位置 7
1.6 初始化集群 9
1.6.1 快速了解各个目录 11
1.6.2 已创建的进程 13
1.6.3 创建的重要文件 14
1.7 与扩展程序相互协作 14
1.8 小结 15
第2章 服务器架构 16
2.1 从守护进程开始 16
2.2 理解共享缓冲区 18
2.3 检查点 23
2.4 WAL与WAL写进程 25
2.4.1 恢复 26
2.4.2 增量备份和基于时间点的恢复 26
2.4.3 复制 27
2.5 后台写入器 28
2.6 自动清空加载器进程 29
2.7 日志进程 32
2.8 统计信息收集器进程 35
2.9 WAL发送器和WAL接收器 38
2.10 使用work_mem在内存中进行排序 38
2.11 使用maintenance_work_mem进行维护 40
2.12 小结 42
第3章 PostgreSQL——对象层次和角色 43
3.1 PostgreSQL集群 43
3.2 了解表空间 44
3.2.1 使用临时表空间管理临时对象 46
3.2.2 视图 48
3.3 数据库、模式与search_path 48
3.4 角色和权限 53
3.5 小结 56
第4章 使用事务进行工作 57
4.1 了解事务 57
4.2 PostgreSQL和MVCC 67
4.3 小结 70
第5章 使用SQL Power Architect进行数据建模 71
5.1 数据库工具及其用途 71
5.2 数据库设计工具 72
5.2.1 下载与安装SQL Power Architect 73
5.2.2 创建表 74
5.3 生成SQL 75
5.3.1 逆向工程及变更操作 77
5.3.2 导出数据模型 78
5.3.3 分析 78
5.4 小结 79
第6章 客户端工具 80
6.1 GUI工具与命令行工具 80
6.2 下载与安装pgAdmin 80
6.2.1 添加一台服务器 81
6.2.2 pgAdmin主窗口 82
6.2.3 查询工具 84
6.3 psql——在命令行模式下工作 86
6.3.1 psql——连接选项 86
6.3.2 d的功能 87
6.3.3 更多元命令 89
6.3.4 设置环境 91
6.3.5 命令的历史记录 92
6.4 小结 92
第7章 SQL调优 93
7.1 了解数据库的基本事实 93
7.1.1 事实1,数据库中读比写更频繁 93
7.1.2 事实2,数据始终在块或页面中读取,而不是作为单独的记录或列 94
7.1.3 减少读/写块的数量的方法 94
7.2 查询执行组件 95
7.2.1 计划器 95
7.2.2 访问方法 95
7.2.3 连接策略 96
7.3 发现执行计划 96
7.4 优化指南和捕捉 98
7.4.1 外键索引 99
7.4.2 使用SELECT* 100
7.4.3 使用ORDER BY 100
7.4.4 使用DISTINCT 101
7.4.5 使用UNION ALL代替UNION 102
7.4.6 在FILTER子句中使用函数 102
7.4.7 减少SQL语句数量 104
7.4.8 减少函数执行 105
7.4.9 不使用索引的情况 107
7.4.10 部分索引 108
7.4.11 优化函数 109
7.5 小结 110
第8章 服务器调优 111
8.1 服务器端内存设置 111
8.1.1 shared_buffers 111
8.1.2 effective_cache_size 112
8.2 管理写入、连接和维护操作 113
8.3 查找/扫描开销及统计参数 114
8.4 物化视图 119
8.5 分区表 121
8.6 小结 125
第9章 PostgreSQL写入与读取数据工具 126
9.1 考虑建立生产数据库 126
9.2 COPY 命令 127
9.3 使用pg_bulkload快速加载 130
9.4 pg_dump 命令 131
9.5 过滤选项 133
9.5.1 pg_dumpall 工具 133
9.5.2 pg_restore 工具 133
9.6 小结 135
第10章 扩展、复制、备份和恢复 136
10.1 可扩展性 136
10.1.1 垂直扩展 137
10.1.2 水平扩展 138
10.2 基于时间点的恢复 154
10.3 小结 157
第11章 PostgreSQL 故障排除 158
11.1 连接问题 158
11.2 验证和权限问题 159
11.3 参数更改无效 161
11.4 查询无响应 162
11.5 小结 165
第12章 PostgreSQL额外功能 166
12.1 有趣的数据类型 166
12.1.1 range 166
12.1.2 XML 174
12.1.3 几何与地理数据 175
12.1.4 外部数据封装器 175
12.1.5 pgbadger 178
12.2 变化中的产品特性 180
12.3 小结 183
前沿
PostgreSQL是一个极其灵活且可靠的开源关系型数据库。借助它的这般神奇功能,可以在不增加任何费用的情况下,将应用程序变得更加可靠和更具扩展性。一旦掌握了如何设置PostgreSQL并利用它的高级功能,便可节省工时,提高工作效率。
本书将教你如何构建及运行一个可扩展且已经优化的PostgreSQL服务器。
全书始于基本概念(例如从源代码中安装PostgreSQL),并逐渐深入理论部分(例如并发性和事务管理)。在此之后,你将学习如何设置副本、使用负载均衡进行水平扩展以及排除故障。
继续阅读本书,你将看到配置参数对性能、可扩展性以及事务管理所产生的显著影响。最后,你将接触到PostgreSQL生态系统中那些有用的工具,它们用来分析PostgreSQL日志、设置负载均衡和恢复数据。
本书主要内容第1章概括性地介绍如何从源代码中安装PostgreSQL。该章内容列举了从源代码中进行编译的先决条件,并说明了如何在UNIX / Linux环境中初始化一个集群。同时,该章也涵盖了本书的目录结构。
第2章描述启动PostgreSQL集群时所涉及的重要进程,同时介绍了这些进程如何与内存结构相互协作,从而实现一个数据库管理系统所应有的功能。
第3章解释各种对象类型以及PostgreSQL所提供的各种对象。同时,该章也阐述了各种重要的概念,例如数据库、集群、表空间和模式。
第4章涵盖事务所涉及的ACID属性、隔离级别以及PostgreSQL是如何提供这些功能的。同时,该章也探讨了多版本并发控制这个话题。
第5章讨论如何使用SQL Power Architect对表以及关系进行建模。同时,该章也介绍了在选择设计工具时需要考虑的一些注意事项。
第6章介绍了两个客户端工具(pgAdmin:一个用户界面工具,psql:一个命令行工具)。该章介绍了如何使用pgAdmin浏览数据库对象、生成查询并为查询产生执行计划。同时,该章也阐述了如何在psql中为psql连接建立环境变量、查看SQL命令的历史执行记录以及元命令。
第7章说明各种查询优化技术。为了便于读者理解,该章也列举了一些数据库使用相关的范例以及PostgreSQL优化器的工作原理。
第8章介绍对查询性能具有显著影响的PostgreSQL服务器设置。这些设置包括内存设置、开销设置等。同时该章也介绍了两种对象类型:分区和物化视图。
第9章介绍相关的常用工具,例如pg_dump、pg_bulkload以及用于PostgreSQL导入与读取数据的copy功能。
第10章介绍实际操作中的常用方法。该章一步一步地介绍如何使用PostgreSQL的流复制以及pgpool-II来实现水平扩展。同时,该章也介绍PostgreSQL中基于时间点的恢复。
第11章列举开发者在使用PostgreSQL时经常会遇到的一些问题,并阐述如何解决这些问题。同时,该章也说明连接问题、权限问题与参数设置问题。
第12章引入不少讨论话题,列举每一名数据架构师都应当注意的一些有趣的数据类型、一些真正有用的扩展,以及一个用来分析PostgreSQL日志文件的工具。同时,该章也展示PostgreSQL 9.4版本的一些有趣功能。
阅读本书的准备工作你必须有一台能够联网的计算机。如果这台计算机使用的是UNIX / Linux操作系统,那么将对阅读本书非常有帮助。
本书的目标读者你需要接触过一些数据库,了解基本的数据库对象,如表和视图。如果之前未曾或者很少接触PostgreSQL,你会发现这本书非常有用。如果过去几年你一直在使用PostgreSQL,同样还是会从书中找到一些你不熟悉但是有用的命令,或者找到你未曾使用过的数据库优化方法。借助本书,你将更深入地了解数据库的工作原理
数据架构师的PostgreSQL修炼:高效设计、开发与维护数据库应用 pdf下载声明
本pdf资料下载仅供个人学习和研究使用,不能用于商业用途,请在下载后24小时内删除。如果喜欢,请购买正版