正版图书 真实库存欢迎选购 套装图书先联系再下单 套装图书请先咨询客服再下单
¥ 13.46 1.7折 ¥ 79 九品
库存2件
作者唐成
出版社机械工业出版社
ISBN9787111498728
出版时间2015-04
装帧平装
开本16开
定价79元
货号1001274777753206795
上书时间2024-11-26
为什么要写这本书
PostgreSQL数据库是目前功能最强大的开源数据库,它基本包含了其他所有商业或开源的数据库中能找到的功能,甚至还包含了一些商业数据库中没有的功能。它是最接近工业标准SQL92的查询语言,并且正在实现新的功能以兼容最新的SQL标准:SQL2003。PostgreSQL也获得数个奖项,曾三次被评为Linux Journal杂志编辑评选的“最佳数据库奖”(2000年、2003年和2004年),并获2004年度的Linux新媒体最佳数据库系统奖。
PostgreSQL目前在国外很流行,特别是近两年,使用PostgreSQL数据库的公司越来越多,如提供网络电话功能的skype和著名的图片分享网站Instagram。2012年,美国联邦机构全面转向PostgreSQL阵营;法国也正推动政府机构积极采用PostgreSQL数据库取代商业数据库;世界最大的CRM软件服务提供商Salesforce同样开始大量使用 PostgreSQL。在DB-Engine 发布的历年数据库排名中,PostgreSQL自从2013年3月上升到第四名后,一直稳定在第四名,排在很多知名的商业数据库如DB2、Sybase之前,也排在所有NoSQL数据库如Cassandra、Redis等之前。
虽然在国外使用PostgreSQL 数据库的人很多,但在国内,PostgreSQL中文的学习资料并不多,因此我就想到写一本关于PostgreSQL的书,让国内更多的人加入到学习PostgreSQL数据库的队伍中来。
读者对象
适合阅读本书的用户:
数据库入门者。学习本书和相关的数据库知识,可以让一个对数据库了解不是很深的数据库爱好者成为数据库专家。
非PostgreSQL数据库的DBA。可以让非PostgreSQL的DBA 快速掌握PostgreSQL数据库相关知识,成为一名合格的PostgreSQL DBA。
PostgreSQL DBA。本书的一些章节对熟悉PostgreSQL数据库的DBA也有很大指导作用,可以使读者的知识更充实。
开发人员。通过此书可以快速掌握PostgreSQL数据库方面的知识,提高开发人员的数据库水平。
如何阅读本书
本书分为四大部分,分别为准备篇、基础篇、提高篇和第三方开源软件及架构篇。准备篇是为没有数据库基础的读者准备的,如果你已经具备了一定的数据库基础,可以跳过其中的一些内容。基础篇介绍了PostgreSQL数据库中的一些基础内容,学完此篇可以完成基本的PostgreSQL数据库的日常操作。提高篇讲解了一些更深的内容,如PostgreSQL的一些技术内幕、特色功能、优化等方面的内容,仔细阅读此篇可使你早日成为PostgreSQL数据库高手。第三方开源软件及架构篇讲解了与PostgreSQL数据库配套使用的一些常用的开源软件及架构设计方面的内容,通过阅读此篇,可以开阔大家的眼界,提高数据库架构设计能力。
本书中有大量的例子,读者边阅读此书边按例子进行实际的操作,将获得最佳的学习效果。
勘误和支持
由于作者的水平有限,编写的时间也很仓促,书中难免会出现一些错误或者不准确的地方,不妥之处恳请读者批评指正。
致谢
感谢机械工业出版社华章公司的编辑杨绣国老师,感谢她一年多来始终支持我的写作,她的鼓励和帮助引导我能顺利完成全部书稿。
最后要感谢我的妻子,她一直支持和鼓励我,让我能坚持把这本书写完。
谨以此书,献给众多热爱PostgreSQL的朋友们。
唐成(osdba)
中国,杭州,2015年1月
唐成,拥有十几年数据库、操作系统、存储领域的工作经验。目前任沃趣科技首席数据库架构师,从事数据库高可用、高性能以及数据库云化等方面的研究工作。历任阿里巴巴数据库专家、高级数据库专家,从事过阿里巴巴的线上Oracle、Greenplum、PostgreSQL数据库的架构设计和运维工作,为阿里巴巴的PostgreSQL数据库的布道者,推动阿里云的关系型数据库服务(RDS)中提供PostgreSQL数据库服务,为阿里巴巴PostgreSQL数据库方面的技术带头人。也曾任网易杭州研究院开发专家,主导了网易云计算中的云硬盘产品(类似有EBS)的设计和开发。
前言
第一篇准备篇
第1章PostgreSQL简介2
1.1什么是PostgreSQL2
1.1.1PostgreSQL概述2
1.1.2PostgreSQL的发展历史2
1.1.3 PostgreSQL数据库的优势3
1.1.4 PostgreSQL应用现状和发展趋势4
1.2 PostgreSQL数据库与其他数据库的对比4
1.2.1PostgreSQL与MySQL数据库的对比4
1.2.2 PostgreSQL与Oracle数据库的对比6
1.3 小结6
第2章PostgreSQL安装与配置7
2.1 从发行版本安装7
2.1.1 在Debian或Ubuntu下的安装7
2.1.2在Redhat、CentOS或Fedora下的安装9
2.1.3 在Windows下的安装12
2.1.4 发行版安装总结16
2.2 从源码安装16
2.2.1 编译安装过程介绍16
2.2.2 下载源代码17
2.2.3 编译及安装18
2.2.4 安装后的配置20
2.2.5 创建数据库簇21
2.2.6 安装contrib目录下的工具21
2.2.7 启动和停止数据库21
2.2.8 编译安装时的常见问题及解决方法22
2.3 安装技巧介绍24
2.3.1 在Redhat、CentOS下使用二进制包安装较新版本的方法24
2.3.2 如何使用较大的数据块提高I/O性能25
2.4 PostgreSQL的简单配置25
2.4.1 修改监听的IP和端口25
2.4.2 与数据库log相关的参数25
2.4.3 内存参数的设置26
2.5 小结26
第3章SQL语言入门27
3.1 SQL语句语法简介27
3.1.1 语句的分类27
3.1.2 词法结构27
3.2 DDL语句28
3.2.1 建表语句28
3.2.2 删除表语句30
3.3 DML语句30
3.3.1 插入语句30
3.3.2 更新语句31
3.3.3 删除语句31
3.4 查询语句31
3.4.1 单表查询语句31
3.4.2 过滤条件的查询32
3.4.3 排序32
3.4.4 分组查询33
3.4.5 表join34
3.5 其他SQL语句36
3.5.1 INSERT INTO... SELECT语句36
3.5.2 UNION语句36
3.5.3 TRUNCATE TABLE语句37
3.6 小结37
第二篇基础篇
第4章psql工具的使用介绍40
4.1 psql介绍40
4.2 psql的简单使用40
4.3 psql的常用命令42
4.3.1 d命令42
4.3.2 指定字符集编译的命令45
4.3.3 pset命令46
4.3.4 x命令46
4.3.5 执行存储在外部文件中的SQL命令47
4.3.6 显示信息的命令48
4.3.7 更多的命令49
4.4 psql的使用技巧和注意事项50
4.4.1 历史命令与补全的功能50
4.4.2 自动提交方面的技巧50
4.4.3 如何得到psql中命令实际执行的SQL51
4.5 小结53
第5章数据类型54
5.1 类型介绍54
5.1.1 类型的分类54
5.1.2 类型输入与转换55
5.2 布尔类型56
5.2.1 布尔类型解释56
5.2.2 布尔类型的操作符58
5.3 数值类型59
5.3.1 数值类型解释59
5.3.2 整数类型 59
5.3.3 精确的小数类型59
5.3.4 浮点数类型60
5.3.5 序列类型61
5.3.6 货币类型61
5.3.7 数学函数和操作符62
5.4 字符串类型64
5.4.1 类型解释64
5.4.2 字符串函数和操作符65
5.5 二进制数据类型67
5.5.1 二进制数据类型解释67
5.5.2 二进制数据类型转义表示67
5.5.3 二进制数据类型的函数68
5.6 位串类型69
5.6.1 位串类型解释69
5.6.2 位串类型的使用69
5.6.3 位串的操作符及函数70
5.7 日期/时间类型71
5.7.1 日期/时间类型详解71
5.7.2 日期输入72
5.7.3 时间输入73
5.7.4 特殊值75
5.7.5 函数和操作符列表75
5.7.6 时间函数77
5.7.7 extract和date_part函数80
5.8 枚举类型81
5.8.1 枚举类型的使用81
5.8.2 枚举类型的说明82
5.8.3 枚举类型的函数83
5.9 几何类型84
5.9.1 几何类型概况84
5.9.2 几何类型的输入84
5.9.3 几何类型的操作符89
5.9.4 几何类型的函数97
5.10 网络地址类型98
5.10.1 网络地址类型概况98
5.10.2 inet与cidr类型98
5.10.3 macaddr类型101
5.10.4 网络地址类型的操作符101
5.10.5 网络地址类型的函数102
5.11 复合类型103
5.11.1 复合类型的定义103
5.11.2 复合类型的输入104
5.11.3 访问复合类型105
5.11.4 修改复合类型105
5.11.5 复合类型的输入与输出106
5.12 XML类型107
5.12.1 XML类型的输入107
5.12.2 字符集的问题108
5.12.3 XML类型的函数109
5.13 JSON类型114
5.13.1 JSON类型简介115
5.13.2 JSON类型的输入与输出115
5.13.3 JSON类型的操作符116
5.13.4 JSON类型的函数118
5.13.5 JSON类型的索引121
5.14 Range类型125
5.14.1 Range类型简介125
5.14.2 创建Range类型126
5.14.3 Range类型的输入与输出127
5.14.4 Range类型的操作符130
5.14.5 Range类型的函数130
5.14.6 Range类型的索引和约束131
5.15 数组类型132
5.15.1 数组类型的声明132
5.15.2 如何输入数组值133
5.15.3 访问数组135
5.15.4 修改数组137
5.15.5 数组的操作符138
5.15.6 数组的函数139
5.16 伪类型142
5.17 其他类型143
5.17.1 UUID类型143
5.17.2 pg_lsn 类型143
第6章逻辑结构管理145
6.1 数据库逻辑结构介绍145
6.2 数据库基本操作145
6.2.1 创建数据库145
6.2.2 修改数据库146
6.2.3 删除数据库147
6.2.4 常见问题及解答147
6.3 模式148
6.3.1 模式的定义148
6.3.2 模式的使用148
6.3.3 公共模式150
6.3.4 模式的搜索路径150
6.3.5 模式的权限151
6.3.6 模式的移植性151
6.4 表152
6.4.1 创建表152
6.4.2 表的存储属性154
6.4.3 临时表156
6.4.4 默认值158
6.4.5 约束159
6.4.6 修改表163
6.4.7 表继承及分区表167
6.4.8 分区表168
6.5 触发器173
6.5.1 创建触发器173
6.5.2 语句级触发器与行级触发器175
6.5.3 BEFORE触发器与AFTER触发器177
6.5.4 删除触发器178
6.5.5 触发器的行为179
6.5.6 触发器函数中的特殊变量180
6.6 事件触发器180
6.6.1 创建事件触发器183
6.6.2 修改事件触发器186
6.7 表空间186
6.7.1 表空间的定义186
6.7.2 表空间的使用186
6.8 视图187
6.8.1 视图的定义187
6.8.2 创建视图188
6.8.3 可更新视图189
6.9 索引191
6.9.1 索引简介191
6.9.2 索引的分类192
6.9.3 创建索引192
6.9.4 并发创建索引193
6.9.5 修改索引196
6.9.6 删除索引196
6.10 用户及权限管理197
6.10.1 用户和角色197
6.10.2 创建用户和角色198
6.10.3 权限的管理199
6.10.4 函数和触发器的权限202
6.10.5 权限的总结202
6.10.6 权限的示例202
6.11 事务、并发、锁203
6.11.1 ACID203
6.11.2 DDL事务204
6.11.3 事务的使用204
6.11.4 SAVEPOINT205
6.11.5 事务隔离级别206
6.11.6 两阶段提交207
6.11.7 锁机制209
6.11.8 死锁及防范212
6.11.9 表级锁命令LOCK TABLE213
6.11.10 行级锁命令213
6.11.11 锁的查看214
第7章PostgreSQL的核心架构221
7.1 应用程序的访问接口221
7.1.1 访问接口总体图221
7.1.2 不同编辑语言的PostgreSQL驱动介绍222
7.2 进程及内存结构223
7.2.1 进程和内存架构图223
7.2.2 主进程Postmaster224
7.2.3 SysLogger(系统日志)进程224
7.2.4 BgWriter(后台写)进程225
7.2.5 WalWriter(预写式日志写)进程225
7.2.6 PgArch(归档)进程225
7.2.7 AutoVacuum(自动清理)进程225
7.2.8 PgStat(统计数据收集)进程226
7.2.9 共享内存226
7.2.10 本地内存226
7.3 目录结构227
7.3.1 安装目录的结构227
7.3.2 数据目录的结构227
7.3.3 表空间的目录228
第8章服务管理229
8.1 服务的启停和创建229
8.1.1 启停方法229
8.1.2 pg_ctl230
8.1.3 信号234
8.1.4 postgres及单用户模式234
8.2 服务配置介绍235
8.2.1 配置参数235
8.2.2 连接配置项237
8.2.3 内存配置项240
8.2.4 预写式日志的配置项241
8.2.5 错误报告和日志项243
8.3 访问控制配置文件246
8.3.1 pg_hba.conf 文件247
8.3.2 认证方法介绍248
8.3.3 认证方法实战249
8.4 备份和还原249
8.4.1 逻辑备份249
8.4.2 pg_dump命令250
8.4.3 pg_restore命令254
8.4.4 pg_dump和pg_restore使用举例257
8.4.5 物理备份258
8.4.6 使用LVM快照进行热备份259
8.5 常用的管理命令261
8.5.1 查看系统信息的常用命令261
8.5.2 系统维护常用命令267
第三篇提高篇
第9章PostgreSQL中执行计划270
9.1 执行计划的解释270
9.1.1 EXPLAIN命令270
9.1.2 EXPLAIN输出结果解释271
9.1.3 EXPLAIN使用示例272
9.1.4 全表扫描275
9.1.5 索引扫描275
9.1.6 位图扫描275
9.1.7 条件过滤276
9.1.8 Nestloop Join277
9.1.9 Hash Join277
9.1.10 Merge Join278
9.2 与执行计划相关的配置项279
9.2.1 ENABLE_*参数 279
9.2.2 COST基准值参数279
9.2.3 基因查询优化的参数280
9.2.4 其他执行计划配置项281
9.3 统计信息的收集282
9.3.1 统计信息收集器的配置项282
9.3.2 SQL执行的统计信息输出283
9.3.3 手工收集统计信息283
第10章PostgreSQL中的技术内幕285
10.1 表中的系统字段285
10.1.1 oid286
10.1.2 ctid288
10.1.3 xmin、xmax、cmin、cmax289
10.2 多版本并发控制290
10.2.1 多版本并发控制的原理290
10.2.2 PostgreSQL中的多版本并发控制291
10.2.3 PostgreSQL多版本的优劣分析293
10.3 物理存储结构293
10.3.1 PostgreSQL中的术语293
10.3.2 数据块结构293
10.3.3 Tuple结构294
10.3.4 数据块空闲空间管理296
10.3.5 可见性映射表文件298
10.4 技术解密298
10.4.1 Index-only scans298
10.4.2 Heap-Only Tuples300
第11章PostgreSQL的特色功能302
11.1 规则系统302
11.1.1 SELECT规则302
11.1.2 更新规则303
11.1.3 规则和权限306
11.1.4 规则和命令状态307
11.1.5 规则与触发器的比较308
11.2 模式匹配和正则表达式308
11.2.1 PostgreSQL中的模式匹配和正则表达式介绍308
11.2.2 传统SQL的LIKE 操作符309
11.2.3 SIMILAR TO 正则表达式310
11.2.4 POSIX 正则表达式312
11.2.5 模式匹配函数 substring313
11.3 listen与notify315
11.3.1 listen与notify的简单示例315
11.3.2listen与notify的相关命令316
11.3.3 listen与notify的使用详解317
11.4 索引的特色320
11.4.1 表达式上的索引320
11.4.2 部分索引320
11.4.3 GiST索引323
11.4.4 SP-GiST索引325
11.4.5 GIN索引326
11.5 序列的使用328
11.5.1 序列的创建328
11.5.2 序列的使用及相关的函数329
11.5.3 常见问题及解答331
11.6 咨询锁的使用333
11.6.1 咨询锁的定义333
11.6.2 咨询锁的函数及使用333
11.6.3 常见问题及解答337
11.7 SQL/MED338
11.7.1 SQL/MED的介绍338
11.7.2 外部数据包装器对象339
11.7.3 外部服务器对象340
11.7.4 用户映射对象341
11.7.5 外部表对象341
11.7.6 file_fdw使用实例342
11.7.7 postgres_fdw使用实例345
第12章数据库优化347
12.1 优化准则和方法347
12.1.1 优化准则347
12.1.2 优化方法348
12.2 硬件知识348
12.2.1 CPU及服务器体系结构348
12.2.2 内存349
12.2.3 硬盘350
12.3 文件系统及I/O调优352
12.3.1 文件系统的崩溃恢复352
12.3.2 Ext2文件系统353
12.3.3 Ext3文件系统353
12.3.4 Ext4文件系统354
12.3.5 XFS文件系统355
12.3.6 Barriers I/O355
12.3.7 I/O调优的方法356
12.4 性能监控359
12.4.1 数据库性能视图359
12.4.2 Linux监控工具362
12.5数据库配置优化364
12.5.1内存配置优化364
12.5.2 关于双缓存的优化366
12.5.3 vacuum中的优化367
12.5.4 预写式日志写优化369
第13章Standby数据库的搭建371
13.1 Standby数据库原理371
13.1.1PITR原理371
13.1.2WAL日志归档372
13.1.3流复制372
13.1.4Standby的运行原理373
13.1.5 创建Standby的步骤373
13.2 pg_basebackup命令行工具374
13.2.1 pg_basebackup介绍374
13.2.2 pg_basebackup的命令行参数375
13.2.3 pg_basebackup使用示例376
13.3 异步流复制Hot Standby的示例377
13.3.1 配置环境377
13.3.2 主数据库的配置378
13.3.3 在Standby上生成基础备份378
13.3.4
— 没有更多了 —
以下为对购买帮助不大的评价