后端接口(BKI)文件是一些用特殊语言写的脚本,这些脚本是 PostgreSQL 后端能够理解的,以特殊的 "bootstrap"(引导)模式运行,这种模式允许在不存在系统表的零初始条件下执行数据库函数,而普通的 SQL 命令要求系统表必须存在。因此 BKI 文件可以用于在第一时间创建数据库系统。(可能除此以外也没有其它用处。) 在创建
控制结构可能是 PL/pgSQL 中最有用的(以及最重要)的部分了。 利用 PL/pgSQL 的控制结构, 你可以以非常灵活而且强大的方法操纵 PostgreSQL 的数据。 从函数返回有两个命令可以用来从函数中返回数据:RETURN 和 RETURN NEXT。 RETURNRETURN expression; 带表达式的 RETURN 是用于终止函数, 然后 expression 的值返回给调
Synopsispg_ctl start [w] [s] [D datadir] [l filename] [o options] [p path]pg_ctl stop [W] [s] [D datadir] [m s[mart] | f[ast] | i[mmediate] ]pg_ctl restart [w] [s] [D datadir] [m s[mart] | f[ast] | i[mmediate] ] [o options]pg_ctl reload [s] [D datadir]pg_ctl status [D datadir]pg_ctl kill [signal_nam
PostgreSQL 采用标准的 SQL 语法支持外连接。这里是两个例子: SELECT * FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);或 SELECT * FROM t1 LEFT OUTER JOIN t2 USING (col);这两个等价的查询在 t1.col 和 t2.col 上做连接,并且返饣?t1 中所有未连接的行(那些在 t2 中没有匹配的行)。右[外]连接(RIGHT OUTER JOIN)
如果错误信息是 IpcSemaphoreCreate: semget failed (No space left on device),那么原因是你的内核没有配置足够的信号灯资源。Postgres 的每个潜在的后台进程都需要一个信号灯。一个临时的解决方法是以比较少的后台进程数(参数)启动 postmaster。使用开关 N 带一个少于缺省值 32 的参数运行 postmaster。更长久的解决方
下面的小节更详细地描述认证方法。 信任认证如果声明了 trust (信任)认证模式, PostgreSQL 就假设任何可以联接到服务器的人都可以以任何他声明的数据库用户(包括数据库超级用户)连接。 当然,在 database 和 user 字段里面的限制仍然适用。 这个方法应该用于那些在联接到服务器已经有足够操作系统层次保护的环境里。
如何把你的数据库数据从一个 PostgreSQL 版本迁移到一个更新的版本上。 软件安装步骤本身不是本节的论题;它们的细节在 Chapter 14 里。 通常,不同主版本的 PostgreSQL 之间的内部存储结构经常做改变 (第一个点后面的数字变化)。 这个情况不会在不同的子版本里面发生(第二个点后面的数字变化)。它们通常用的都是兼容
为了保持所安装的 PostgreSQL 服务器平稳运行, 我们必须做一些日常性的维护工作。我们在这里讨论的这些工作都是经常重复的事情, 可以很容易地使用标准的 Unix 工具,比如cron 脚本来实现。 不过,设置合适的脚本以及检查它们是否成功执行则是数据库管理员的责任, 一件很明显的维护工作就是经常性地创建数据的备份拷贝。
除了已经提到过的 postgresql.conf 文件之外, PostgreSQL 还使用另外两个手工编辑的配置文件, 它们控制客户端认证(它们的使用在 Chapter 19 里讨论)。 缺省时,所有三个配置文件都存放在数据库集群的数据目录里。 本节描述的选项允许配置文件放在别的地方。 (这么做可以简化管理,特别是如果配置文件独立放置,通常可
deadlock_timeout (integer) 这个是以毫秒计的时间,用于设置在检查是否存在死锁条件之前的等待时间。 检查是否存在死锁条件是一个缓慢的过程,因此服务器不会在每次等待锁的时候都运行这个过程。 我们(乐观地?)假设在生产应用中的死锁是不常出现的, 因此我们在开始询问是否可以解锁之前只等待一个锁相对短的一段时间。
当一个客户端应用与数据库服务器进行联接时,它声明它将以哪个 PostgreSQL 用户的名称进行联接, 就象我们登录一台 Unix 计算机一样。在 SQL 环境里, 活跃的数据库用户名决定数据库对象的各种访问权限 — 参阅Chapter 17获取更多信息。因此, 实际上我们要限制的是用户可以联接的数据库。 认证 是数据库服务器建立客户端
有一堆配置参数可以影响数据库系统的行为。 我们在这里描述一下如何设置它们,然后在下一章我们将逐个讨论它们。 所有参数名都是大小写不敏感的。每个参数都可以接受四种类型之一:布尔, 整数,浮点数和字符串。布尔值可以是 ON,OFF, TRUE,FALSE, YES,NO, 1,0 (都是大小写无关)或这些东西的任意清晰无歧义的前缀
用户属性 一个数据库用户可以有一系列属性,这些属性定义他的权限,以及与客户认证系统的交互。 超级用户 数据库超级用户超越所有权限检查。同样,只有超级用户才能创建新的用户。 要创建数据库超级用户,用 CREATE USER name CREATEUSER。 创建数据库 用户要想创建数据库,必须明确给出权限(对于超级用户是例外,因为他
内存 shared_buffers (integer) 设置数据库服务器将使用的共享内存缓冲区数量。缺省通常是 1000, 如果你的内核设置不支持这么大,那么可以少些(在 initdb 的时候决定)。 每个缓冲区大小的典型值是 8192 字节,除非你在编译的时候修改了 BLCKSZ 的值。这个数值必须大于 16, 并且至少是 max_connections 数值的两倍;
设置 fsync (boolean) 如果这个选项是打开,那么 PostgreSQL 服务器将在好几个地方使用 fsync() 系统调用来确保更新已经物理上写到磁盘中。 这样就保证了数据库集群将在操作系统或者硬件崩溃的情况下恢复到一个一致的状态。 不过,使用 fsync() 会对性能有影响: 在事务提交的时候,PostgreSQL 必须等待操作系统吧预写日
把数据库服务器的日志输出保存在一个地方是个好主意, 而不是仅仅把它们放到 /dev/null 里。 在碰到危险的问题的时候,日志输出是非常宝贵的。 不过,日志输出可能很庞大(特别是在比较高的调试级别上), 而且你不会无休止地保存它们.你需要"旋转"日志文件, 这样生成新的日志文件并且经常抛弃老的. 如果你简单地把post
认证问题 真正的认证失败以及相关的问题通常由类似下面的错误信息表白自身。 FATAL: no pg_hba.conf entry for host "123.123.123.123", user "andym", database "testdb" 这条信息出现的最大可能是你已经联接了服务器,但她不愿意和你说话。 就象信息自己表示的那样,服务器拒绝了联接请求,因为她没有在她的 pg_hba.conf
数据库用户 数据库用户从概念上与操作系统用户是完全无关的。 在实际使用中把它们对应起来可能比较方便,但不是必须的。 数据库用户名在整个数据库集群中是全局的(而不是每个库不同)。 要创建一个用户,使用 SQL 命令 CREATE USER: CREATE USER name; name 遵循 SQL 标识的规则: 要么完全没有特殊字符,要么用双引号引
本章从管理员的角度描述可用的区域特性。 PostgreSQL 通过三种途径支持区域: 利用操作系统库的区域(locale)特性,提供对集合顺序,数字格式, 翻译过的信息,和其它方面的支持。 提供一些定义在 PostgreSQL 服务器里的不同的节字符集, 包括多字节字符集,以支持多种类型的语言的排序文本, 以及提供客户端和服务器端之
回归测试是一套复杂完整的测试, 用来测试嵌入在 PostgreSQL 里的的 SQL 实现。 它同时测试标准 SQL 操作和PostgreSQL的扩展SQL。 运行测试 回归测试可以就一套已经安装好并且在运行的服务器进行测试, 也可以就制作树里面临时安装的服务器进行测试。 详细些说,有"并行"和"串行"运行测试之分。 串行模式顺序运行每个测试