新書推薦:
《
控制权视角下的家族企业管理与传承
》
售價:HK$
87.4
《
冯友兰和青年谈心系列
》
售價:HK$
167.3
《
利他主义的生意:偏爱“非理性”的市场(英国《金融时报》推荐读物!)
》
售價:HK$
77.3
《
认知行为疗法:心理咨询的顶层设计
》
售價:HK$
99.7
《
FANUC工业机器人装调与维修
》
售價:HK$
99.7
《
吕著中国通史
》
售價:HK$
62.7
《
爱琴海的光芒 : 千年古希腊文明
》
售價:HK$
199.4
《
不被他人左右:基于阿德勒心理学的无压力工作法
》
售價:HK$
66.1
|
編輯推薦: |
本书根据一位资深PostgreSQL专家多年的从业经验,深入介绍了开源数据库管理系统PostgreSQL的主要特性,包括并发控制、索引、高级SQL处理、日志和统计、查询优化、存储过程、安全性、高可用等。本书原理讲解深入浅出,将官方手册中较难理解的内容简单明了地展示给读者。本书作者是具有18年PG(PostgreSQL)数据库经验的国外大牛。译者彭煜玮先生,武汉大学计算机学院副教授,PostgreSQL中国社区的核心成员,培养输出的数据库人才不计其数。本书适合数据库开发人员、DBA、数据分析师、架构师等。
|
內容簡介: |
本书从一位资深PostgreSQL 专家在多年咨询、技术支持工作中的切身体会出发,深入介绍了开源数据 库管理系统PostgreSQL 9.6 版本中的主要特性,其内容涵盖了作为一个PostgreSQL 数据库从业人员经常会 接触到的主题:事务和锁定、索引的使用、高级SQL 处理、日志文件和统计信息、查询优化、存储过程、 安全性、备份与恢复、复制、各类扩展、故障排查、系统迁移。作者通过亲身经历和直观的例子,详细介 绍了PostgreSQL 主要特性的工作原理、常用配置以及常见的误区,是一本实用性很强的PostgreSQL 进阶指 南,能帮助有一定PostgreSQL 知识的读者深入了解PostgreSQL 中更多更全面的高级特性。 本书适合数据库管理人员和开发人员了解和学习PostgreSQL。通过阅读本书,读者可以对PostgreSQL 有一个全面透彻的了解。
|
關於作者: |
汉斯尤尔根舍尔希(Hans-Jrgen Schnig)拥有18年的PostgreSQL经验,是一家名为Cybertec Schnig & Schnig GmbH(www.postgresql-support.de)的PostgreSQL咨询和支持公司的CEO。该公司已经成功地为全球数不尽的客户提供了服务。
在2000年创建Cybertec Schnig & Schnig GmbH之前,他是一家专注于奥地利劳动市场的私营调查公司的数据库开发人员,当时他的主要工作是数据挖掘和预测模型。他已经写了好几本有关PostgreSQL的书。
|
目錄:
|
第1章 PostgreSQL概述
1.1 PostgreSQL 9.6中有什么新技术
1.1.1 理解新的数据库管理功能
1.1.2 探究新的SQL和开发者相关的功能
1.1.3 使用新的备份和复制功能
1.1.4 理解性能相关的特性
1.2 总结
第2章 理解事务和锁定
2.1 使用PostgreSQL事务
2.1.1 在事务内处理错误
2.1.2 使用保存点
2.1.3 事务性DDL
2.2 理解基本的锁定
2.3 使用FOR SHARE和FOR UPDATE
2.4 理解事务隔离级别
2.5 观察死锁和类似的问题
2.6 利用咨询锁
2.7 优化存储以及控制清理
2.7.1 配置VACUUM和autovacuum
2.7.2 观察工作中的VACUUM
2.7.3 利用snapshot too old
2.8 总结
第3章 使用索引
3.1 理解简单查询和代价模型
3.1.1 使用EXPLAIN
3.1.2 深究PostgreSQL代价模型
3.1.3 部署简单的索引
3.1.4 使用排序输出
3.1.5 一次使用多个索引
3.1.6 以一种聪明的方式使用索引
3.2 使用聚簇表改善速度
3.2.1 聚簇表
3.2.2 使用只用索引的扫描
3.3 理解另外的B-树特性
3.3.1 组合索引
3.3.2 增加函数索引
3.3.3 减少空间消耗
3.3.4 在建立索引时添加数据
3.4 引入操作符类
3.5 理解PostgreSQL索引类型
3.5.1 Hash索引
3.5.2 GiST索引
3.5.3 GIN索引
3.5.4 SP-GiST索引
3.5.5 BRIN索引
3.5.6 增加额外索引
3.6 用模糊搜索实现更好的回答
3.6.1 利用pg_trgm
3.6.2 加速LIKE查询
3.6.3 处理正则表达式
3.7 理解全文搜索-FTS
3.7.1 比较字符串
3.7.2 定义GIN索引
3.7.3 调试用户的搜索
3.7.4 收集词统计信息
3.7.5 利用排除操作符
3.8 总结
第4章 处理高级SQL
4.1 引入分组集
4.1.1 装载一些案例数据
4.1.2 应用分组集
4.1.3 组合分组集和FILTER子句
4.2 使用有序集
4.3 理解假想聚集
4.4 利用窗口函数和分析
4.4.1 划分数据
4.4.2 在窗口中排序数据
4.4.3 使用滑动窗口
4.4.4 提取窗口子句
4.4.5 使用内建窗口函数
4.5 编写自己的聚集
4.5.1 创建简单的聚集
4.5.2 为并行查询增加支持
4.5.3 改进效率
4.5.4 编写假想聚集
4.6 总结
第5章 日志文件和系统统计信息
5.1 收集运行时统计信息
5.2 创建日志文件
5.3 总结
第6章 优化查询获得良好性能
6.1 学习优化器的行为
6.2 理解执行计划
6.2.1 系统地处理计划
6.2.2 发现问题
6.3 理解并且固定连接
6.3.1 正确使用连接
6.3.2 处理外连接
6.3.3 理解join_collapse_limit变量
6.4 启用和禁用优化器设置
6.5 分区数据
6.5.1 创建分区
6.5.2 应用表约束
6.5.3 修改继承的结构
6.5.4 在分区结构中移进和移出表
6.5.5 清理数据
6.6 为好的查询性能调整参数
6.6.1 加速排序
6.6.2 加速管理任务
6.7 总结
第7章 编写存储过程
7.1 理解存储过程语言
7.2 理解各种存储过程语言
7.2.1 引入PLpgSQL
7.2.2 引入PLPerl
7.2.3 引入PLPython
7.3 改进存储过程的性能
7.4 使用存储过程
7.5 总结
第8章 管理PostgreSQL安全性
8.1 管理网络安全性
8.1.1 理解绑定地址和连接
8.1.2 管理pg_hba.conf
8.1.3 处理实例级安全性
8.1.4 定义数据库级安全性
8.1.5 调整方案级权限
8.1.6 使用表
8.1.7 处理列级安全性
8.1.8 配置默认特权
8.2 深入行级安全性RLS
8.3 检查权限
8.4 再分配对象和删除用户
8.5 总结
第9章 处理备份和恢复
9.1 执行简单转储
9.1.1 运行pg_dump
9.1.2 传递口令和连接信息
9.1.3 提取数据的子集
9.1.4 处理多种数据格式
9.2 重放备份
9.3 处理全局数据
9.4 总结
第10章 理解备份和复制
10.1 理解事务日志
10.1.1 察看事务日志
10.1.2 理解检查点
10.1.3 优化事务日志
10.2 事务日志归档和恢复
10.2.1 为归档进行配置
10.2.2 配置pg_hba.conf文件
10.2.3 创建基础备份
10.2.4 重放事务日志
10.2.5 清理事务日志归档
10.3 设置异步复制
10.3.1 执行基本设置
10.3.2 停止和继续复制
10.3.3 检查复制以确保可用性
10.3.4 执行故障转移以及理解时间线
10.3.5 管理冲突
10.3.6 让复制更可靠
10.4 升级到同步复制
10.5 利用复制槽
10.5.1 处理物理复制槽
10.5.2 处理逻辑复制槽
10.6 总结
第11章 选定有用的扩展
11.1 理解扩展如何工作
11.2 利用contrib模块
11.2.1 使用adminpack
11.2.2 应用布隆过滤器
11.2.3 部署btree_gist和btree_gin
11.2.4 Dblink-考虑逐步淘汰
11.2.5 用file_fdw取得文件数据
11.2.6 使用pageinspect检查存储
11.2.7 用pg_buffercache研究缓冲
11.2.8 用pgcrypto加密数据
11.2.9 用pg_prewarm预热缓冲
11.2.10 用pg_stat_statements检查性能
11.2.11 用pgstattuple检查存储
11.2.12 用pg_trgm进行模糊搜索
11.2.13 使用postgres_fdw连接到远程服务器
11.3 其他有用的扩展
11.4 总结
第12章 在PostgreSQL中排查错误
12.1 着手处理一个陌生的数据库
12.2 检查pg_stat_activity
12.3 检查慢查询
12.3.1 检查个体查询
12.3.2 用perf深入研究
12.4 检查日志
12.5 检查缺失的索引
12.6 检查内存和IO
12.7 了解值得注意的错误场景
12.7.1 面对clog损坏
12.7.2 理解检查点消息
12.7.3 管理损坏的数据页面
12.7.4 粗心的连接管理
12.7.5 与表膨胀斗争
12.8 总结
第13章 迁移到PostgreSQL
13.1 迁移SQL语句到PostgreSQL
13.1.1 使用侧连接
13.1.2 使用分组集
13.1.3 使用WITH子句公共表表达式
13.1.4 使用WITH RECURSIVE子句
13.1.5 使用FILTER子句
13.1.6 使用窗口函数
13.1.7 使用有序集WITHIN GROUP子句
13.1.8 使用TABLESAMPLE子句
13.1.9 使用limitoffset
13.1.10 使用OFFSET
13.1.11 使用临时表
13.1.12 匹配时间序列中的模式
13.2 从Oracle转移到PostgreSQL
13.2.1 使用oracle_fdw扩展转移数据
13.2.2 使用ora2pg从Oracle迁移
13.2.3 常见的陷阱
13.3 从MySQL或MariaDB转移到PostgreSQL
13.3.1 处理MySQL和MariaDB中的数据
13.3.2 迁移数据和模式
13.4 总结
|
內容試閱:
|
前 言
PostgreSQL是一种开源数据库管理工具,它可以被用于处理大型数据集(大数据)并且可以被用作一种JSON文档数据库。它也在软件和Web领域中有很多应用。本书将让读者能够构建更好的PostgreSQL应用并且更有效地管理数据库。
本书所涵盖的内容
第1章 PostgreSQL概述,使读者从总体上了解PostgreSQL及其特性。读者将学到PostgreSQL中可用的新事物和新功能。
第2章 理解事务和锁定,将涵盖任意数据库系统最重要的方面之一。没有事务的存在,数据库通常无法正确地工作。因此理解事务和锁定对于性能以及专业工作来说都是很关键的。
第3章 使用索引,涵盖了读者需要了解的与索引有关的方方面面。索引是性能的关键因素,因此它是获得良好用户体验和高吞吐量的重要基石。索引的所有重要方面都会在本章中被涵盖。
第4章 处理高级SQL,将介绍现代SQL的一些最重要的概念。读者将学到窗口函数以及其他重要的更现代化的SQL。
第5章 日志文件和系统统计信息,将引导读者通过更多管理任务,例如日志文件管理和监控。读者将学到如何观察其服务器并且从PostgreSQL中提取运行时信息。
第6章 优化查询获得良好性能,将告诉读者所有有关良好PostgreSQL性能的内容。本章将涵盖SQL调优以及内存管理的信息。
第7章 编写存储过程,教会读者与服务器端代码相关的更高级的主题。本章涵盖最重要的服务器端编程语言及其他重要的方面。
第8章 管理PostgreSQL安全性,本章的目的是帮助读者提高服务器的安全性。本章会介绍从用户管理到行级安全性的各种特性。有关加密的内容也包括在本章中。
第9章 处理备份和恢复,涵盖有关备份和数据恢复的所有内容。读者将学到备份其数据以及在遇到灾难时恢复数据。
第10章 理解备份和复制,本章与冗余有关。读者将学到异步以及同步复制PostgreSQL数据库系统。本章将尽可能全面地介绍所有的现代特性。
第11章 选定有用的扩展,本章描述对PostgreSQL增加额外功能的被广泛使用的模块。读者将学到最常见的扩展。
第12章 在PostgreSQL中排查错误,本章提供了一种系统的方法以修复PostgreSQL中的问题。它将使读者能够定位常见的问题并且以一种有条理的方式解决问题。
第13章 迁移到PostgreSQL,它是本书的最后一章并且向读者展示了从商业数据库到PostgreSQL的路径。本章将涵盖当今能被迁移的最重要的数据库。
需要的预备知识
本书的读者很广泛。为了能跟得上本书中给出的例子,至少要有一些SQL甚至PostgreSQL的经验(不过这并非硬性要求)。一般来说,如果能熟悉Unix命令行会更好。
适合人群
本书是为那些想要对PostgreSQL了解更多并且不满足于基本知识的人而写。其目标是写一本更加深入的书,并且以一种清晰且易懂的方式解释最重要的内容。
本书约定
在本书中,读者将会找到几种区分不同类别信息的文本样式。这里有这些样式的一些例子及其含义的解释。
任何命令行输入或者输出都被写为下面这样:
test=# CREATE TABLE t_testid serial, name text;
CREATE TABLE
test=# INSERT INTO t_testname SELECT ''hans''
FROM generate_series1, 2000000;
新术语和重要的词被加粗。
警告或重要的注记出现在一个这样的框中。
提示和技巧以这种形式出现。
读者反馈
我们非常欢迎来自读者的反馈。请让我们知道您对本书的想法不管您喜欢还是不喜欢这本书。读者反馈对我们来说非常重要,它能帮助我们开发对读者真正有用的主题。
如果要向我们发送一般的反馈,请写邮件到,并且在邮件的主题中提及本书的标题。
如果您在一个主题上拥有专业的知识,并且有兴趣写作或者为著书做出贡献,请参考我们的作者指南:
客户支持
现在您已经自豪地拥有了一本由Packt出版的书,我们有很多措施来帮助您最大限度地从本次购买中受益。
勘误表
尽管我们已经非常细心地确保内容的准确性,但错误仍可能出现。如果您在我们的书籍中找到了错误,有可能是文字或者代码的错误,请您将错误报告给我们,我们将不胜感激。这样做可以让其他读者免受错误的干扰并且能帮助我们改进本书的后续版本。如果您找到任何勘误,请通过访问并报告:选择相关的书,单击Errata Submission Form超链接,然后输入勘误的详情。一旦您的勘误被确认,您的提交将被接受并且那些勘误将被上传至我们的网站或者被加入到该书的勘误表中。
如果要查看之前提交的勘误表,可以访问并且在搜索区中输入该书的名字。要检索的信息将出现在Errata部分。
盗版
互联网上对受版权保护的材料被盗版行为是所有媒体都面临着的问题。在Packt,我们非常重视对我们的版权和许可证的保护。如果您在互联网上发现任何形式的对我们作品的非法复制,请立即向我们提供位置地址或者网站名称,这样我们可以对其进行纠正。
请通过联系我们并提供疑似盗版材料的链接。
感谢您在保护我们的作者和为读者提供有价值内容的能力方面提供的帮助。
问题
如果读者对本书的任何方面有疑问,可以通过联系我们,我们将尽力为读者解决。
|
|