aboutsummaryrefslogtreecommitdiff
path: root/doc/src/FAQ/FAQ_chinese.html
diff options
context:
space:
mode:
Diffstat (limited to 'doc/src/FAQ/FAQ_chinese.html')
-rw-r--r--doc/src/FAQ/FAQ_chinese.html1881
1 files changed, 1006 insertions, 875 deletions
diff --git a/doc/src/FAQ/FAQ_chinese.html b/doc/src/FAQ/FAQ_chinese.html
index d089d69eab5..5198cbf129d 100644
--- a/doc/src/FAQ/FAQ_chinese.html
+++ b/doc/src/FAQ/FAQ_chinese.html
@@ -1,875 +1,1006 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en" dir="ltr">
- <head>
- <title>
- PostgreSQL: PostgreSQL 常见问题(FAQ)
- </title>
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
- </head>
-
- <body>
-
-<h1>PostgreSQL 常见问题(FAQ)</h1>
-<p>
-最近更新:2005 年 06 月 02 日 星期五 22:27:35 CST
-</p>
-<p>
- 目前维护人员:Bruce Momjian (<a href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>)<br/>
- 中文版维护人员:doudou586 (doudou586_2005@yahoo.com.cn)
-</p>
-<p>
- 本文档的最新版本可以在
- <a href="http://www.postgresql.org/files/documentation/faqs/FAQ.html">http://www.postgresql.org/files/documentation/faqs/FAQ.html</a>查看。
-</p>
-<p>
- 与操作系统平台相关的问题在<a href="http://www.postgresql.org/docs/faq/">http://www.postgresql.org/docs/faq/</a>里回答。<br/>
-</p>
-<hr/>
-
-<div><h2>常见问题</h2></div>
-
-<p>
-<a href="#1.1">1.1</a>)PostgreSQL 是什么?该怎么发音?<br/>
-<a href="#1.2">1.2</a>)PostgreSQL 的版权是什么?<br/>
-<a href="#1.3">1.3</a>)PostgreSQL 可以运行在哪些操作系统平台上?<br/>
-<a href="#1.4">1.4</a>)我从哪里能得到 PostgreSQL?<br/>
-<a href="#1.5">1.5</a>)我从哪里能得到对 PostgreSQL 的支持?<br/>
-<a href="#1.6">1.6</a>)我如何提交一个BUG报告?<br/>
-<a href="#1.7">1.7</a>)最新版的PostgreSQL 是什么?<br/>
-<a href="#1.8">1.8</a>)能够获取的最新文档有哪些?<br/>
-<a href="#1.9">1.9</a>)我如何了解已知的 BUG 或暂缺的功能?<br/>
-<a href="#1.10">1.10</a>)我应该怎样学习 SQL ?<br/>
-<a href="#1.11">1.11</a>)我应该怎样加入开发队伍?<br/>
-<a href="#1.12">1.12</a>)PostgreSQL 和其他数据库系统比起来如何?<br/>
-<a href="#1.13">1.13</a>)谁控制和管理PostgreSQL ?
-</p>
-
-<div><h2>用户客户端问题</h2></div>
-<p>
-<a href="#2.1">2.1</a>)我们可以用什么语言和 PostgreSQL 打交道?<br/>
-<a href="#2.2">2.2</a>)有什么工具可以把 PostgreSQL 用于 Web 页面?<br/>
-<a href="#2.3">2.3</a>)PostgreSQL 拥有图形用户界面吗?<br/>
-</p>
-
-<div><h2>系统管理问题</h2></div>
-<p>
-<a href="#3.1">3.1</a>)我怎样才能把 PostgreSQL 装在 /usr/local/pgsql 以外的地方?<br/>
-<a href="#3.2">3.2</a>)我如何控制来自其他主机的连接?<br/>
-<a href="#3.3">3.3</a>)我怎样调整数据库引擎以获得更好的性能?<br/>
-<a href="#3.4">3.4</a>)PostgreSQL 里可以获得什么样的调试特性?<br/>
-<a href="#3.5">3.5</a>)为什么在试图连接登录时收到“Sorry, too many clients” 消息?<br/>
-<a href="#3.6">3.6</a>)为什么要在升级 PostgreSQL 主要发布版本时做 dump 和 restore ?<br/>
-<a href="#3.7">3.7</a>)(使用PostgreSQL)我需要使用什么计算机硬件 ?<br/>
-</p>
-
-<div><h2>操作问题</h2></div>
-<p>
-<a href="#4.1">4.1</a>)如何只选择一个查询结果的头几行?或是随机的一行?<br/>
-<a href="#4.2">4.2</a>)如何查看表、索引、数据库以及用户的定义?如何查看<i>psql</i>里用到的查询指令并显示它们?<br/>
-<a href="#4.3">4.3</a>)如何更改一个字段的数据类型?<br/>
-<a href="#4.4">4.4</a>)一行记录,一个表,一个库的最大尺寸是多少?<br/>
-<a href="#4.5">4.5</a>)存储一个典型的文本文件里的数据需要多少磁盘空间?<br/>
-<a href="#4.6">4.6</a>)为什么我的查询很慢?为什么这些查询没有利用索引?<br/>
-<a href="#4.7">4.7</a>)我如何才能看到查询优化器是怎样评估处理我的查询的?<br/>
-<a href="#4.8">4.8</a>)我怎样做正则表达式搜索和大小写无关的正则表达式查找?怎样利用索引进行大小写无关查找?<br/>
-<a href="#4.9">4.9</a>)在一个查询里,我怎样检测一个字段是否为 NULL?我如何才能准确排序而不论某字段是否含NULL值?<br/>
-<a href="#4.10">4.10</a>)各种字符类型之间有什么不同?<br/>
-<a href="#4.11.1">4.11.1</a>)我怎样创建一个序列号/自动递增的字段?<br/>
-<a href="#4.11.2">4.11.2</a>)我如何获得一个插入的序列号的值?<br/>
-<a href="#4.11.3">4.11.3</a>)使用 currval() 会导致和其他用户的紊乱情况(race condition)吗?<br/>
-<a href="#4.11.4">4.11.4</a>)为什么不在事务异常中止后重用序列号呢?为什么在序列号字段的取值中存在间断呢?<br/>
-<a href="#4.12">4.12</a>)什么是 OID?什么是 CTID ?<br/>
-<a href="#4.13">4.13</a>)为什么我收到错误信息“<i>ERROR: Memory exhausted in AllocSetAlloc()</i>”?<br/>
-<a href="#4.14">4.14</a>)我如何才能知道所运行的 PostgreSQL 的版本?<br/>
-<a href="#4.15">4.15</a>)我如何创建一个缺省值是当前时间的字段?<br/>
-<a href="#4.16">4.16</a>)如何进行 outer join (外连接)?<br/>
-<a href="#4.17">4.17</a>)如何使用涉及多个数据库的查询?<br/>
-<a href="#4.18">4.18</a>)如何让函数返回多行或多列?<br/>
-<a href="#4.19">4.19</a>)为什么我在使用PL/PgSQL函数存取临时表时会收到错误信息“relation with OID ##### does not exist”?<br/>
-<a href="#4.20">4.20</a>)目前有哪些数据复制方案可用?<br/>
-</p>
-
-<hr/>
-
-<div><h2>常见问题</h2></div>
-
-<h4><a name="1.1"></a>1.1)PostgreSQL 是什么?该怎么发音?</h4>
-<p>
-PostgreSQL 读作 <i>Post-Gres-Q-L</i>,有时候也简称为<i>Postgres</i> 。
-</p>
-<p>
- PostgreSQL 是面向目标的关系数据库系统,它具有传统商业数据库系统的所有功能,同时又含有将在下一代 DBMS 系统的使用的增强特性。
- PostgreSQL 是自由免费的,并且所有源代码都可以获得。
-</p>
-
-<p>
- PostgreSQL 的开发队伍主要为志愿者,他们遍布世界各地并通过互联网进行联系,这是一个社区开发项目,它不被任何公司控制。
- 如想加入开发队伍,请参见开发人员常见问题(FAQ)
- <a href="http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html">http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html</a>
-</p>
-
-
-<h4><a name="1.2"></a>1.2)PostgreSQL 的版权是什么?</h4>
-<p>
-PostgreSQL的发布遵从经典的BSD版权。关于源代码的如何使用没有任何限制,我们很喜欢这种方式并且还没有打算改变它。
-</p>
-<p>
-下面就是我们使用的BSD版权内容:
-</p>
-
-<p>
- 部分版权(c)1996-2005,PostgreSQL 全球开发小组,部分版权(c)1994-1996 加州大学董事
-</p>
-
-<p>
- (Portions copyright (c) 1996-2005, PostgreSQL Global Development Group Portions Copyright (c) 1994-6 Regents of the University of California)
-</p>
-
-<p>
- 允许为任何目的使用,拷贝,修改和分发这个软件和它的文档而不收取任何费用,
- 并且无须签署因此而产生的证明,前提是上面的版权声明和本段以及下面两段文字出现在所有拷贝中。
-</p>
-
-<p>
- (Permission to use, copy, modify, and distribute this software and its
- documentation for any purpose, without fee, and without a written agreement is
- hereby granted, provided that the above copyright notice and this paragraph and
- the following two paragraphs appear in all copies.)
-</p>
-
-<p>
- 在任何情况下,加州大学都不承担因使用此软件及其文档而导致的对任何当事人的直接的,
- 间接的,特殊的,附加的或者相伴而生的损坏,包括利益损失的责任,即使加州大学已经建议了这些损失的可能性时也是如此。
-</p>
-
-<p>
- (IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
- DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST
- PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
- THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
- DAMAGE.)
-</p>
-
-<p>
- 加州大学明确放弃任何保证,包括但不局限于某一特定用途的商业和利益的隐含保证。
- 这里提供的这份软件是基于“当作是”的基础的,因而加州大学没有责任提供维护,支持,更新,增强或者修改的服务。
-</p>
-
-<p>
- (THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT
- NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND
- THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE,
- SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.)<br/>
-
-</p>
-
-<h4><a name="1.3"></a>1.3)PostgreSQL 可以运行在哪些操作系统平台上?</h4>
-
-<p>
- 一般说来,一个现代的 UNIX 兼容的平台都能运行 PostgreSQL 。在安装指南里列出了发布时经过明确测试的平台。
-</p>
-
-<p>
- PostgreSQl也可以直接运行在基于微软Windows-NT的操作系统,如Win2000,WinXP 和 Win2003,已制作完成的安装包可从
- <a href="http://pgfoundry.org/projects/pginstaller">http://pgfoundry.org/projects/pginstaller</a>下载,基于MSDOS的Windows操作系统
- (Win95,Win98,WinMe)需要通过Cygwin模拟环境运行PostgreSQL。
-</p>
-
-<p>
- 同时也有一个为Novell Netware 6开发的版本可从<a href="http://forge.novell.com"> http://forge.novell.com </a>获取,为OS/2开发的版本可从
- <a href="http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&amp;button=Search&amp;key=postgreSQL&amp;stype=all&amp;sort=type&amp;dir=%2F">
- http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&amp;button=Search&amp;key=postgreSQL&amp;stype=all&amp;sort=type&amp;dir=%2F</a>
-</p>
-
-<h4><a name="1.4"></a>1.4)我从哪里能得到 PostgreSQL?</h4>
-
-<p>
- 通过浏览器可从<a href="http://www.postgresql.org/ftp/">http://www.postgresql.org/ftp/</a>下载,也可通过FTP,从
- <a href="ftp://ftp.PostgreSQL.org/pub/">ftp://ftp.PostgreSQL.org/pub/</a>站点下载。
-</p>
-
-
-<h4><a name="1.5"></a>1.5)我从哪里能得到对 PostgreSQL 的支持?</h4>
-<p>
- PostgreSQL社区通过邮件列表为其大多数用户提供帮助,加入邮件列表的主站点是<a href="http://www.postgresql.org/community/lists/"> http://www.postgresql.org/community/lists/</a>,一般情况下,先加入<i>General</i> 或 <i>Bug</i>邮件列表是一个较好的开始。
-</p>
-
-<p>
- 主要的IRC频道是在FreeNode(<i>irc.freenode.net</i>)的<i>#postgresql</i>,为了连上此频道,可以使用UNIX程序irc,其指令格式:
- irc -c '#postgresql' "$USER" irc.freenode.net ,或者使用其他IRC客户端程序。在此网络中还存在一个PostgreSQL的西班牙频道(<i>#postgersql-es</i>)和法语频道
- (<i>#postgresql-fr</i>)。同样地,在EFNET上也有一个PostgreSQL的交流频道。
-</p>
-
-<p>
- 商业支持公司的列表在<a href=" http://techdocs.postgresql.org/companies.php"> http://techdocs.postgresql.org/companies.php</a>。
-</p>
-
-
-
-<h4><a name="1.6"></a>1.6)我如何提交一个BUG报告?</h4>
-<p>
- 可访问 <a href="http://www.postgresql.org/support/submitbug">http://www.postgresql.org/support/submitbug</a>,填写Bug上报表格即可。
-</p>
-
-<p>
- 同样也可访问ftp站点<a href="ftp://ftp.PostgreSQL.org/pub/">ftp://ftp.PostgreSQL.org/pub/</a> 检查有无更新的PostgreSQL版本或补丁。
-</p>
-
-
-
-<h4><a name="1.7"></a>1.7)最新版的PostgreSQL 是什么?</h4>
-<p>
- PostgreSQL 最新的版本是版本 8.0.2 (译注:现最新版本为8.0.3)。
-</p>
-
-<p>
- 我们计划每年发布一个主要版本,每几个月发布一个小版本。
-</p>
-
-
-<h4><a name="1.8"></a>1.8)能够获取的最新文档有哪些?</h4>
-
-<p>
- PostgreSQL包含大量的文档,主要有一些手册,手册页和一些的测试例子。参见 /doc 目录(译注:应为 $PGHOME/doc)。
- 你还可以在线浏览 PostgreSQL 的手册,其地址是:<a href="http://www.PostgreSQL.org/docs">http://www.PostgreSQL.org/docs</a>。
-</p>
-<p>
- 有两本关于 PostgreSQL 的书在线提供,在
- <a href="http://www.PostgreSQL.org/docs/awbook.html">http://www.PostgreSQL.org/docs/awbook.html</a>
- 和 <a href="http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook/</a> 。
- 也有大量的PostgreSQL书籍可供购买,其中最为流行的一本是由Korry Douglas编写的。在
- <a href="http://techdocs.PostgreSQL.org/techdocs/bookreviews.php">http://techdocs.PostgreSQL.org/techdocs/bookreviews.php</a>上
- 上有大量有关PostgreSQL书籍的简介。
- 在 <a href="http://techdocs.PostgreSQL.org/">http://techdocs.PostgreSQL.org/</a>上收集了有关 PostgreSQL 的大量技术文章。
-</p>
-
-<p>
- 客户端的命令行程序<i>psql</i>有一些以 \d 开头的命令,可显示关于类型,操作符,函数,汇总等的信息,使用 \? 可以显示所有可用的命令。
-</p>
-
-<p>
- 我们的 web 站点包含更多的文档。
-</p>
-
-<h4><a name="1.9"></a>1.9)我如何了解已知的 BUG 或暂缺的功能?</h4>
-<p>
- PostgreSQL 支持一个扩展了的 SQL-92 的子集。参阅我们的<a href="http://www.postgresql.org/docs/faqs.TODO.html">TODO</a> 列表,获取一个已知Bug,暂缺的功能和将来的计划。
-</p>
-
-
-<h4><a name="1.10"></a>1.10)我应该怎样学习 SQL ?</h4>
-<p>
- 首先考虑上述提到的与PostgreSQL相关的书籍,另外一本是<i>Teach Yourself SQL in 21 Days, Second Edition</i>,
- 我们的许多用户喜欢<i>The Practical SQL Handbook</i> Bowman, Judith S., et al., Addison-Wesley,其他的则喜欢
- <i>The Complete Reference SQL</i>, Groff et al., McGraw-Hill。
-</p>
-
-
-<h4><a name="1.11"></a>1.11)我应该怎样加入开发队伍?</h4>
-<p>
- 详见<a href="http://www.postgresql.org/docs/faqs.FAQ_DEV.html"> Developer's FAQ </a>。
-</p>
-
-
-<h4><a name="1.12"></a>1.12)PostgreSQL 和其他数据库系统比起来如何?</h4>
-<p>
-评价软件有好几种方法:特性,性能,可靠性,支持和价格。
-</p>
-<dl>
- <dt><b>特性</b></dt>
- <dd>
- PostgreSQL 拥有大型商用 DBMS 里大多数特性,
- 例如:事务,子查询,触发器,视图,外键参考完整性和复杂的锁等。
- 我们还有一些它们没有的特性,如用户定义类型,继承,规则和多版本并行控制以减少锁的争用等。<br/>
- </dd>
-
- <dt><b>性能</b></dt>
- <dd>
- PostgreSQL 和其他商用和开源的数据库具有类似的性能。
- 对某些处理它比较快,对其他一些处理它比较慢。
- 与其他数据库相比,我们的性能通常在 +/- 10%之间。<br/>
- </dd>
-
- <dt><b>可靠性</b></dt>
- <dd>
- 我们知道 DBMS 必须是可靠的,否则它就一点用都没有。
- 我们努力做到发布经过认真测试的,稳定的臭虫最少的代码。每个版本至少有一个月的 beta
- 测试时间,并且我们的发布历史显示我们可以提供稳定的,牢固的,可用于生产使用的版本。我们相信
- 在这方面我们与其他的数据库软件是相当的。<br/>
- </dd>
-
- <dt><b>支持</b></dt>
- <dd>
- 我们的邮件列表提供一个非常大的开发人员和用户的组以帮助解决所碰到的任何问题。
- 我们不能保证肯定能解决问题,相比之下,商用 DBMS 也并不是总能够提供解决方法。
- 直接与开发人员,用户群,手册和源程序接触令 PostgreSQL 的支持比其他 DBMS
- 还要好。还有一些商业性的预包装的支持,可以给提供给那些需要的人。(参阅 FAQ 条款 1.5 小节)<br/>
- </dd>
-
- <dt><b>价格</b></dt>
- <dd>
- 我们对任何用途都免费,包括商用和非商用目的。
- 你可以不加限制地向你的产品里加入我们的代码,除了那些我们在上面的版权声明里声明的 BSD 风格的版权外。
- </dd>
-
-</dl>
-
-
-<h4><a name="1.13"></a>1.13)谁控制PostgreSQL ?</h4>
-<p>
- 如果你在寻找PostgreSQL的掌门人,或是什么中央委员会,或是什么所属公司,你只能放弃了---因为一个也不存在,但我们的确有一个
- 委员会和CVS管理组,但这些工作组的设立主要是为了进行管理工作而不是对PostgreSQL进行控制,PostgreSQL项目是由任何人均
- 可参加的开发人员社区和所有用户控制的,你所需要做的就是加入邮件列表,参与讨论即可(要参与PostgreSQL的开发详见
- <a href="http://www.postgresql.org/docs/faqs.FAQ_DEV.html"> Developer's FAQ </a>获取信息)。
-</p>
-
-<hr/>
-
-
-<div> <h2>用户客户端问题</h2> </div>
-
-<h4><a name="2.1"></a>2.1)我们可以用什么语言和 PostgreSQL 打交道?</h4>
-<p>
- PostgreSQL(缺省情况)只安装有C和内嵌式C的接口,其他的接口都是独立的项目,能够分别下载,这些接口项目独立的好处
- 是他们可以有各自的发布计划和各自独立的开发组。
-</p>
-<p>
- 一些编程语言如PHP都有访问 PostgreSQL 的接口,Perl,TCL,Python以及很多其他语言的接口在
- <a href="http://gborg.postgresql.org/"> http://gborg.postgresql.org </a>上的<i>Drivers/Interfaces</i>小节可找到,
- 并且通过Internet很容易搜索到。
-</p>
-
-
-
-<h4><a name="2.2"></a>2.2)有什么工具可以把 PostgreSQL 用于 Web 页面?</h4>
-<p>
- 一个介绍以数据库为后台的挺不错的站点是:<a href="http://www.webreview.com">http://www.webreview.com</a>。
-</p>
-<p>
- 对于 Web 集成,PHP 是一个极好的接口。它在:<a href="http://www.php.net/">http://www.php.net/</a>。
-</p>
-<p>
- 对于复杂的任务,很多人采用 Perl 接口和 CGI.pm 或 mod_perl 。
-</p>
-
-
-<h4><a name="2.3"></a>2.3)PostgreSQL 拥有图形用户界面吗?</h4>
-<p>
- 是的,在 <a href="http://techdocs.postgresql.org/guides/GUITools">http://techdocs.postgresql.org/guides/GUITools</a>有一个详细的列表。
-</p>
-
-
-
-<hr/>
-
-<div> <h2>系统管理问题</h2> </div>
-
-<h4><a name="3.1"></a>3.1)我怎样能把 PostgreSQL 装在 /usr/local/pgsql 以外的地方?</h4>
-<p>
- 在运行 configure 时加上 --prefix 选项。
-</p>
-
-
-<h4><a name="3.2"></a>3.2)我如何控制来自其他主机的连接?</h4>
-<p>
- 缺省时,PostgreSQL 只允许通过 unix 域套接字或TCP/IP方式且来自本机的连接。
- 你只有在修改了配置文件<i>postgresql.conf</i>中的<i>listen_addresses</i>,且也在配置文件<i>pg_hba.conf</i>中打开了
- 主机为基础( host-based )的身份认证,并重新启动PostgreSQL,否则其他机器是不能与你的PostgreSQL服务器连接的。
-</p>
-
-
-<h4><a name="3.3"></a>3.3)我怎样调整数据库引擎以获得更好的性能?</h4>
-<p>
- 有三个主要方面可以提升PostgreSQL的潜能。
-</p>
-
-<dl>
- <dt><b>查询方式的变化</b></dt>
- <dd>
- 这主要涉及修改查询方式以获取更好的性能:
- <ul>
- <li>创建索引,包括表达式和部分索引;</li>
- <li>使用COPY语句代替多个Insert语句;</li>
- <li>将多个SQL语句组成一个事务以减少提交事务的开销;</li>
- <li>从一个索引中提取多条记录时使用CLUSTER;</li>
- <li>从一个查询结果中取出部分记录时使用LIMIT;</li>
- <li>使用预编译式查询(Prepared Query);</li>
- <li>使用ANALYZE以保持精确的优化统计;</li>
- <li>定期使用 VACUUM 或 <i>pg_autovacuum</i></li>
- <li>进行大量数据更改时先删除索引(然后重建索引)</li>
- </ul>
- </dd>
-
- <dt><b>服务器的配置</b></dt>
- <dd>
- 配置文件<i>postgres.conf</i>中的很多设置都会影响性能,所有参数的列表可见:
- <a href="http://www.postgresql.org/docs/current/static/runtime.html">Administration Guide/Server Run-time Environment/Run-time Configuration</a>,
- 有关参数的解释可见:<a href="http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_conf_e.html">
- http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_conf_e.html </a> 和
- <a href="http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html">http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html</a>。
- </dd>
-
- <dt><b>硬件的选择</b></dt>
- <dd>
- 计算机硬件对性能的影响可浏览 <a href="http://candle.pha.pa.us/main/writings/pgsql/hw_performance/index.html">
- http://candle.pha.pa.us/main/writings/pgsql/hw_performance/index.html</a> 和
- <a href="http://www.powerpostgresql.com/PerfList/">http://www.powerpostgresql.com/PerfList/</a>。
- </dd>
-
-</dl>
-
-
-<h4><a name="3.4"></a>3.4)PostgreSQL 里可以获得什么样的调试特性?</h4>
-<p>
- PostgreSQL 有很多类似<i> log_* </i>的服务器配置变量可用于查询的打印和进程统计,而这些工作对调试和性能测试很有帮助。
-</p>
-
-
-
-<h4><a name="3.5"></a>3.5)为什么在试图连接时收到“Sorry, too many clients”消息?</h4>
-<p>
- 这表示你已达到缺省100个并发后台进程数的限制,你需要通过修改<i>postgresql.conf</i>文件中的<i>max_connections</i>值来
- 增加postmaster的后台并发处理数,修改后需重新启动<i>postmaster</i>。
-</p>
-
-
-<h4><a name="3.6"></a>3.6)为什么要在升级 PostgreSQL 主要发布版本时做 dump 和 restore ?</h4>
-<p>
- PostgreSQL 开发组对每次小的升级仅做了较少的修改,因此从 7.4.0 升级到 7.4.1 不需要 dump 和 restore。
- 但是主要的升级(例如从 7.3 到 7.4)通常会修改系统表和数据表的内部格式。
- 这些变化一般比较复杂,因此我们不维数据文件的向后兼容。
- dump 将数据按照通用的格式输出,随后可以被重新加载并使用新的内部格式。
-</p>
-
-<h4><a name="3.7"></a>3.7)(使用PostgreSQL)我需要使用什么计算机硬件 ?</h4>
-<p>
- 由于计算机硬件大多数是兼容的,人们总是倾向于相信所有计算机硬件质量也是相同的。事实上不是,
- ECC RAM(带奇偶校验的内存),SCSI (硬盘)和优质的主板比一些便宜货要更加可靠且具有更好的性能。PostgreSQL几乎可以运行在任何硬件上,
- 但如果可靠性和性能对你的系统很重要,你就需要全面的研究一下你的硬件配置了。在我们的邮件列表上也有关于
- 硬件配置和性价比的讨论。
-</p>
-
-
-<hr/>
-
-<div><h2>操作问题</h2> </div>
-
-
-<h4><a name="4.1"></a>4.1)如何只选择一个查询结果的头几行?或是随机的一行?</h4>
-<p>
- 如果你只是要提取几行数据,并且你在执行查询中知道确切的行数,你可以使用LIMIT功能。
- 如果有一个索引与 <i> ORDER BY</i>中的条件匹配,PostgreSQL 可能就只处理要求的头几条记录,
- (否则将对整个查询进行处理直到生成需要的行)。如果在执行查询功能时不知道确切的记录数,
- 可使用游标(cursor)和FETCH功能。
-</p>
-<p>
- 可使用以下方法提取一行随机记录的:
-</p>
-<pre>
- SELECT cols
- FROM tab
- ORDER BY random()
- LIMIT 1 ;
-</pre>
-
-
-
-<h4><a name="4.2"></a>4.2)如何查看表、索引、数据库以及用户的定义?如何查看<i>psql</i>里用到的查询指令并显示它们?</h4>
-<p>
- 在<i>psql</i>中使用 \dt 命令来显示数据表的定义,要了解<i>psql</i>中的完整命令列表可使用\? ,另外,你也可以阅读 <i>psql</i> 的源代码
- 文件<i>pgsql/src/bin/psql/describe.c</i>,它包括为生成<i>psql</i>反斜杠命令的输出的所有 SQL 命令。你还可以带 <i>-E</i> 选项启动 <i>psql</i>,
- 这样它将打印出执行你在<i>psql</i>中所给出的命令的内部实际使用的SQL查询。PostgreSQL也提供了一个兼容SQL的INFORMATION SCHEMA接口,
- 你可以从这里获取关于数据库的信息。
-</p>
-<p>
- 在系统中有一些以<i>pg_</i> 打头的系统表也描述了表的定义。
-</p>
-<p>
- 使用 <i>psql -l</i> 指令可以列出所有的数据库。
-</p>
-<p>
- 也可以浏览一下 <i>pgsql/src/tutorial/syscat.source</i>文件,它列举了很多可从数据库系统表中获取信息的SELECT语法。
-</p>
-
-
-<h4><a name="4.3"></a>4.3)如何更改一个字段的数据类型?</h4>
-<p>
- 在8.0版本里更改一个字段的数据类型很容易,可使用 ALTER TABLE ALTER COLUMN TYPE 。
-</p>
-<p>
- 在以前的版本中,可以这样做:
-</p>
-<pre>
- BEGIN;
- ALTER TABLE tab ADD COLUMN new_col new_data_type;
- UPDATE tab SET new_col = CAST(old_col AS new_data_type);
- ALTER TABLE tab DROP COLUMN old_col;
- COMMIT;
-</pre>
-<p>
- 你然后可以使用<i>VACUUM FULL tab </i>指令来使系统收回无效数据所占用的空间。
-</p>
-
-<h4><a name="4.4"></a>4.4)一行记录,一个表,一个库的最大尺寸是多少?</h4>
-<p>
- 下面是一些限制:
-</p>
-<blockquote>
- <table>
- <tbody>
- <tr><td>一个数据库最大尺寸?</td><td>无限制(已存在有 32TB 的数据库)</td></tr>
- <tr><td>一个表的最大尺寸?</td><td>32 TB</td></tr>
- <tr><td>一行记录的最大尺寸?</td><td>1.6 TB</td></tr>
- <tr><td>一个字段的最大尺寸?</td><td>1 GB</td></tr>
- <tr><td>一个表里最大行数?</td><td>无限制</td></tr>
- <tr><td>一个表里最大列数?</td><td>250-1600 (与列类型有关)</td></tr>
- <tr><td>一个表里的最大索引数量?</td><td>无限制</td></tr>
- </tbody>
-</table>
-</blockquote>
-
-<p>
- 当然,实际上没有真正的无限制,还是要受可用磁盘空间、可用内存/交换区的制约。
- 事实上,当这些数值变得异常地大时,系统性能也会受很大影响。
-</p>
-
-<p>
- 表的最大尺寸 32 TB 不需要操作系统对大文件的支持。大表用多个 1 GB 的文件存储,因此文件系统尺寸的限制是不重要的。
-</p>
-<p>
- 如果缺省的块大小增长到 32K ,最大的表尺寸和最大列数还可以增加到四倍。
-</p>
-
-
-<h4><a name="4.5"></a>4.5)存储一个典型的文本文件里的数据需要多少磁盘空间?</h4>
-<p>
- 一个 Postgres 数据库(存储一个文本文件)所占用的空间最多可能需要相当于这个文本文件自身大小5倍的磁盘空间。
-</p>
-<p>
- 例如,假设有一个 100,000 行的文件,每行有一个整数和一个文本描述。
- 假设文本串的平均长度为20字节。文本文件占用 2.8 MB。存放这些数据的 PostgreSQL 数据库文件大约是 6.4 MB:
-</p>
-<pre>
- 32 字节: 每行的头(估计值)
- 24 字节: 一个整数型字段和一个文本型字段
- + 4 字节: 页面内指向元组的指针
- ----------------------------------------
- 60 字节每行
-
- PostgreSQL 数据页的大小是 8192 字节 (8 KB),则:
-
- 8192 字节每页
- ------------------- = 136 行/数据页(向下取整)
- 60 字节每行
-
- 100000 数据行
- -------------------- = 735 数据页(向上取整)
- 128 行每页
-
- 735 数据页 * 8192 字节/页 = 6,021,120 字节(6 MB)
-</pre>
-
-<p>
- 索引不需要这么多的额外消耗,但也确实包括被索引的数据,因此它们也可能很大。
-</p>
-<p>
- 空值<i>NULL</i>存放在位图中,因此占用很少的空间。
-</p>
-
-<h4><a name="4.6"></a>4.6)为什么我的查询很慢?为什么这些查询没有利用索引?</h4>
-<p>
- 并非每个查询都会自动使用索引。只有在表的大小超过一个最小值,并且查询只会选中表中较小比例的记录时才会采用索引。
- 这是因为索引扫描引起的随即磁盘存取可能比直接地读取表(顺序扫描)更慢。
-</p>
-<p>
- 为了判断是否使用索引,PostgreSQL必须获得有关表的统计值。这些统计值可以使用 VACUUM ANALYZE,或 ANALYZE 获得。
- 使用统计值,优化器知道表中有多少行,就能够更好地判断是否利用索引。
- 统计值对确定优化的连接顺序和连接方法也很有用。在表的内容发生变化时,应定期进行统计值的更新收集。
-</p>
-<p>
- 索引通常不用于 ORDER BY 或执行连接。对一个大表的一次顺序扫描,再做一个显式的排序通常比索引扫描要快。
-</p>
-
-<p>
- 但是,在 LIMIT 和 ORDER BY 结合使用时经常会使用索引,因为这只会返回表的一小部分。
- 实际上,虽然 MAX() 和 MIN() 并不使用索引,通过对
- ORDER BY 和 LLIMIT 使用索引取得最大值和最小值也是可以的:
-</p>
-<pre>
- SELECT col
- FROM tab
- ORDER BY col [ DESC ]
- LIMIT 1;
-</pre>
-<p>
- 如果你确信PostgreSQL的优化器使用顺序扫描是不正确的,你可以使用<code>SET enable_seqscan TO 'off'</code>指令,
- 然后再次运行查询,你就可以看出使用一个索引扫描是否确实要快一些。
-</p>
-
-<p>
- 当使用通配符操作,例如 <i>LIKE</i> 或 <i>~</i> 时,索引只能在特定的情况下使用:
-</p>
-<ul>
- <li>字符串的开始部分必须是普通字符串,也就是说:
- <ul>
- <li> <i>LIKE</i> 模式不能以 <i>%</i> 打头。</li>
- <li> <i>~</i> (正则表达式)模式必须以 <i>^</i> 打头。</li>
- </ul>
- </li>
- <li>字符串不能以匹配多个字符的模式类打头,例如 [a-e]。</li>
- <li>大小写无关的查找,如 ILIKE 和 ~* 等不使用索引,但可以用 <a href="#4.8">4.8</a> 节描述的函数索引。</li>
- <li>在做 initdb 时必须采用缺省的本地设置 C locale,因为系统不可能知道在非C locale情况时下一个最大字符是什么。
- 在这种情况下,你可以创建一个特殊的<code>text_pattern_ops</code>索引来用于<small>LIKE</small>的索引。
- </li>
-</ul>
-<p>
- 在8.0之前的版本中,除非要查询的数据类型和索引的数据类型相匹配,否则索引经常是未被用到,特别是对int2,int8和数值型的索引。
-</p>
-
-<h4><a name="4.7"></a>4.7)我如何才能看到查询优化器是怎样评估处理我的查询?</h4>
-<p>
- 参考 <small>EXPLAIN</small> 手册页。
-</p>
-
-<h4><a name="4.8"></a>4.8)我怎样做正则表达式搜索和大小写无关的正则表达式查找?怎样利用索引进行大小写无关查找?</h4>
-<p>
- 操作符 <i> ~ </i> 处理正则表达式匹配,而 <i>~*</i> 处理大小写无关的正则表达式匹配。大写些无关的 LIKE 变种成为 ILIKE。
-</p>
-<p>
- 大小写无关的等式比较通常写做:
-</p>
-<pre> SELECT *
- FROM tab
- WHERE lower(col) = 'abc';
-</pre>
-<p>
- 这样将不会使用标准的索引。但是可以创建一个可被利用的函数索引:
-</p>
-<pre> CREATE INDEX tabindex ON tab (lower(col));
-</pre>
-
-<h4><a name="4.9"></a>4.9)在一个查询里,我怎样检测一个字段是否为 <i>NULL</i> ?我如何才能准确排序而不论某字段是否含 <i>NULL</i> 值?</h4>
-<p>
- 用 <small>IS NULL</small> 和 <small>IS NOT NULL</small> 测试这个字段,具体方法如下:
-</p>
-<pre> SELECT *
- FROM tab
- WHERE col IS NULL;
-</pre>
-
-<p>为了能对含 <small>NULL</small>字段排序,可在 <small>ORDER BY</small> 条件中使用 <small>IS NULL</small>和
- <small>IS NOT NULL</small> 修饰符,条件为真 <i>true</i> 将比条件为假<i>false</i> 排在前面,下面的例子就会将含
- NULL 的记录排在结果的上面部分:
-</p>
-<pre> SELECT *
- FROM tab
- ORDER BY (col IS NOT NULL)
-</pre>
-
-<h4><a name="4.10"></a>4.10)各种字符类型之间有什么不同?</h4>
-<blockquote>
- <table>
- <tbody>
- <tr><th>类型</th><th>内部名称</th><th>说明</th></tr>
- <tr><td>VARCHAR(n)</td><td>varchar</td><td>指定了最大长度,变长字符串,不足定义长度的部分不补齐</td></tr>
- <tr><td>CHAR(n)</td><td>bpchar</td><td>定长字符串,实际数据不足定义长度时,以空格补齐</td></tr>
- <tr><td>TEXT</td><td>text</td><td>没有特别的上限限制(仅受行的最大长度限制)</td></tr>
- <tr><td>BYTEA</td><td>bytea</td><td>变长字节序列(使用NULL也是允许的)</td></tr>
- <tr><td>"char"</td><td>char</td><td>一个字符</td></tr>
- </tbody>
- </table>
-</blockquote>
-
-<p>
- 在系统表和在一些错误信息里你将看到内部名称。
-</p>
-<p>
- 上面所列的前四种类型是"varlena"(变长)类型(也就是说,开头的四个字节是长度,后面才是数据)。
- 于是实际占用的空间比声明的大小要多一些。
- 然而这些类型都可以被压缩存储,也可以用 TOAST 脱机存储,因此磁盘空间也可能比预想的要少。
-</p>
-<p>
- <small>VARCHAR(n)</small> 在存储限制了最大长度的变长字符串是最好的。
- <small>TEXT</small> 适用于存储最大可达 1G左右但未定义限制长度的字符串。
-</p>
-<p>
- <small>CHAR(n)</small> 最适合于存储长度相同的字符串。 <small>CHAR(n)</small>会根据所给定的字段长度以空格补足(不足的字段内容),
- 而 <small>VARCHAR(n)</small> 只存储所给定的数据内容。
- <small>BYTEA</small> 用于存储二进制数据,尤其是包含 NULL 字节的值。这些类型具有相似的性能特性。
-</p>
-
-
-
-<h4><a name="4.11.1"></a>4.11.1)我怎样创建一个序列号/自动递增的字段?</h4>
-<p>
- PostgreSQL 支持 SERIAL 数据类型。它在字段上自动创建一个序列和索引。例如:
-</p>
-<pre>
- CREATE TABLE person (
- id SERIAL,
- name TEXT
- );
-</pre>
-<p>
- 会自动转换为:
-</p>
-<pre>
- CREATE SEQUENCE person_id_seq;
- CREATE TABLE person (
- id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
- name TEXT
- );
-</pre>
-<p>
- 参考 create_sequence 手册页获取关于序列的更多信息。
-</p>
-
-
-<h4><a name="4.11.2"></a>4.11.2)我如何获得一个插入的序列号的值?</h4>
-<p>
- 一种方法是在插入之前先用函数 nextval() 从序列对象里检索出下一个 SERIAL 值,然后再显式插入。使用
- <a href="#4.11.1"> 4.11.1</a> 里的例表,可用伪码这样描述:
-</p>
-<pre>
- new_id = execute("SELECT nextval('person_id_seq')");
- execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
-</pre>
-<p>
- 这样还能在其他查询中使用存放在 new_id 里的新值(例如,作为 person 表的外键)。
- 注意自动创建的 SEQUENCE 对象的名称将会是 &lt;<i>table</i>&gt;_&lt;<i>serialcolumn</i>&gt;_<i>seq</i>,
- 这里 table 和 serialcolumn 分别是你的表的名称和你的 SERIAL 字段的名称。
-</p>
-<p>
- 类似的,在 SERIAL 对象缺省插入后你可以用函数 currval() 检索刚赋值的 SERIAL 值,例如:
-</p>
-<pre>
- execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
- new_id = execute("SELECT currval('person_id_seq')");
-</pre>
-
-<h4><a name="4.11.3"></a>4.11.3)使用 <i>currval()</i> 会导致和其他用户的冲突情况(race condition)吗?</h4>
-<p>
- 不会。<i>currval()</i> 返回的是你本次会话进程所赋的值而不是所有用户的当前值。<br/>
-</p>
-
-<h4><a name="4.11.4"></a>4.11.4)为什么不在事务异常中止后重用序列号呢?为什么在序列号字段的取值中存在间断呢?</h4>
-<p>
- 为了提高并发性,序列号在需要的时候赋予正在运行的事务,并且在事务结束之前不进行锁定,
- 这就会导致异常中止的事务后,序列号会出现间隔。
-</p>
-
-<h4><br/><a name="4.12"></a>4.12)什么是 <small>OID</small> ?什么是 <small>CTID</small> ?</h4>
-<p>
- PostgreSQL 里创建的每一行记录都会获得一个唯一的<small>OID</small>,除非在创建表时使用<small>WITHOUT OIDS</small>选项。
- <small>OID</small>创建时会自动生成一个4字节的整数,所有 OID 在整个 PostgreSQL 中均是唯一的。 然而,它在超过40亿时将溢出,
- <small>OID</small>此后会出现重复。PostgreSQL 在它的内部系统表里使用 OID 在表之间建立联系。
-</p>
-<p>
- 在用户的数据表中,最好是使用<small>SERIAl</small>来代替<small>OID</small>
- 因为<small>SERIAL</small>只是保证在单个表中数据是唯一的,这样它溢出的可能性就非常小了,
- <small>SERIAL8</small>可用来保存8字节的序列号字段。
-</p>
-
-<p>
- <small>CTID</small> 用于标识带着数据块(地址)和(块内)偏移的特定的物理行。
- <small>CTID</small> 在记录被更改或重载后发生改变。索引入口使用它们指向物理行。
-</p>
-
-
-<h4><a name="4.13"></a>4.13)为什么我收到错误信息“<i>ERROR: Memory exhausted in AllocSetAlloc()</i>”?</h4>
-<p>
- 这很可能是系统的虚拟内存用光了,或者内核对某些资源有较低的限制值。在启动 postmaster 之前试试下面的命令:
-</p>
-<pre>
- ulimit -d 262144
- limit datasize 256m
-</pre>
-<p>
- 取决于你用的 shell,上面命令只有一条能成功,但是它将把你的进程数据段限制设得比较高,
- 因而也许能让查询完成。这条命令应用于当前进程,以及所有在这条命令运行后创建的子进程。
- 如果你是在运行SQL客户端时因为后台返回了太多的数据而出现问题,请在运行客户端之前执行上述命令。
-</p>
-
-<h4><a name="4.14"></a>4.14)我如何才能知道所运行的 PostgreSQL 的版本?</h4>
-<p>
- 从 psql 里,输入 <code>SELECT version();</code>指令。
-</p>
-
-<h4><a name="4.15"></a>4.15)我如何创建一个缺省值是当前时间的字段?</h4>
-<p>
- 使用 CURRENT_TIMESTAMP:
-</p>
-<pre>
- CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
-</pre>
-
-
-<h4><a name="4.16"></a>4.16)我怎样进行 outer join (外连接)?</h4>
-<p>
- PostgreSQL 采用标准的 SQL 语法支持外连接。这里是两个例子:
-</p>
-<pre>
- SELECT *
- FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
-</pre>
-<p>或是</p>
-<pre>
- SELECT *
- FROM t1 LEFT OUTER JOIN t2 USING (col);
-</pre>
-<p>
- 这两个等价的查询在 t1.col 和 t2.col 上做连接,并且返回 t1 中所有未连接的行(那些在 t2 中没有匹配的行)。
- 右[外]连接(RIGHT OUTER JOIN)将返回 t2 中未连接的行。
- 完全外连接(FULL OUTER JOIN)将返回 t1 和 t2 中未连接的行。
- 关键字 OUTER 在左[外]连接、右[外]连接和完全[外]连接中是可选的,普通连接被称为内连接(INNER JOIN)。
-</p>
-
-
-<h4><a name="4.17"></a>4.17)如何使用涉及多个数据库的查询?</h4>
-<p>
- 没有办法查询当前数据库之外的数据库。
- 因为 PostgreSQL 要加载与数据库相关的系统目录(系统表),因此跨数据库的查询如何执行是不定的。
-</p>
-<p>
- 附加增值模块contrib/dblink允许采用函数调用实现跨库查询。当然用户也可以同时连接到不同的数据库执行查询然后在客户端合并结果。
-</p>
-
-<h4><a name="4.18"></a>4.18)如何让函数返回多行或多列?</h4>
-<p>
- 在函数中返回数据记录集的功能是很容易使用的,详情参见:
- <a href="http://techdocs.postgresql.org/guides/SetReturningFunctions">http://techdocs.postgresql.org/guides/SetReturningFunctions</a>
-</p>
-
-<h4><a name="4.19"></a>4.19)为什么我在使用PL/PgSQL函数存取临时表时会收到错误信息“relation with OID ##### does not exist”?</h4>
-<p>
- PL/PgSQL会缓存函数的内容,由此带来的一个不好的副作用是若一个 PL/PgSQL
- 函数访问了一个临时表,然后该表被删除并重建了,则再次调用该函数将失败,
- 因为缓存的函数内容仍然指向旧的临时表。解决的方法是在 PL/PgSQL 中用<small>EXECUTE</small>
- 对临时表进行访问。这样会保证查询在执行前总会被重新解析。
-</p>
-
-<h4><a name="4.27"></a>4.27)目前有哪些数据复制方案可用?</h4>
-<p>
- “复制”只是一个术语,有好几种复制技术可使用,每种都有优点和缺点:
-</p>
-<p>
- 主/从复制方式是允许一个主服务器接受读/写的申请,而多个从服务器只能接受读/<small>SELECT</small>查询的申请,
- 目前最流行且是免费的主/从 PostgreSQL复制方案是
- <a href="http://gborg.postgresql.org/project/slony1/projdisplay.php">Slony-I </a>。
-</p>
-<p>
- 多个主服务器的复制方式允许将读/写的申请发送给多台的计算机,这种方式由于需要在多台服务器之间同步数据变动
- 可能会带来较严重的性能损失,<a href="http://pgfoundry.org/projects/pgcluster/">Pgcluster</a>是目前这种方案
- 中最好的,而且还可以免费下载。
-</p>
-<p>
- 也有一些商业需付费和基于硬件的数据复制方案,支持上述各种复制模型。
-</p>
-
-
-
-</body>
-</html>
-
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html>
+<head>
+
+ <title>PostgreSQL 甯歌闂锛團AQ锛</title>
+</head>
+
+
+
+<body>
+
+<h1> PostgreSQL 甯歌闂锛團AQ锛 </h1>
+
+
+<p> 鏈杩戞洿鏂帮細2007 骞 1 鏈 5 鏃 鏄熸湡浜 15:40:20 EST <br/>
+ 涓枃鐗堟渶杩戞洿鏂帮細2007 骞 1 鏈 29 鏃 鏄熸湡涓 22:48:04 CST
+</p>
+<p> 鐩墠缁存姢浜哄憳锛欱ruce Momjian (<a href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>)<br/>
+ 涓枃鐗堢淮鎶や汉鍛橈細Daojing.Zhou锛<a href="mailto:doudou586@gmail.com">doudou586@gmail.com</a>锛
+</p>
+
+<p>
+ 鏈枃妗g殑鏈鏂扮増鏈彲浠ュ湪
+ <a href="http://www.postgresql.org/files/documentation/faqs/FAQ.html">http://www.postgresql.org/files/documentation/faqs/FAQ.html</a>鏌ョ湅銆
+</p>
+<p>
+ 涓庢搷浣滅郴缁熷钩鍙扮浉鍏崇殑闂鍙湪<a href="http://www.postgresql.org/docs/faq/">http://www.postgresql.org/docs/faq/</a>閲屾壘鍒扮瓟妗堛<br/>
+</p>
+<hr/>
+
+<h2><a name="甯歌闂"></a> 甯歌闂 </h2>
+
+
+<p>
+<a href="#1.1">1.1</a>)PostgreSQL 鏄粈涔堬紵璇ユ庝箞鍙戦煶锛<br/>
+<a href="#1.2">1.2</a>)璋佹帶鍒跺拰绠$悊PostgreSQL 锛<br/>
+<a href="#1.3">1.3</a>)PostgreSQL鐨勭増鏉冩槸浠涔堬紵<br/>
+<a href="#1.4">1.4</a>)PostgreSQL鍙互杩愯鍦ㄥ摢浜涙搷浣滅郴缁熷钩鍙颁笂锛<br/>
+<a href="#1.5">1.5</a>)鎴戜粠鍝噷鑳藉緱鍒癙ostgreSQL锛<br/>
+
+<a href="#1.6">1.6</a>)鏈鏂扮増鐨凱ostgreSQL 鏄粈涔堬紵<br/>
+<a href="#1.7">1.7</a>)鎴戜粠鍝噷鑳藉緱鍒板PostgreSQL 鐨勬敮鎸侊紵<br/>
+<a href="#1.8">1.8</a>)鎴戝浣曟彁浜や竴涓狟UG鎶ュ憡锛<br/>
+<a href="#1.9">1.9</a>)鎴戝浣曚簡瑙e凡鐭ョ殑 BUG 鎴栨殏缂虹殑鍔熻兘锛<br/>
+<a href="#1.10">1.10</a>)鑳藉鑾峰彇鐨勬渶鏂版枃妗f湁鍝簺锛<br/>
+<a href="#1.11">1.11</a>)鎴戝簲璇ユ庢牱瀛︿範 SQL 锛<br/>
+
+<a href="#1.12">1.12</a>)濡備綍鎻愪氦琛ヤ竵鎴栨槸鍔犲叆寮鍙戦槦浼嶏紵<br/>
+<a href="#1.13">1.13</a>)PostgreSQL 鍜屽叾浠栨暟鎹簱绯荤粺姣旇捣鏉ュ浣曪紵<br/>
+</p>
+
+<h2><a name="鐢ㄦ埛瀹㈡埛绔棶棰"></a> 鐢ㄦ埛瀹㈡埛绔棶棰 </h2>
+<p>
+<a href="#2.1">2.1</a>)鎴戜滑鍙互鐢ㄤ粈涔堣瑷鍜孭ostgreSQL 鎵撲氦閬擄紵<br/>
+<a href="#2.2">2.2</a>)鏈変粈涔堝伐鍏峰彲浠ユ妸PostgreSQL 鐢ㄤ簬 Web 椤甸潰锛<br/>
+
+<a href="#2.3">2.3</a>)PostgreSQL 鎷ユ湁鍥惧舰鐢ㄦ埛鐣岄潰鍚楋紵<br/>
+</p>
+
+<h2><a name="绯荤粺绠$悊闂"></a> 绯荤粺绠$悊闂 </h2>
+<p>
+<a href="#3.1">3.1</a>)鎴戞庢牱鎵嶈兘鎶奝ostgreSQL 瑁呭湪 /usr/local/pgsql 浠ュ鐨勫湴鏂癸紵<br/>
+<a href="#3.2">3.2</a>)鎴戝浣曟帶鍒舵潵鑷叾浠栫數鑴戠殑杩炴帴锛<br/>
+<a href="#3.3">3.3</a>)鎴戞庢牱璋冩暣鏁版嵁搴撴湇鍔″櫒浠ヨ幏寰楁洿濂界殑鎬ц兘锛<br/>
+
+<a href="#3.4">3.4</a>)PostgreSQL 閲屽彲浠ヨ幏寰椾粈涔堟牱鐨勮皟璇曠壒鎬э紵<br/>
+<a href="#3.5">3.5</a>)涓轰粈涔堝湪璇曞浘杩炴帴鐧诲綍鏃舵敹鍒扳淪orry, too many clients鈥 娑堟伅锛<br/>
+<a href="#3.6">3.6</a>)PostgreSQL鐨勫崌绾ц繃绋嬫湁鍝簺鍐呭锛<br/>
+<a href="#3.7">3.7</a>)(浣跨敤PostgreSQL)鎴戦渶瑕佷娇鐢ㄤ粈涔堣绠楁満纭欢 锛<br/>
+</p>
+
+<h2><a name="鎿嶄綔闂"></a> 鎿嶄綔闂 </h2>
+
+<p>
+<a href="#4.1">4.1</a>) 濡備綍鍙夋嫨涓涓煡璇㈢粨鏋滅殑澶村嚑琛岋紵鎴栨槸闅忔満鐨勪竴琛岋紵<br/>
+<a href="#4.2">4.2</a>) 濡備綍鏌ョ湅琛ㄣ佺储寮曘佹暟鎹簱浠ュ強鐢ㄦ埛鐨勫畾涔夛紵濡備綍鏌ョ湅<i>psql</i>閲岀敤鍒扮殑鏌ヨ鎸囦护骞舵樉绀哄畠浠紵<br/>
+<a href="#4.3">4.3</a>) 濡備綍鏇存敼涓涓瓧娈电殑鏁版嵁绫诲瀷锛<br/>
+<a href="#4.4">4.4</a>) 鍗曟潯璁板綍锛屽崟涓〃锛屼竴涓暟鎹簱鐨勬渶澶ч檺鍒舵槸澶氬皯锛<br/>
+<a href="#4.5">4.5</a>) 瀛樺偍涓涓吀鍨嬬殑鏂囨湰鏂囦欢閲岀殑鏁版嵁闇瑕佸灏戠鐩樼┖闂达紵<br/>
+
+<a href="#4.6">4.6</a>) 涓轰粈涔堟垜鐨勬煡璇㈠緢鎱紵涓轰粈涔堣繖浜涙煡璇㈡病鏈夊埄鐢ㄧ储寮曪紵<br/>
+<a href="#4.7">4.7</a>) 鎴戝浣曟墠鑳界湅鍒版煡璇紭鍖栧櫒鏄庢牱璇勪及澶勭悊鎴戠殑鏌ヨ鐨勶紵<br/>
+<a href="#4.8">4.8</a>) 鎴戞庢牱鍋氭鍒欒〃杈惧紡鎼滅储鍜屽ぇ灏忓啓鏃犲叧鐨勬鍒欒〃杈惧紡鏌ユ壘锛熸庢牱鍒╃敤绱㈠紩杩涜澶у皬鍐欐棤鍏虫煡鎵撅紵<br/>
+<a href="#4.9">4.9</a>) 鍦ㄤ竴涓煡璇㈤噷锛屾垜鎬庢牱妫娴嬩竴涓瓧娈垫槸鍚︿负 NULL锛熸垜濡備綍鎵嶈兘鍑嗙‘鎺掑簭鑰屼笉璁烘煇瀛楁鏄惁鍚玁ULL鍊硷紵<br/>
+<a href="#4.10">4.10</a>) 鍚勭瀛楃绫诲瀷涔嬮棿鏈変粈涔堜笉鍚岋紵<br/>
+<a href="#4.11.1">4.11.1</a>) 鎴戞庢牱鍒涘缓涓涓簭鍒楀彿鍨嬫垨鏄嚜鍔ㄩ掑鐨勫瓧娈碉紵<br/>
+
+<a href="#4.11.2">4.11.2</a>) 鎴戝浣曡幏寰椾竴涓彃鍏ョ殑搴忓垪鍙风殑鍊硷紵<br/>
+<a href="#4.11.3">4.11.3</a>) 鍚屾椂浣跨敤 currval() 浼氬鑷村拰鍏朵粬鐢ㄦ埛鐨勫啿绐佹儏鍐靛悧锛<br/>
+<a href="#4.11.4">4.11.4</a>) 涓轰粈涔堜笉鍦ㄤ簨鍔″紓甯镐腑姝㈠悗閲嶇敤搴忓垪鍙峰憿锛熶负浠涔堝湪搴忓垪鍙峰瓧娈电殑鍙栧间腑瀛樺湪闂存柇鍛紵<br/>
+<a href="#4.12">4.12</a>) 浠涔堟槸 OID锛熶粈涔堟槸 CTID 锛<br/>
+<a href="#4.13">4.13</a>) 涓轰粈涔堟垜鏀跺埌閿欒淇℃伅鈥<i>ERROR: Memory exhausted in AllocSetAlloc()</i>鈥濓紵<br/>
+
+<a href="#4.14">4.14</a>) 鎴戝浣曟墠鑳界煡閬撴墍杩愯鐨 PostgreSQL 鐨勭増鏈紵<br/>
+<a href="#4.15">4.15</a>) 鎴戝浣曞垱寤轰竴涓己鐪佸兼槸褰撳墠鏃堕棿鐨勫瓧娈碉紵<br/>
+<a href="#4.16">4.16</a>) 濡備綍鎵ц澶栬繛鎺ワ紙outer join锛夋煡璇紵<br/>
+<a href="#4.17">4.17</a>) 濡備綍鎵ц娑夊強澶氫釜鏁版嵁搴撶殑鏌ヨ锛<br/>
+<a href="#4.18">4.18</a>) 濡備綍璁╁嚱鏁拌繑鍥炲琛屾垨澶氬垪鏁版嵁锛<br/>
+<a href="#4.19">4.19</a>) 涓轰粈涔堟垜鍦ㄤ娇鐢≒L/PgSQL鍑芥暟瀛樺彇涓存椂琛ㄦ椂浼氭敹鍒伴敊璇俊鎭渞elation with OID ##### does not exist鈥濓紵<br/>
+
+<a href="#4.20">4.20</a>) 鐩墠鏈夊摢浜涙暟鎹鍒舵柟妗堝彲鐢紵<br/>
+<a href="#4.21">4.21</a>) 涓轰綍鏌ヨ缁撴灉鏄剧ず鐨勮〃鍚嶆垨鍒楀悕涓庢垜鐨勬煡璇㈣鍙ヤ腑鐨勪笉鍚岋紵涓轰綍澶у啓鐘舵佷笉鑳戒繚鐣欙紵<br/>
+</p>
+
+<hr/>
+
+<h2><a name="甯歌闂"></a> 甯歌闂 </h2>
+
+<h3> <a name="1.1"></a>1.1)PostgreSQL 鏄粈涔堬紵璇ユ庝箞鍙戦煶锛 </h3>
+
+
+<p>PostgreSQL 璇讳綔 <i>Post-Gres-Q-L</i>锛屾湁鏃跺欎篃绠绉颁负<i>Postgres</i> 銆傛兂鍚竴涓嬪叾鍙戦煶鐨勪汉鍛樺彲浠庤繖閲屼笅杞藉0闊虫枃浠讹細
+ <a href="http://www.postgresql.org/files/postgresql.mp3">MP3 鏍煎紡</a> 銆
+</p>
+
+<p>PostgreSQL 鏄潰鍚戠洰鏍囩殑鍏崇郴鏁版嵁搴撶郴缁燂紝瀹冨叿鏈変紶缁熷晢涓氭暟鎹簱绯荤粺鐨勬墍鏈夊姛鑳斤紝鍚屾椂鍙堝惈鏈夊皢鍦ㄤ笅涓浠 DBMS 绯荤粺鐨勪娇鐢ㄧ殑澧炲己鐗规с侾ostgreSQL 鏄嚜鐢卞厤璐圭殑锛屽苟涓旀墍鏈夋簮浠g爜閮藉彲浠ヨ幏寰椼
+</p>
+
+<p>PostgreSQL 鐨勫紑鍙戦槦浼嶄富瑕佷负蹇楁効鑰咃紝浠栦滑閬嶅竷涓栫晫鍚勫湴骞堕氳繃浜掕仈缃戣繘琛岃仈绯伙紝杩欐槸涓涓ぞ鍖哄紑鍙戦」鐩紝瀹冧笉琚换浣曞叕鍙告帶鍒躲
+ 濡傛兂鍔犲叆寮鍙戦槦浼嶏紝璇峰弬瑙佸紑鍙戜汉鍛樺父瑙侀棶棰橈紙FAQ锛
+ <a href="http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html">http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html</a>
+
+</p>
+
+<h3> <a name="1.2"></a>1.2) 璋佹帶鍒禤ostgreSQL 锛 </h3>
+<p>
+ 濡傛灉浣犲湪瀵绘壘PostgreSQL鐨勬帉闂ㄤ汉锛屾垨鏄粈涔堜腑澶鍛樹細锛屾垨鏄粈涔堟墍灞炲叕鍙革紝浣犲彧鑳芥斁寮冧簡---鍥犱负涓涓篃涓嶅瓨鍦紝浣嗘垜浠殑纭湁涓涓
+ 鏍稿績濮斿憳浼氬拰CVS绠$悊缁勶紝浣嗚繖浜涘伐浣滅粍鐨勮绔嬩富瑕佹槸涓轰簡杩涜绠$悊宸ヤ綔鑰屼笉鏄PostgreSQL杩涜鐙崰寮忔帶鍒讹紝PostgreSQL椤圭洰鏄敱浠讳綍浜哄潎
+ 鍙弬鍔犵殑寮鍙戜汉鍛樼ぞ鍖哄拰鎵鏈夌敤鎴锋帶鍒剁殑锛屼綘鎵闇瑕佸仛鐨勫氨鏄闃呴偖浠跺垪琛紝鍙備笌璁ㄨ鍗冲彲锛堣鍙備笌PostgreSQL鐨勫紑鍙戣瑙
+ <a href="http://www.postgresql.org/docs/faqs.FAQ_DEV.html"> 寮鍙戜汉鍛樺父闂 (Developer's FAQ) </a>鑾峰彇淇℃伅锛夈
+</p>
+
+
+<h3> <a name="1.3"></a>1.3)PostgreSQL鐨勭増鏉冩槸浠涔? </h3>
+
+
+<p>PostgreSQL鐨勫彂甯冮伒浠庣粡鍏哥殑BSD鐗堟潈銆傚畠鍏佽鐢ㄦ埛涓嶉檺鐩殑鍦颁娇鐢≒ostgreSQL锛岀敋鑷充綘鍙互閿鍞甈ostgreSQL鑰屼笉鍚簮浠g爜涔熷彲浠ワ紝鍞竴鐨勯檺鍒跺氨鏄綘涓嶈兘鍥犺蒋浠惰嚜韬棶棰樿屽悜鎴戜滑杩借瘔娉曞緥璐d换锛屽彟澶栧氨鏄姹傛墍鏈夌殑杞欢鎷疯礉涓』鍖呮嫭浠ヤ笅鐗堟潈澹版槑銆備笅闈㈠氨鏄垜浠墍浣跨敤鐨凚SD鐗堟潈澹版槑鍐呭锛</p>
+
+<p>PostgreSQL鏁版嵁搴撶鐞嗙郴缁</p>
+
+<p> 閮ㄥ垎鐗堟潈锛坈锛1996-2005锛孭ostgreSQL 鍏ㄧ悆寮鍙戝皬缁勶紝閮ㄥ垎鐗堟潈锛坈锛1994-1996 鍔犲窞澶у钁d簨</p>
+
+<p> 锛圥ortions copyright (c) 1996-2005,PostgreSQL Global Development Group Portions Copyright (c) 1994-6 Regents of the University of California锛</p>
+
+<p>
+ 鍏佽涓轰换浣曠洰鐨勪娇鐢紝鎷疯礉锛屼慨鏀瑰拰鍒嗗彂杩欎釜杞欢鍜屽畠鐨勬枃妗h屼笉鏀跺彇浠讳綍璐圭敤锛
+ 骞朵笖鏃犻』绛剧讲鍥犳鑰屼骇鐢熺殑璇佹槑锛屽墠鎻愭槸涓婇潰鐨勭増鏉冨0鏄庡拰鏈浠ュ強涓嬮潰涓ゆ鏂囧瓧鍑虹幇鍦ㄦ墍鏈夋嫹璐濅腑銆
+
+</p>
+
+<p>
+ 锛圥ermission to use, copy, modify, and distribute this software and its
+ documentation for any purpose, without fee, and without a written agreement is
+ hereby granted, provided that the above copyright notice and this paragraph and
+ the following two paragraphs appear in all copies.锛
+</p>
+
+<p>
+ 鍦ㄤ换浣曟儏鍐典笅锛屽姞宸炲ぇ瀛﹂兘涓嶆壙鎷呭洜浣跨敤姝よ蒋浠跺強鍏舵枃妗h屽鑷寸殑瀵逛换浣曞綋浜嬩汉鐨勭洿鎺ョ殑锛
+ 闂存帴鐨勶紝鐗规畩鐨勶紝闄勫姞鐨勬垨鑰呯浉浼磋岀敓鐨勬崯鍧忥紝鍖呮嫭鍒╃泭鎹熷け鐨勮矗浠伙紝鍗充娇鍔犲窞澶у宸茬粡寤鸿浜嗚繖浜涙崯澶辩殑鍙兘鎬ф椂涔熸槸濡傛銆
+</p>
+
+<p>
+ 锛圛N NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
+ DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST
+ PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
+ THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+ DAMAGE.锛
+</p>
+
+
+<p>
+ 鍔犲窞澶у鏄庣‘鏀惧純浠讳綍淇濊瘉锛屽寘鎷絾涓嶅眬闄愪簬鏌愪竴鐗瑰畾鐢ㄩ旂殑鍟嗕笟鍜屽埄鐩婄殑闅愬惈淇濊瘉銆
+ 杩欓噷鎻愪緵鐨勮繖浠借蒋浠舵槸鍩轰簬鈥滃綋浣滄槸鈥濈殑鍩虹鐨勶紝鍥犺屽姞宸炲ぇ瀛︽病鏈夎矗浠绘彁渚涚淮鎶わ紝鏀寔锛屾洿鏂帮紝澧炲己鎴栬呬慨鏀圭殑鏈嶅姟銆
+</p>
+
+<p>
+ 锛圱HE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT
+ NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND
+ THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE,
+ SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.锛<br/>
+
+</p>
+
+<h3> <a name="1.4"></a>1.4)PostgreSQL 鍙互杩愯鍦ㄥ摢浜涙搷浣滅郴缁熷钩鍙颁笂锛 </h3>
+
+<p> 涓鑸鏉ワ紝浠讳綍鐜板湪瀵 UNIX 鍏煎鐨勬搷浣滅郴缁熶箣涓婇兘鑳借繍琛孭ostgreSQL 銆傚湪瀹夎鎸囧崡閲屽垪鍑轰簡鍙戝竷鏃剁粡杩囨槑纭祴璇曠殑骞冲彴銆</p>
+
+
+<p>PostgreSQl涔熷彲浠ョ洿鎺ヨ繍琛屽湪鍩轰簬寰蒋Windows-NT鐨勬搷浣滅郴缁燂紝濡俉in2000 SP4锛學inXP 鍜 Win2003锛屽凡鍒朵綔瀹屾垚鐨勫畨瑁呭寘鍙粠
+ <a href="http://pgfoundry.org/projects/pginstaller">http://pgfoundry.org/projects/pginstaller</a>涓嬭浇锛屽熀浜嶮SDOS鐨刉indows鎿嶄綔绯荤粺
+ 锛圵in95锛學in98锛學inMe锛夐渶瑕侀氳繃Cygwin妯℃嫙鐜杩愯PostgreSQL銆
+</p>
+
+<p>
+ 鍚屾椂涔熸湁涓涓负Novell Netware 6寮鍙戠殑鐗堟湰鍙粠 <a href="http://forge.novell.com" target="_top">http://forge.novell.com</a>鑾峰彇锛屼负OS/2(eComStation)寮鍙戠殑鐗堟湰鍙粠
+ <a href="http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&amp;button=Search&amp;key=postgreSQL&amp;stype=all&amp;sort=type&amp;dir=%2F" target="_top">http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&amp;button=Search&amp;key=postgreSQL&amp;stype=all&amp;sort=type&amp;dir=%2F</a> 涓嬭浇銆
+
+</p>
+
+<h3> <a name="1.5"></a>1.5) 鎴戜粠鍝噷鑳藉緱鍒癙ostgreSQL锛 </h3>
+
+<p>
+ 閫氳繃娴忚鍣ㄥ彲浠<a href="http://www.postgresql.org/ftp/">http://www.postgresql.org/ftp/</a>涓嬭浇锛屼篃鍙氳繃FTP锛屼粠
+ <a href="ftp://ftp.PostgreSQL.org/pub/">ftp://ftp.PostgreSQL.org/pub/</a>绔欑偣涓嬭浇銆
+</p>
+
+<h3> <a name="1.6"></a>1.6) 鏈鏂扮増鐨凱ostgreSQL鏄粈涔堬紵 </h3>
+
+
+<p>PostgreSQL 鏈鏂扮殑鐗堟湰鏄増鏈 8.2.1 銆</p>
+
+<p>鎴戜滑璁″垝姣忓勾鍙戝竷涓涓富瑕佸崌绾х増鏈紝姣忓嚑涓湀鍙戝竷涓涓皬鐗堟湰銆</p>
+
+
+<h3> <a name="1.7"></a>1.7) 鎴戜粠鍝噷鑳藉緱鍒板PostgreSQL鐨勬敮鎸侊紵 </h3>
+
+<p>PostgreSQL绀惧尯閫氳繃閭欢鍒楄〃涓哄叾澶у鏁扮敤鎴锋彁渚涘府鍔╋紝璁㈤槄閭欢鍒楄〃鐨勪富绔欑偣鏄 <a href="http://www.postgresql.org/community/lists/" target="_top">http://www.postgresql.org/community/lists/</a>锛屼竴鑸儏鍐典笅锛屽厛鍔犲叆<i>General</i> 鎴 <i>Bug</i>閭欢鍒楄〃鏄竴涓緝濂界殑寮濮嬨
+</p>
+
+<p>
+ 涓昏鐨処RC棰戦亾鏄湪FreeNode(<i>irc.freenode.net</i>)鐨<i>#postgresql</i>锛屼负浜嗚繛涓婃棰戦亾锛屽彲浠ヤ娇鐢║NIX绋嬪簭irc锛屽叾鎸囦护鏍煎紡锛
+ irc -c '#postgresql' "$USER" irc.freenode.net 锛屾垨鑰呬娇鐢ㄥ叾浠朓RC瀹㈡埛绔▼搴忋傚湪姝ょ綉缁滀腑杩樺瓨鍦ㄤ竴涓狿ostgreSQL鐨勮タ鐝墮棰戦亾(<i>#postgersql-es</i>)鍜屾硶璇閬
+ (<i>#postgresql-fr</i>)銆傚悓鏍峰湴锛屽湪EFNET涓婁篃鏈変竴涓狿ostgreSQL鐨勪氦娴侀閬撱
+</p>
+
+<p>
+ 鍙彁渚涘晢涓氭敮鎸佺殑鍏徃鍒楄〃鍙湪<a href="http://techdocs.postgresql.org/companies.php" target="_top">http://techdocs.postgresql.org/companies.php</a>娴忚銆
+
+</p>
+
+
+
+<h3> <a name="1.8"></a>1.8) 鎴戝浣曟彁浜や竴涓狟UG鎶ュ憡锛 </h3>
+
+<p>
+ 鍙闂 <a href="http://www.postgresql.org/support/submitbug">http://www.postgresql.org/support/submitbug</a>锛屽~鍐橞ug涓婃姤琛ㄦ牸鍗冲彲锛屽悓鏍蜂篃鍙闂甪tp绔欑偣<a href="ftp://ftp.PostgreSQL.org/pub/">ftp://ftp.PostgreSQL.org/pub/</a> 妫鏌ユ湁鏃犳洿鏂扮殑PostgreSQL鐗堟湰鎴栬ˉ涓併
+</p>
+
+
+<p>
+閫氳繃浣跨敤Bug鎻愪氦琛ㄦ牸鎴栨槸鍙戝線PostgreSQL閭欢鍒楄〃鐨凚ug閫氬父浼氭湁浠ヤ笅涔嬩竴鍥炲锛
+</p>
+
+<ul>
+<li>鎵鎻愪氦鍐呭涓嶆槸涓涓狟ug鍙婂叾涓嶆槸Bug鐨勫師鍥犮</li>
+<li>鎵鎻愪氦鍐呭鏄竴涓凡鐭ョ殑Bug骞朵笖宸茬粡鍔犲叆TODO寰呭鐞嗕换鍔″垪琛ㄣ</li>
+<li>鎵鎻愪氦鐨凚ug宸插湪褰撳墠鐗堟湰涓淇銆</li>
+<li>鎵鎻愪氦鐨凚ug宸蹭慨姝d絾灏氭湭灏嗚ˉ涓佸姞鍏ョ幇鍦ㄧ殑鍙戝竷杞欢鍖呫</li>
+<li>璇锋眰鎻愪氦鑰呮彁渚涙洿璇︾粏鐨勪俊鎭細
+ <ul>
+ <li>鎿嶄綔绯荤粺</li>
+
+ <li>PostgreSQL鐗堟湰</li>
+ <li>鍙噸鐜癇ug鐨勬祴璇曟渚</li>
+ <li>璋冭瘯淇℃伅</li>
+ <li>璋冭瘯璺熻釜杈撳嚭</li>
+ </ul>
+</li>
+<li>鎵鎻愪氦鍐呭鏄竴涓柊Bug锛屽皢鎵ц浠ヤ笅宸ヤ綔锛
+ <ul>
+
+ <li>鍒涘缓涓涓柊琛ヤ竵骞跺皢鍏跺姞鍏ヤ笅涓涓富瑕佺増鏈垨鏄皬鐨勬敼杩涚増鏈腑銆</li>
+ <li>姝ug鏆傛椂涓嶈兘淇锛屽皢琚姞鑷砊ODO寰呭鐞嗕换鍔″垪琛ㄣ</li>
+ </ul>
+</li>
+</ul>
+
+
+<h3> <a name="1.9"></a>1.9) 鎴戝浣曚簡瑙e凡鐭ョ殑 BUG 鎴栨殏缂虹殑鍔熻兘锛 </h3>
+<p>PostgreSQL 鏀寔涓涓墿灞曠殑 SQL:2003 鐨勫瓙闆嗐傚弬闃呮垜浠殑<a href="http://www.postgresql.org/docs/faqs.TODO.html">TODO</a> 鍒楄〃锛屼簡瑙e凡鐭ug鍒楄〃銆佹殏缂虹殑鍔熻兘鍜屽皢鏉ョ殑寮鍙戣鍒掋
+
+</p>
+
+<p>瑕佹眰澧炲姞鏂板姛鑳界殑鐢宠閫氬父浼氭敹鍒颁互涓嬩箣涓鐨勫洖澶嶏細</p>
+
+<ul>
+<li>璇ュ姛鑳藉凡鍔犲叆TODO寰呭鐞嗕换鍔″垪琛ㄣ</li>
+<li>璇ュ姛鑳戒笉鏄繀椤荤殑锛屽洜涓猴細
+ <ul>
+ <li>瀹冩槸鐜版湁鐨勪笖绗﹀悎SQL鏍囧噯鐨勬煇鍔熻兘鐨勯噸澶嶃</li>
+ <li>璇ュ姛鑳芥т細澶уぇ澧炲姞浠g爜鐨勫鏉傜▼搴忥紝鑰屽甫鏉ョ殑濂藉鏄井涓嶈冻閬撶殑銆</li>
+ <li>璇ュ姛鑳芥槸涓嶅畨鍏ㄦ垨鏄笉鍙潬鐨勩</li>
+
+ </ul>
+</li>
+<li>璇ュ姛鑳藉皢琚姞鍏ODO寰呭鐞嗕换鍔″垪琛ㄣ</li>
+</ul>
+
+<p>
+PostgreSQL涓嶄娇鐢˙ug璺熻釜绯荤粺锛屽洜涓烘垜浠彂鐜板湪閭欢鍒楄〃涓洿鎺ュ洖澶嶄互鍙婁繚璇乀ODO浠诲姟鍒楄〃鎬绘槸澶勪簬鏈鏂扮姸鎬佺殑鏂瑰紡宸ヤ綔鏁堢巼浼氭洿楂樹竴浜涖備簨瀹炰笂锛孊ug涓嶄細鍦ㄦ垜浠殑杞欢涓瓨鍦ㄥ緢闀挎椂闂达紝
+瀵瑰奖鍝嶅緢澶氱敤鎴风殑Bug涔熸绘槸寰堝揩浼氳淇銆傚敮涓鑳芥壘鍒版墍鏈夋敼杩涖佹彁楂樺拰淇鐨勫湴鏂规槸CVS鐨勬棩蹇椾俊鎭紝鍗充娇鏄湪杞欢鏂扮増鏈殑鍙戝竷淇℃伅涓篃涓嶄細鍒楀嚭姣忎竴澶勭殑杞欢鏇存柊銆
+</p>
+
+
+
+<h3> <a name="1.10"></a>1.10) 鑳藉鑾峰彇鐨勬渶鏂版枃妗f湁鍝簺锛 </h3>
+
+
+<p>PostgreSQL鍖呭惈澶ч噺鐨勬枃妗o紝涓昏鏈夎缁嗙殑鍙傝冩墜鍐岋紝鎵嬪唽椤靛拰涓浜涚殑娴嬭瘯渚嬪瓙銆傚弬瑙 /doc 鐩綍锛堣瘧娉細搴斾负 $PGHOME/doc锛夈
+ 浣犺繕鍙互鍦ㄧ嚎娴忚PostgreSQL鐨勬墜鍐岋紝鍏剁綉鍧鏄細<a href="http://www.PostgreSQL.org/docs">http://www.PostgreSQL.org/docs</a>銆
+</p>
+
+<p>
+ 鏈変袱鏈叧浜嶱ostgreSQL鐨勪功鍦ㄧ嚎鎻愪緵锛屽湪
+ <a href="http://www.PostgreSQL.org/docs/awbook.html">http://www.PostgreSQL.org/docs/awbook.html</a>
+ 鍜 <a href="http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook/</a> 銆
+ 涔熸湁澶ч噺鐨凱ostgreSQL涔︾睄鍙緵璐拱锛屽叾涓渶涓烘祦琛岀殑涓鏈槸鐢盞orry Douglas缂栧啓鐨勩傚湪
+ <a href="http://techdocs.PostgreSQL.org/techdocs/bookreviews.php">http://techdocs.PostgreSQL.org/techdocs/bookreviews.php</a>涓
+ 涓婃湁澶ч噺鏈夊叧PostgreSQL涔︾睄鐨勭畝浠嬨
+ 鍦 <a href="http://techdocs.PostgreSQL.org/">http://techdocs.PostgreSQL.org/</a>涓婃敹闆嗕簡鏈夊叧PostgreSQL鐨勫ぇ閲忔妧鏈枃绔犮
+
+</p>
+
+<p>
+ 瀹㈡埛绔殑鍛戒护琛岀▼搴<i>psql</i>鏈変竴浜涗互 \d 寮澶寸殑鍛戒护锛屽彲鏄剧ず鍏充簬绫诲瀷锛屾搷浣滅锛屽嚱鏁帮紝鑱氬悎绛変俊鎭紝浣跨敤 \? 鍙互鏄剧ず鎵鏈夊彲鐢ㄧ殑鍛戒护銆
+</p>
+
+<p>
+ 鎴戜滑鐨 web 绔欑偣鍖呭惈鏇村鐨勬枃妗c
+</p>
+
+
+
+<h3> <a name="1.11"></a>1.11) 鎴戝簲璇ユ庢牱瀛︿範 SQL 锛 </h3>
+
+<p>
+ 棣栧厛鑰冭檻涓婅堪鎻愬埌鐨勪笌PostgreSQL鐩稿叧鐨勪功绫嶏紝鍙﹀涓鏈槸<i>Teach Yourself SQL in 21 Days, Second Edition</i>锛屽叾璇︾粏浠嬬粛鐨勭綉鍧鏄
+ <a href="http://members.tripod.com/er4ebus/sql/index.htm">http://members.tripod.com/er4ebus/sql/index.htm</a>锛
+ 鎴戜滑鐨勮澶氱敤鎴峰枩娆<i>The Practical SQL Handbook</i>锛 Bowman, Judith S. 缂栧啓锛孉ddison-Wesley鍏徃鍑虹増锛屽叾浠栫殑鍒欏枩娆
+ <i>The Complete Reference SQL</i>, Groff 缂栧啓锛孧cGraw-Hill鍏徃鍑虹増銆
+</p>
+
+<p>鍦ㄤ笅鍒楃綉鍧涓婁篃鏈夊緢濂界殑鏁欑▼锛屼粬浠槸</p>
+<ul>
+<li><a href="http://www.intermedia.net/support/sql/sqltut.shtm">http://www.intermedia.net/support/sql/sqltut.shtm</a></li>
+<li><a href="http://sqlcourse.com/">http://sqlcourse.com.</a></li>
+<li><a href="http://www.w3schools.com/sql/default.asp">http://www.w3schools.com/sql/default.asp</a></li>
+<li><a href="http://mysite.verizon.net/Graeme_Birchall/id1.html">http://mysite.verizon.net/Graeme_Birchall/id1.html</a></li>
+</ul>
+
+
+
+<h3> <a name="1.12"></a>1.12)濡備綍鎻愪氦琛ヤ竵鎴栨槸鍔犲叆寮鍙戦槦浼嶏紵 </h3>
+<p>
+ 璇﹁<a href="http://www.postgresql.org/docs/faqs.FAQ_DEV.html"> 寮鍙戜汉鍛樺父瑙侀棶棰 (Developer's FAQ) </a>銆
+
+</p>
+
+
+<h3> <a name="1.13"></a>1.13)PostgreSQL鍜屽叾浠栨暟鎹簱绯荤粺姣旇捣鏉ュ浣曪紵 </h3>
+
+<p>
+璇勪环杞欢鏈夊ソ鍑犵鏂规硶锛氬姛鑳斤紝鎬ц兘锛屽彲闈犳э紝鏀寔鍜屼环鏍笺
+</p>
+
+<dl>
+ <dt><b>鍔熻兘</b></dt>
+ <dd>PostgreSQL 鎷ユ湁澶у瀷鍟嗙敤鏁版嵁搴撴渶澶氱殑鍔熻兘锛屼緥濡傦細浜嬪姟锛屽瓙鏌ヨ锛岃Е鍙戝櫒锛岃鍥撅紝澶栭敭鍙傝冨畬鏁存у拰澶嶆潅鐨勯攣瀹氱瓑銆
+ 鎴戜滑杩樻湁涓浜涘畠浠病鏈夌殑鐗规э紝濡傜敤鎴峰畾涔夌被鍨嬶紝缁ф壙锛岃鍒欏拰澶氱増鏈苟琛屾帶鍒朵互鍑忓皯閿佺殑浜夌敤绛夈<br/>
+
+ </dd>
+
+ <dt><b>鎬ц兘</b></dt>
+ <dd>PostgreSQL鍜屽叾浠栧晢鐢ㄥ拰寮婧愮殑鏁版嵁搴撳叿鏈夌被浼肩殑鎬ц兘銆傚鏌愪簺澶勭悊瀹冩瘮杈冨揩锛屽鍏朵粬涓浜涘鐞嗗畠姣旇緝鎱€
+ 涓庡叾浠栨暟鎹簱鐩告瘮锛屾垜浠殑鎬ц兘浼樺姡閫氬父鍦 +/- 10%涔嬮棿銆<br/>
+ </dd>
+
+ <dt><b>鍙潬鎬</b></dt>
+ <dd>
+
+ 鎴戜滑閮界煡閬撴暟鎹簱蹇呴』鏄彲闈犵殑锛屽惁鍒欏畠灏变竴鐐圭敤閮芥病鏈夈傛垜浠姫鍔涘仛鍒板彂甯冪粡杩囪鐪熸祴璇曠殑锛岀己闄锋渶灏戠殑绋冲畾浠g爜銆傛瘡涓増鏈嚦灏戞湁涓涓湀鐨 beta
+ 娴嬭瘯鏃堕棿锛屽苟涓旀垜浠殑鍙戝竷鍘嗗彶鏄剧ず鎴戜滑鍙互鎻愪緵绋冲畾鐨勶紝鐗㈠浐鐨勶紝鍙敤浜庣敓浜т娇鐢ㄧ殑鐗堟湰銆傛垜浠浉淇″湪杩欐柟闈㈡垜浠笌鍏朵粬鐨勬暟鎹簱杞欢鏄浉褰撶殑銆<br/>
+ </dd>
+
+ <dt><b>鏀寔</b></dt>
+ <dd>
+ 鎴戜滑鐨勯偖浠跺垪琛ㄦ彁渚涗竴涓潪甯稿ぇ鐨勫紑鍙戜汉鍛樺拰鐢ㄦ埛鐨勭粍浠ュ府鍔╄В鍐虫墍纰板埌鐨勪换浣曢棶棰樸傛垜浠笉鑳戒繚璇佹绘槸鑳借В鍐抽棶棰橈紝鐩告瘮涔嬩笅锛屽晢鐢ㄦ暟鎹簱杞欢涔熷苟涓嶆槸鎬昏兘澶熸彁渚涜В鍐虫柟娉曘
+ 鐩存帴涓庡紑鍙戜汉鍛橈紝鐢ㄦ埛缇わ紝鎵嬪唽鍜屾簮绋嬪簭鎺ヨЕ浣縋ostgreSQL鐨勬敮鎸佹瘮鍏朵粬鏁版嵁搴撹繕瑕佸ソ銆傝繕鏈変竴浜涘晢涓氭х殑鍏ㄩ潰鎶鏈敮鎸侊紝鍙互缁欐彁渚涚粰閭d簺闇瑕佺殑浜恒傦紙鍙傞槄1.7 灏忚妭锛<br/>
+ </dd>
+
+
+ <dt><b>浠锋牸</b></dt>
+ <dd>
+ 鎴戜滑瀵逛换浣曠敤閫旈兘鍏嶈垂锛屽寘鎷晢鐢ㄥ拰闈炲晢鐢ㄧ洰鐨勩
+ 浣犲彲浠ヤ笉鍔犻檺鍒跺湴鍚戜綘鐨勪骇鍝侀噷鍔犲叆鎴戜滑鐨勪唬鐮侊紝闄や簡閭d簺鎴戜滑鍦ㄤ笂闈㈢殑鐗堟潈澹版槑閲屽0鏄庣殑 BSD鐗堟潈涔嬪鐨勫唴瀹广
+ </dd>
+
+</dl>
+
+
+
+<hr/>
+
+
+<h2><a name="鐢ㄦ埛瀹㈡埛绔棶棰"></a> 鐢ㄦ埛瀹㈡埛绔棶棰 </h2>
+
+
+<h3> <a name="2.1"></a>2.1) 鎴戜滑鍙互鐢ㄤ粈涔堣瑷鍜孭ostgreSQL鎵撲氦閬擄紵 </h3>
+
+<p>PostgreSQL(缂虹渷鎯呭喌)鍙畨瑁呮湁C鍜屽唴宓屽紡C鐨勬帴鍙o紝鍏朵粬鐨勬帴鍙i兘鏄嫭绔嬬殑椤圭洰锛岃兘澶熷垎鍒笅杞斤紝杩欎簺鎺ュ彛椤圭洰鐙珛鐨勫ソ澶
+ 鏄粬浠彲浠ユ湁鍚勮嚜鐨勫彂甯冭鍒掑拰鍚勮嚜鐙珛鐨勫紑鍙戠粍銆
+</p>
+<p>
+ 涓浜涚紪绋嬭瑷濡侾HP閮芥湁璁块棶PostgreSQL鐨勬帴鍙o紝Perl銆乀CL銆丳ython浠ュ強寰堝鍏朵粬璇█鐨勬帴鍙e湪
+ <a href="http://gborg.postgresql.org" target="_top">http://gborg.postgresql.org</a>缃戠珯涓婄殑<i>Drivers/Interfaces</i>灏忚妭鍙壘鍒帮紝
+ 骞朵笖閫氳繃Internet寰堝鏄撴悳绱㈠埌銆
+</p>
+
+
+
+
+<h3> <a name="2.2"></a>2.2) 鏈変粈涔堝伐鍏峰彲浠ユ妸PostgreSQL鐢ㄤ簬 Web 椤甸潰锛 </h3>
+<p>
+ 涓涓粙缁嶄互鏁版嵁搴撲负鍚庡彴鐨勬尯涓嶉敊鐨勭珯鐐规槸锛<a href="http://www.webreview.com">http://www.webreview.com</a>銆
+</p>
+<p>
+ 瀵逛簬 Web 闆嗘垚锛孭HP 鏄竴涓瀬濂界殑鎺ュ彛銆傚畠鍦<a href="http://www.php.net/">http://www.php.net/</a>銆
+
+</p>
+<p>
+ 瀵逛簬澶嶆潅鐨勪换鍔★紝寰堝浜洪噰鐢 Perl 鎺ュ彛鍜 浣跨敤CGI.pm鐨凞BD::Pg 鎴 mod_perl 銆
+</p>
+
+
+<h3> <a name="2.3"></a>2.3)PostgreSQL鎷ユ湁鍥惧舰鐢ㄦ埛鐣岄潰鍚楋紵 </h3>
+<p>
+ 鍟嗕笟鐢ㄦ埛鎴栨槸寮婧愬紑鍙戜汉鍛樿兘鎵惧埌寰堝鐨勬湁鍏砅ostgreSQL鐨凣UI鍥惧舰宸ュ叿杞欢锛屽湪 <a href="http://www.postgresql.org/docs/techdocs.54">PostgreSQL绀惧尯鏂囨。</a>鏈変竴涓缁嗙殑鍒楄〃銆
+</p>
+
+
+<hr/>
+
+
+
+<h2><a name="绯荤粺绠$悊闂"></a> 绯荤粺绠$悊闂 </h2>
+
+<h3> <a name="3.1"></a>3.1)鎴戞庢牱鑳芥妸PostgreSQL瑁呭湪 /usr/local/pgsql 浠ュ鐨勫湴鏂癸紵 </h3>
+<p>
+ 鍦ㄨ繍琛 configure 鏃跺姞涓 --prefix 閫夐」銆
+</p>
+
+
+
+<h3> <a name="3.2"></a>3.2) 鎴戝浣曟帶鍒舵潵鑷叾浠栫數鑴戠殑杩炴帴锛 </h3>
+<p>
+ 缂虹渷鎯呭喌涓嬶紝PostgreSQL鍙厑璁告潵鑷湰鏈轰笖閫氳繃 unix 鍩熷鎺ュ瓧鎴朤CP/IP鏂瑰紡鐨勮繛鎺ャ
+ 浣犲彧鏈夊湪淇敼浜嗛厤缃枃浠<i>postgresql.conf</i>涓殑<i>listen_addresses</i>锛屼笖涔熷湪閰嶇疆鏂囦欢<i>$PGDATA/pg_hba.conf</i>涓墦寮浜
+ 鍩轰簬杩滅▼鐢佃剳锛 host-based 锛夌殑韬唤璁よ瘉锛屽苟閲嶆柊鍚姩PostgreSQL锛屽惁鍒欏叾浠栫數鑴戞槸涓嶈兘涓庝綘鐨凱ostgreSQL鏈嶅姟鍣ㄨ繘琛岃繛鎺ョ殑銆
+</p>
+
+
+<h3> <a name="3.3"></a>3.3) 鎴戞庢牱璋冩暣鏁版嵁搴撳紩鎿庝互鑾峰緱鏇村ソ鐨勬ц兘锛 </h3>
+
+
+<p>
+ 鏈変笁涓富瑕佹柟闈㈠彲浠ユ彁鍗嘝ostgreSQL鐨勬綔鑳姐
+</p>
+
+<dl>
+ <dt><b>鏌ヨ鏂瑰紡鐨勫彉鍖</b></dt>
+ <dd>
+ 杩欎富瑕佹秹鍙婁慨鏀规煡璇㈡柟寮忎互鑾峰彇鏇村ソ鐨勬ц兘:
+ <ul>
+ <li>鍒涘缓绱㈠紩锛屽寘鎷〃杈惧紡鍜岄儴鍒嗙储寮曪紱</li>
+
+ <li>浣跨敤COPY璇彞浠f浛澶氫釜Insert璇彞锛</li>
+ <li>灏嗗涓猄QL璇彞缁勬垚涓涓簨鍔′互鍑忓皯鎻愪氦浜嬪姟鐨勫紑閿锛</li>
+ <li>浠庝竴涓储寮曚腑鎻愬彇澶氭潯璁板綍鏃朵娇鐢–LUSTER锛</li>
+ <li>浠庝竴涓煡璇㈢粨鏋滀腑鍙栧嚭閮ㄥ垎璁板綍鏃朵娇鐢↙IMIT锛</li>
+ <li>浣跨敤棰勭紪璇戝紡鏌ヨ锛圥repared Query)锛</li>
+ <li>浣跨敤ANALYZE浠ヤ繚鎸佺簿纭殑浼樺寲缁熻锛</li>
+
+ <li>瀹氭湡浣跨敤 VACUUM 鎴 <i>pg_autovacuum</i></li>
+ <li>杩涜澶ч噺鏁版嵁鏇存敼鏃跺厛鍒犻櫎绱㈠紩锛堢劧鍚庨噸寤虹储寮曪級</li>
+ </ul>
+ </dd>
+
+ <dt><b>鏈嶅姟鍣ㄧ殑閰嶇疆</b></dt>
+ <dd>
+
+ 閰嶇疆鏂囦欢<i>postgres.conf</i>涓殑寰堝璁剧疆閮戒細褰卞搷鎬ц兘锛屾墍鏈夊弬鏁扮殑鍒楄〃鍙锛
+ <a href="http://www.postgresql.org/docs/current/static/runtime.html">绠$悊鍛樻寚鍗/鏁版嵁搴撴湇鍔″櫒杩愯鐜/鏁版嵁搴撴湇鍔″櫒杩愯閰嶇疆</a>锛
+ 鏈夊叧鍙傛暟鐨勮В閲婂彲瑙侊細<a href="http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_conf_e.html" target="_top">http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_conf_e.html</a> 鍜
+ <a href="http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html">http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html</a>銆
+ </dd>
+
+ <dt><b>纭欢鐨勯夋嫨</b></dt>
+
+ <dd>
+ 璁$畻鏈虹‖浠跺鎬ц兘鐨勫奖鍝嶅彲娴忚
+ <a href="http://candle.pha.pa.us/main/writings/pgsql/hw_performance/index.html" target="_top">http://candle.pha.pa.us/main/writings/pgsql/hw_performance/index.html</a> 鍜
+ <a href="http://www.powerpostgresql.com/PerfList/">http://www.powerpostgresql.com/PerfList/</a>銆
+ </dd>
+
+</dl>
+
+
+<h3> <a name="3.4"></a>3.4)PostgreSQL閲屽彲浠ヨ幏寰椾粈涔堟牱鐨勮皟璇曠壒鎬э紵 </h3>
+
+
+<p>PostgreSQL 鏈夊緢澶氱被浼<code> log_* </code>鐨勬湇鍔″櫒閰嶇疆鍙橀噺鍙敤浜庢煡璇㈢殑鎵撳嵃鍜岃繘绋嬬粺璁★紝鑰岃繖浜涘伐浣滃璋冭瘯鍜屾ц兘娴嬭瘯寰堟湁甯姪銆
+</p>
+
+
+
+<h3> <a name="3.5"></a>3.5) 涓轰粈涔堝湪璇曞浘杩炴帴鏃舵敹鍒扳淪orry, too many clients锛堝凡鏈夊お澶氱敤鎴疯繛鎺ワ級鈥濇秷鎭紵 </h3>
+<p>
+ 杩欒〃绀轰綘宸茶揪鍒扮己鐪100涓苟鍙戝悗鍙拌繘绋嬫暟鐨勯檺鍒讹紝浣犻渶瑕侀氳繃淇敼<i>postgresql.conf</i>鏂囦欢涓殑<i>max_connections</i>鍊兼潵
+ 澧炲姞postmaster鐨勫悗鍙板苟鍙戝鐞嗘暟锛屼慨鏀瑰悗闇閲嶆柊鍚姩<i>postmaster</i>銆
+
+</p>
+
+
+<h3> <a name="3.6"></a>3.6)PostgreSQL鐨勫崌绾ц繃绋嬫湁鍝簺鍐呭 锛 </h3>
+<p>
+ PostgreSQL 寮鍙戠粍瀵规瘡娆″皬鐗堟湰鐨勫崌绾т富瑕佸彧鍋氫簡涓浜汢ug淇宸ヤ綔锛屽洜姝や粠 7.4.8 鍗囩骇鍒 7.4.9 涓嶉渶瑕 dump 鍜 restore锛屼粎闇瑕佸仠姝㈡暟鎹簱鏈嶅姟鍣紝瀹夎鏇存柊鍚庣殑杞欢鍖咃紝鐒跺悗閲嶅惎鏈嶅姟鍣ㄥ嵆鍙
+</p>
+<p>
+ 鎵鏈塒ostgreSQL鐨勭敤鎴峰簲璇ュ湪鏈鎺ヨ繎锛堜綘鎵浣跨敤鐨勪富鐗堟湰锛夌殑灏忔敼杩涚増鏈彂甯冨敖蹇崌绾с傚敖绠℃瘡娆″崌绾у彲鑳介兘鏈変竴鐐归闄╋紝PostgreSQL鐨勫皬鏀硅繘鐗堜粎浠呮槸璁捐鐢ㄦ潵淇涓浜汢ug鐨勶紝浠g爜鏀瑰姩杈冨皯锛屾墍浠ラ闄╄繕鏄緢灏忕殑銆侾ostgreSQL绀惧尯璁や负涓鑸儏鍐典笅涓嶅崌绾х殑椋庨櫓杩樻槸澶氫簬鍗囩骇鐨勩
+</p>
+<p>
+ 涓荤増鏈殑鍗囩骇锛堜緥濡備粠 7.3 鍒 7.4锛夐氬父浼氫慨鏀圭郴缁熻〃鍜屾暟鎹〃鐨勫唴閮ㄦ牸寮忋
+ 杩欎簺鏀瑰彉涓鑸瘮杈冨鏉傦紝鍥犳鎴戜滑涓嶇淮鎸佹暟鎹枃浠剁殑鍚戝悗鍏煎鎬с傚洜姝や粠鑰佺増鏈腑杩涜鏁版嵁瀵煎嚭锛坉ump锛/鐒跺悗鍦ㄦ柊鐗堟湰涓繘琛屾暟鎹鍏ワ紙reload锛夊涓荤増鏈殑鍗囩骇鏄繀椤荤殑銆
+
+</p>
+
+<h3> <a name="3.7"></a>3.7)(浣跨敤PostgreSQL)鎴戦渶瑕佷娇鐢ㄤ粈涔堣绠楁満纭欢 锛 </h3>
+<p>
+ 鐢变簬璁$畻鏈虹‖浠跺ぇ澶氭暟鏄吋瀹圭殑锛屼汉浠绘槸鍊惧悜浜庣浉淇℃墍鏈夎绠楁満纭欢璐ㄩ噺涔熸槸鐩稿悓鐨勩備簨瀹炰笂涓嶆槸锛
+ ECC RAM锛堝甫濂囧伓鏍¢獙鐨勫唴瀛橈級锛孲CSI 锛堢‖鐩橈級鍜屼紭璐ㄧ殑涓绘澘姣斾竴浜涗究瀹滆揣瑕佹洿鍔犲彲闈犱笖鍏锋湁鏇村ソ鐨勬ц兘銆侾ostgreSQL鍑犱箮鍙互杩愯鍦ㄤ换浣曠‖浠朵笂锛
+ 浣嗗鏋滃彲闈犳у拰鎬ц兘瀵逛綘鐨勭郴缁熷緢閲嶈锛屼綘灏遍渶瑕佸叏闈㈢殑鐮旂┒涓涓嬩綘鐨勭‖浠堕厤缃簡銆傚湪鎴戜滑鐨勯偖浠跺垪琛ㄤ笂涔熸湁鍏充簬
+ 纭欢閰嶇疆鍜屾т环姣旂殑璁ㄨ銆
+</p>
+
+
+<hr/>
+
+<h2><a name="鎿嶄綔闂"></a> 鎿嶄綔闂 </h2>
+
+
+
+<h3> <a name="4.1"></a>4.1) 濡備綍鍙夋嫨涓涓煡璇㈢粨鏋滅殑澶村嚑琛岋紵鎴栨槸闅忔満鐨勪竴琛岋紵 </h3>
+<p>
+ 濡傛灉浣犲彧鏄鎻愬彇鍑犺鏁版嵁锛屽苟涓斾綘鍦ㄦ墽琛屾煡璇腑鐭ラ亾纭垏鐨勮鏁帮紝浣犲彲浠ヤ娇鐢↙IMIT鍔熻兘銆
+ 濡傛灉鏈変竴涓储寮曚笌 <i> ORDER BY</i>涓殑鏉′欢鍖归厤锛孭ostgreSQL 鍙兘灏卞彧澶勭悊瑕佹眰鐨勫ご鍑犳潯璁板綍锛
+ 锛堝惁鍒欏皢瀵规暣涓煡璇㈣繘琛屽鐞嗙洿鍒扮敓鎴愰渶瑕佺殑琛岋級銆傚鏋滃湪鎵ц鏌ヨ鍔熻兘鏃朵笉鐭ラ亾纭垏鐨勮褰曟暟锛
+ 鍙娇鐢ㄦ父鏍(cursor)鍜孎ETCH鍔熻兘銆
+</p>
+<p>
+ 鍙娇鐢ㄤ互涓嬫柟娉曟彁鍙栦竴琛岄殢鏈鸿褰曠殑锛
+</p>
+<pre>
+ SELECT cols
+ FROM tab
+ ORDER BY random()
+ LIMIT 1 ;
+
+</pre>
+
+
+
+<h3> <a name="4.2"></a>4.2) 濡備綍鏌ョ湅琛ㄣ佺储寮曘佹暟鎹簱浠ュ強鐢ㄦ埛鐨勫畾涔夛紵濡備綍鏌ョ湅<i>psql</i>閲岀敤鍒扮殑鏌ヨ鎸囦护骞舵樉绀哄畠浠紵 </h3>
+<p>
+ 鍦<i>psql</i>涓娇鐢 \dt 鍛戒护鏉ユ樉绀烘暟鎹〃鐨勫畾涔夛紝瑕佷簡瑙<i>psql</i>涓殑瀹屾暣鍛戒护鍒楄〃鍙娇鐢╘? 锛屽彟澶栵紝浣犱篃鍙互闃呰 <i>psql</i> 鐨勬簮浠g爜
+ 鏂囦欢<i>pgsql/src/bin/psql/describe.c</i>锛屽畠鍖呮嫭涓虹敓鎴<i>psql</i>鍙嶆枩鏉犲懡浠ょ殑杈撳嚭鐨勬墍鏈 SQL 鍛戒护銆備綘杩樺彲浠ュ甫 <i>-E</i> 閫夐」鍚姩 <i>psql</i>锛
+ 杩欐牱瀹冨皢鎵撳嵃鍑轰綘鍦<i>psql</i>涓墍缁欏嚭鐨勫懡浠ゆ墽琛屾椂鐨勫唴閮ㄥ疄闄呬娇鐢ㄧ殑SQL鏌ヨ璇彞銆侾ostgreSQL涔熸彁渚涗簡涓涓吋瀹筍QL鐨処NFORMATION SCHEMA鎺ュ彛锛
+ 浣犲彲浠ヤ粠杩欓噷鑾峰彇鍏充簬鏁版嵁搴撶殑淇℃伅銆
+
+</p>
+<p>
+ 鍦ㄧ郴缁熶腑涔熸湁涓浜涗互<i>pg_</i> 鎵撳ご鐨勭郴缁熻〃涔熸弿杩颁簡琛ㄧ殑瀹氫箟銆
+</p>
+<p>
+ 浣跨敤 <i>psql -l</i> 鎸囦护鍙互鍒楀嚭鎵鏈夌殑鏁版嵁搴撱
+</p>
+<p>
+ 涔熷彲浠ユ祻瑙堜竴涓 <i>pgsql/src/tutorial/syscat.source</i>鏂囦欢锛屽畠鍒椾妇浜嗗緢澶氬彲浠庢暟鎹簱绯荤粺琛ㄤ腑鑾峰彇淇℃伅鐨凷ELECT璇硶銆
+
+</p>
+
+
+<h3> <a name="4.3"></a>4.3) 濡備綍鏇存敼涓涓瓧娈电殑鏁版嵁绫诲瀷锛 </h3>
+<p>
+ 鍦8.0鐗堟湰閲屾洿鏀逛竴涓瓧娈电殑鏁版嵁绫诲瀷寰堝鏄擄紝鍙娇鐢 ALTER TABLE ALTER COLUMN TYPE 銆
+</p>
+<p>
+ 鍦ㄤ互鍓嶇殑鐗堟湰涓紝鍙互杩欐牱鍋氾細
+</p>
+<pre>
+ BEGIN;
+ ALTER TABLE tab ADD COLUMN new_col new_data_type;
+ UPDATE tab SET new_col = CAST(old_col AS new_data_type);
+ ALTER TABLE tab DROP COLUMN old_col;
+ COMMIT;
+
+</pre>
+<p>
+ 浣犵劧鍚庡彲浠ヤ娇鐢<i>VACUUM FULL tab </i>鎸囦护鏉ヤ娇绯荤粺鏀跺洖鏃犳晥鏁版嵁鎵鍗犵敤鐨勭┖闂淬
+</p>
+
+<h3> <a name="4.4"></a>4.4) 鍗曟潯璁板綍锛屽崟涓〃锛屽崟涓暟鎹簱鐨勬渶澶ч檺鍒舵槸澶氬皯锛 </h3>
+<p>
+ 涓嬮潰鏄竴浜涢檺鍒讹細
+</p>
+<blockquote>
+ <table>
+
+ <tbody>
+ <tr><td>鍗曚釜鏁版嵁搴撴渶澶у昂瀵革紵</td><td>鏃犻檺鍒讹紙宸插瓨鍦ㄦ湁 32TB 鐨勬暟鎹簱锛</td></tr>
+ <tr><td>鍗曚釜琛ㄧ殑鏈澶у昂瀵革紵</td><td>32 TB</td></tr>
+ <tr><td>涓琛岃褰曠殑鏈澶у昂瀵革紵</td><td>1.6 TB</td></tr>
+ <tr><td>涓涓瓧娈电殑鏈澶у昂瀵?</td><td>1 GB</td></tr>
+
+ <tr><td>涓涓〃閲屾渶澶ц鏁帮紵</td><td>鏃犻檺鍒</td></tr>
+ <tr><td>涓涓〃閲屾渶澶у垪鏁帮紵</td><td>250-1600 锛堜笌鍒楃被鍨嬫湁鍏筹級</td></tr>
+ <tr><td>涓涓〃閲岀殑鏈澶х储寮曟暟閲忥紵</td><td>鏃犻檺鍒</td></tr>
+ </tbody>
+</table>
+</blockquote>
+
+
+<p>
+ 褰撶劧锛屽疄闄呬笂娌℃湁鐪熸鐨勬棤闄愬埗锛岃繕鏄鍙楀彲鐢ㄧ鐩樼┖闂淬佸彲鐢ㄥ唴瀛/浜ゆ崲鍖虹殑鍒剁害銆
+ 浜嬪疄涓婏紝褰撲笂杩拌繖浜涙暟鍊煎彉寰楀紓甯稿湴澶ф椂锛岀郴缁熸ц兘涔熶細鍙楀緢澶у奖鍝嶃
+</p>
+
+<p>
+ 鍗曡〃鐨勬渶澶уぇ灏 32 TB 涓嶉渶瑕佹搷浣滅郴缁熷鍗曚釜鏂囦欢涔熼渶杩欎箞澶х殑鏀寔銆傚ぇ琛ㄧ敤澶氫釜 1 GB 鐨勬枃浠跺瓨鍌紝鍥犳鏂囦欢绯荤粺澶у皬鐨勯檺鍒舵槸涓嶉噸瑕佺殑銆
+</p>
+<p>
+ 濡傛灉缂虹渷鐨勫潡澶у皬澧為暱鍒 32K 锛屾渶澶х殑鍗曡〃澶у皬鍜屾渶澶у垪鏁拌繕鍙互澧炲姞鍒板洓鍊嶃
+</p>
+<p>
+ 鏈変竴涓檺鍒跺氨鏄笉鑳藉澶у皬澶氫簬2000瀛楄妭鐨勫垪鍒涘缓绱㈠紩銆傚垢杩愬湴鏄繖鏍风殑绱㈠紩寰堝皯鐢ㄥ埌銆傞氳繃瀵瑰瀛楄妭鍒楃殑鍐呭杩涜MD5鍝堢█杩愮畻缁撴灉杩涜鍑芥暟绱㈠紩鍙鍒楃殑鍞竴鎬у緱鍒颁繚璇侊紝
+ 骞朵笖鍏ㄦ枃妫绱㈠厑璁稿鍒椾腑鐨勫崟璇嶈繘琛屾悳绱€
+</p>
+
+
+<h3> <a name="4.5"></a>4.5) 瀛樺偍涓涓吀鍨嬬殑鏂囨湰鏂囦欢閲岀殑鏁版嵁闇瑕佸灏戠鐩樼┖闂达紵 </h3>
+<p>
+ 涓涓 Postgres 鏁版嵁搴擄紙瀛樺偍涓涓枃鏈枃浠讹級鎵鍗犵敤鐨勭┖闂存渶澶氬彲鑳介渶瑕佺浉褰撲簬杩欎釜鏂囨湰鏂囦欢鑷韩澶у皬5鍊嶇殑纾佺洏绌洪棿銆
+</p>
+<p>
+ 渚嬪锛屽亣璁炬湁涓涓 100,000 琛岀殑鏂囦欢锛屾瘡琛屾湁涓涓暣鏁板拰涓涓枃鏈弿杩般
+ 鍋囪鏂囨湰涓茬殑骞冲潎闀垮害涓20瀛楄妭銆傛枃鏈枃浠跺崰鐢 2.8 MB銆傚瓨鏀捐繖浜涙暟鎹殑PostgreSQL鏁版嵁搴撴枃浠跺ぇ绾︽槸 6.4 MB:
+</p>
+<pre>
+ 28 瀛楄妭: 姣忚鐨勫ご锛堝ぇ绾﹀硷級
+ 24 瀛楄妭: 涓涓暣鏁板瀷瀛楁鍜屼竴涓枃鏈瀷瀛楁
+ + 4 瀛楄妭: 椤甸潰鍐呮寚鍚戝厓缁勭殑鎸囬拡
+ ----------------------------------------
+ 56 瀛楄妭姣忚
+
+ PostgreSQL 鏁版嵁椤电殑澶у皬鏄 8192 瀛楄妭 (8 KB)锛屽垯锛
+
+ 8192 瀛楄妭姣忛〉
+ ------------------- = 146 琛/鏁版嵁椤碉紙鍚戜笅鍙栨暣锛
+ 56 瀛楄妭姣忚
+
+ 100000 鏁版嵁琛
+ -------------------- = 685 鏁版嵁椤碉紙鍚戜笂鍙栨暣锛
+ 146 琛/鏁版嵁椤
+
+ 685 鏁版嵁椤 * 8192 瀛楄妭/椤 = 5,611,520 瀛楄妭锛5.6 MB锛
+</pre>
+
+
+<p>
+ 绱㈠紩涓嶉渶瑕佽繖涔堝鐨勯澶栨秷鑰楋紝浣嗕篃纭疄鍖呮嫭琚储寮曠殑鏁版嵁锛屽洜姝ゅ畠浠篃鍙兘寰堝ぇ銆
+</p>
+<p>
+ 绌哄<i>NULL</i>瀛樻斁鍦ㄤ綅鍥句腑锛屽洜姝ゅ崰鐢ㄥ緢灏戠殑绌洪棿銆
+</p>
+
+<h3> <a name="4.6"></a>4.6) 涓轰粈涔堟垜鐨勬煡璇㈠緢鎱紵涓轰粈涔堣繖浜涙煡璇㈡病鏈夊埄鐢ㄧ储寮曪紵 </h3>
+<p>
+ 骞堕潪姣忎釜鏌ヨ閮戒細鑷姩浣跨敤绱㈠紩銆傚彧鏈夊湪琛ㄧ殑澶у皬瓒呰繃涓涓渶灏忓硷紝骞朵笖鏌ヨ鍙細閫変腑琛ㄤ腑杈冨皬姣斾緥鐨勮褰曟椂鎵嶄細閲囩敤绱㈠紩銆
+ 杩欐槸鍥犱负绱㈠紩鎵弿寮曡捣鐨勯殢鍗崇鐩樺瓨鍙栧彲鑳芥瘮鐩存帴鍦拌鍙栬〃锛堥『搴忔壂鎻忥級鏇存參銆
+
+</p>
+<p>
+ 涓轰簡鍒ゆ柇鏄惁浣跨敤绱㈠紩锛孭ostgreSQL蹇呴』鑾峰緱鏈夊叧琛ㄧ殑缁熻鍊笺傝繖浜涚粺璁″煎彲浠ヤ娇鐢 VACUUM ANALYZE锛屾垨 ANALYZE 鑾峰緱銆
+ 浣跨敤缁熻鍊硷紝浼樺寲鍣ㄧ煡閬撹〃涓湁澶氬皯琛岋紝灏辫兘澶熸洿濂藉湴鍒ゆ柇鏄惁鍒╃敤绱㈠紩銆
+ 缁熻鍊煎纭畾浼樺寲鐨勮繛鎺ラ『搴忓拰杩炴帴鏂规硶涔熷緢鏈夌敤銆傚湪琛ㄧ殑鍐呭鍙戠敓鍙樺寲鏃讹紝搴斿畾鏈熻繘琛岀粺璁″肩殑鏇存柊鏀堕泦銆
+</p>
+<p>
+ 绱㈠紩閫氬父涓嶇敤浜 ORDER BY 鎴栨墽琛岃繛鎺ャ傚涓涓ぇ琛ㄧ殑涓娆¢『搴忔壂鎻忓啀鍋氫竴娆℃帓搴忛氬父姣旂储寮曟壂鎻忚蹇傜劧鑰岋紝濡傛灉灏 LIMIT 鍜 ORDER BY
+ 缁撳悎鍦ㄤ竴璧蜂娇鐢ㄧ殑璇濓紝閫氬父灏嗕細浣跨敤绱㈠紩锛屽洜涓鸿繖鏃朵粎杩斿洖琛ㄤ腑鐨勪竴灏忛儴鍒嗚褰曘
+</p>
+<p>
+ 濡傛灉浣犵‘淇ostgreSQL鐨勪紭鍖栧櫒浣跨敤椤哄簭鎵弿鏄笉姝g‘鐨勶紝浣犲彲浠ヤ娇鐢<code>SET enable_seqscan TO 'off'</code>鎸囦护鏉ュ叧闂『搴忔壂鎻忥紝
+ 鐒跺悗鍐嶆杩愯鏌ヨ锛屼綘灏卞彲浠ョ湅鍑轰娇鐢ㄤ竴涓储寮曟壂鎻忔槸鍚︾‘瀹炶蹇竴浜涖
+</p>
+
+<p>
+
+ 褰撲娇鐢ㄩ氶厤绗︽搷浣滐紝渚嬪 <i>LIKE</i> 鎴 <i>~</i> 鏃讹紝绱㈠紩鍙兘鍦ㄧ壒瀹氱殑鎯呭喌涓嬩娇鐢細
+</p>
+<ul>
+ <li>瀛楃涓茬殑寮濮嬮儴鍒嗗繀椤绘槸鏅氬瓧绗︿覆锛屼篃灏辨槸璇达細
+ <ul>
+ <li> <i>LIKE</i> 妯″紡涓嶈兘浠 <i>%</i> 鎵撳ご銆</li>
+
+ <li> <i>~</i> 锛堟鍒欒〃杈惧紡锛夋ā寮忓繀椤讳互 <i>^</i> 鎵撳ご銆</li>
+ </ul>
+ </li>
+ <li>瀛楃涓蹭笉鑳戒互鍖归厤澶氫釜瀛楃鐨勬ā寮忕被鎵撳ご锛屼緥濡 [a-e]銆</li>
+ <li>澶у皬鍐欐棤鍏崇殑鏌ユ壘锛屽 ILIKE 鍜 ~* 绛変笉浣跨敤绱㈠紩锛屼絾鍙互鐢 <a href="#4.8">4.8</a> 鑺傛弿杩扮殑琛ㄨ揪寮忕储寮曘</li>
+
+ <li>鍦ㄥ仛 initdb 鏃跺繀椤婚噰鐢ㄧ己鐪佺殑鏈湴璁剧疆 C locale锛屽洜涓虹郴缁熶笉鍙兘鐭ラ亾鍦ㄩ潪C locale鎯呭喌鏃朵笅涓涓渶澶у瓧绗︽槸浠涔堛
+ 鍦ㄨ繖绉嶆儏鍐典笅锛屼綘鍙互鍒涘缓涓涓壒娈婄殑<code>text_pattern_ops</code>绱㈠紩鏉ョ敤浜<small>LIKE</small>鐨勭储寮曘
+ </li>
+</ul>
+<p>
+ 鍦8.0涔嬪墠鐨勭増鏈腑锛岄櫎闈炶鏌ヨ鐨勬暟鎹被鍨嬪拰绱㈠紩鐨勬暟鎹被鍨嬬浉鍖归厤锛屽惁鍒欑储寮曠粡甯告槸鏈鐢ㄥ埌锛岀壒鍒槸瀵筰nt2,int8鍜屾暟鍊煎瀷鐨勭储寮曘
+</p>
+
+<h3> <a name="4.7"></a>4.7) 鎴戝浣曟墠鑳界湅鍒版煡璇紭鍖栧櫒鏄庢牱璇勪及澶勭悊鎴戠殑鏌ヨ锛 </h3>
+
+
+<p>鍙傝 <small>EXPLAIN</small> 鎵嬪唽椤点</p>
+
+<h3> <a name="4.8"></a>4.8) 鎴戞庢牱鍋氭鍒欒〃杈惧紡鎼滅储鍜屽ぇ灏忓啓鏃犲叧鐨勬鍒欒〃杈惧紡鏌ユ壘锛熸庢牱鍒╃敤绱㈠紩杩涜澶у皬鍐欐棤鍏虫煡鎵撅紵 </h3>
+<p>
+ 鎿嶄綔绗 <i> ~ </i> 澶勭悊姝e垯琛ㄨ揪寮忓尮閰嶏紝鑰 <i>~*</i> 澶勭悊澶у皬鍐欐棤鍏崇殑姝e垯琛ㄨ揪寮忓尮閰嶃傚ぇ灏忓啓鏃犲叧鐨 LIKE 鍙樼鎴愪负 ILIKE銆
+
+</p>
+<p>
+ 澶у皬鍐欐棤鍏崇殑绛夊紡姣旇緝閫氬父鍐欏仛锛
+</p>
+<pre>
+ SELECT *
+ FROM tab
+ WHERE lower(col) = 'abc';
+</pre>
+
+<p>
+ 杩欐牱灏嗕笉浼氫娇鐢ㄦ爣鍑嗙殑绱㈠紩銆備絾鏄彲浠ュ垱寤轰竴涓湪杩欑鎯呭喌涓嬩娇鐢ㄧ殑琛ㄨ揪寮忕储寮:
+</p>
+<pre>
+ CREATE INDEX tabindex ON tab (lower(col));
+
+</pre>
+<p>
+ 濡傛灉涓婅堪绱㈠紩鍦ㄥ垱寤烘椂鍔犲叆UNIQUE绾︽潫锛岃櫧鐒剁储寮曞瓧娈佃嚜韬唴瀹瑰彲浠ュ瓨鍌ㄥぇ灏忓啓涓嶉檺鐨勫唴瀹癸紝浣嗗鏋滄湁UNIQUE绾︽潫鍚庯紝杩欎簺鍐呭涓嶈兘浠呬粎鏄ぇ灏忓啓涓嶅悓锛堝惁鍒欎細閫犳垚鍐茬獊锛夈備负浜嗕繚璇佷笉鍙戠敓杩欑鎯呭喌锛屽彲浠ヤ娇鐢–HECK绾︽潫鏉′欢鎴栨槸瑙﹀彂鍣ㄥ湪褰曞叆鏃惰繘琛岄檺鍒躲
+</p>
+
+
+<h3> <a name="4.9"></a>4.9) 鍦ㄤ竴涓煡璇㈤噷锛屾垜鎬庢牱妫娴嬩竴涓瓧娈垫槸鍚︿负 <i>NULL</i> 锛熸垜濡備綍鎵嶈兘鍑嗙‘鎺掑簭鑰屼笉璁烘煇瀛楁鏄惁鍚 <i>NULL</i> 鍊硷紵 </h3>
+<p>
+
+ 鐢 <small>IS NULL</small> 鍜 <small>IS NOT NULL</small> 娴嬭瘯杩欎釜瀛楁锛屽叿浣撴柟娉曞涓嬶細
+</p>
+<pre> SELECT *
+ FROM tab
+ WHERE col IS NULL;
+</pre>
+
+<p>涓轰簡鑳藉鍚 <small>NULL</small>瀛楁鎺掑簭锛屽彲鍦 <small>ORDER BY</small> 鏉′欢涓娇鐢 <small>IS NULL</small>鍜
+ <small>IS NOT NULL</small> 淇グ绗︼紝鏉′欢涓虹湡 <i>true</i> 灏嗘瘮鏉′欢涓哄亣<i>false</i> 鎺掑湪鍓嶉潰锛屼笅闈㈢殑渚嬪瓙灏变細灏嗗惈
+ NULL 鐨勮褰曟帓鍦ㄧ粨鏋滅殑涓婇潰閮ㄥ垎锛
+
+</p>
+<pre> SELECT *
+ FROM tab
+ ORDER BY (col IS NOT NULL)
+</pre>
+
+<h3> <a name="4.10"></a>4.10) 鍚勭瀛楃绫诲瀷涔嬮棿鏈変粈涔堜笉鍚岋紵 </h3>
+<blockquote>
+ <table>
+ <tbody>
+ <tr><th>绫诲瀷</th><th>鍐呴儴鍚嶇О</th><th>璇存槑</th></tr>
+
+ <tr><td>VARCHAR(n)</td><td>varchar</td><td>鎸囧畾浜嗘渶澶ч暱搴︼紝鍙橀暱瀛楃涓诧紝涓嶈冻瀹氫箟闀垮害鐨勯儴鍒嗕笉琛ラ綈</td></tr>
+ <tr><td>CHAR(n)</td><td>bpchar</td><td>瀹氶暱瀛楃涓诧紝瀹為檯鏁版嵁涓嶈冻瀹氫箟闀垮害鏃讹紝浠ョ┖鏍艰ˉ榻</td></tr>
+ <tr><td>TEXT</td><td>text</td><td>娌℃湁鐗瑰埆鐨勪笂闄愰檺鍒讹紙浠呭彈琛岀殑鏈澶ч暱搴﹂檺鍒讹級</td></tr>
+ <tr><td>BYTEA</td><td>bytea</td><td>鍙橀暱瀛楄妭搴忓垪锛堜娇鐢∟ULL瀛楃涔熸槸鍏佽鐨勶級</td></tr>
+
+ <tr><td>"char"</td><td>char</td><td>鍗曚釜瀛楃</td></tr>
+ </tbody>
+ </table>
+</blockquote>
+
+<p>
+ 鍦ㄧ郴缁熻〃鍜屽湪涓浜涢敊璇俊鎭噷浣犲皢鐪嬪埌鍐呴儴鍚嶇О銆
+</p>
+<p>
+ 涓婇潰鎵鍒楃殑鍓嶅洓绉嶇被鍨嬫槸"varlena"锛堝彉闀匡級绫诲瀷锛堜篃灏辨槸璇达紝寮澶寸殑鍥涗釜瀛楄妭鏄暱搴︼紝鍚庨潰鎵嶆槸鏁版嵁锛夈
+ 浜庢槸瀹為檯鍗犵敤鐨勭┖闂存瘮澹版槑鐨勫ぇ灏忚澶氫竴浜涖
+ 鐒惰岃繖浜涚被鍨嬪瀹氫箟寰堥暱鏃堕兘鍙互琚帇缂╁瓨鍌紝鍥犳纾佺洏绌洪棿涔熷彲鑳芥瘮棰勬兂鐨勮灏戙
+
+</p>
+<p>
+ <small>VARCHAR(n)</small> 鍦ㄥ瓨鍌ㄩ檺鍒朵簡鏈澶ч暱搴︾殑鍙橀暱瀛楃涓叉槸鏈濂界殑銆
+ <small>TEXT</small> 閫傜敤浜庡瓨鍌ㄦ渶澶у彲杈 1G宸﹀彸浣嗘湭瀹氫箟闄愬埗闀垮害鐨勫瓧绗︿覆銆
+</p>
+<p>
+ <small>CHAR(n)</small> 鏈閫傚悎浜庡瓨鍌ㄩ暱搴︾浉鍚岀殑瀛楃涓层 <small>CHAR(n)</small>浼氭牴鎹墍缁欏畾鐨勫瓧娈甸暱搴︿互绌烘牸琛ヨ冻锛堜笉瓒崇殑瀛楁鍐呭锛夛紝
+ 鑰 <small>VARCHAR(n)</small> 鍙瓨鍌ㄦ墍缁欏畾鐨勬暟鎹唴瀹广
+ <small>BYTEA</small> 鐢ㄤ簬瀛樺偍浜岃繘鍒舵暟鎹紝灏ゅ叾鏄寘鍚 NULL 瀛楄妭鐨勫笺傝繖浜涚被鍨嬪叿鏈夊樊涓嶅鐨勬ц兘銆
+
+</p>
+
+
+
+<h3> <a name="4.11.1"></a>4.11.1) 鎴戞庢牱鍒涘缓涓涓簭鍒楀彿鎴栨槸鑷姩閫掑鐨勫瓧娈碉紵 </h3>
+<p>PostgreSQL 鏀寔 SERIAL 鏁版嵁绫诲瀷銆傦紙瀛楁瀹氫箟涓篠ERIAL鍚庯級灏嗚嚜鍔ㄥ垱寤轰竴涓簭鍒楃敓鎴愬櫒锛屼緥濡傦細
+</p>
+<pre>
+ CREATE TABLE person (
+ id SERIAL,
+ name TEXT
+ );
+</pre>
+<p>
+ 浼氳嚜鍔ㄨ浆鎹负浠ヤ笅SQL璇彞锛
+</p>
+
+<pre>
+ CREATE SEQUENCE person_id_seq;
+ CREATE TABLE person (
+ id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
+ name TEXT
+ );
+</pre>
+<p>
+ 鍙傝 create_sequence 鎵嬪唽椤佃幏鍙栧叧浜庡簭鍒楃敓鎴愬櫒鐨勬洿澶氫俊鎭
+</p>
+
+
+<h3> <a name="4.11.2"></a>4.11.2) 鎴戝浣曡幏寰椾竴涓彃鍏ョ殑搴忓垪鍙风殑鍊硷紵 </h3>
+<p>
+ 涓绉嶆柟娉曟槸鍦ㄦ彃鍏ヤ箣鍓嶅厛鐢ㄥ嚱鏁 nextval() 浠庡簭鍒楀璞¢噷妫绱㈠嚭涓嬩竴涓 SERIAL 鍊硷紝鐒跺悗鍐嶇敤姝ゅ肩簿纭湴鎻掑叆銆備娇鐢
+ <a href="#4.11.1"> 4.11.1</a> 閲岀殑渚嬭〃锛屽彲鐢ㄤ吉鐮佽繖鏍锋弿杩帮細
+
+</p>
+<pre>
+ new_id = execute("SELECT nextval('person_id_seq')");
+ execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
+</pre>
+<p>
+ 杩欐牱杩樿兘鍦ㄥ叾浠栨煡璇腑浣跨敤瀛樻斁鍦 new_id 閲岀殑鏂板硷紙渚嬪锛屼綔涓哄弬鐓 person 琛ㄧ殑澶栭敭锛夈
+ 娉ㄦ剰鑷姩鍒涘缓鐨 SEQUENCE 瀵硅薄鐨勫悕绉板皢浼氭槸 &lt;<i>table</i>&gt;_&lt;<i>serialcolumn</i>&gt;_<i>seq</i>锛
+ 杩欓噷 table 鍜 serialcolumn 鍒嗗埆鏄綘鐨勮〃鐨勫悕绉板拰浣犵殑 SERIAL 瀛楁鐨勫悕绉般
+</p>
+<p>
+ 绫讳技鐨勶紝鍦 SERIAL 瀵硅薄缂虹渷鎻掑叆鍚庝綘鍙互鐢ㄥ嚱鏁 currval() 妫绱㈠垰璧嬪肩殑 SERIAL 鍊硷紝渚嬪锛
+
+</p>
+<pre>
+ execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
+ new_id = execute("SELECT currval('person_id_seq')");
+</pre>
+
+<h3> <a name="4.11.3"></a>4.11.3) 鍚屾椂浣跨敤 <i>currval()</i> 浼氬鑷村拰鍏朵粬鐢ㄦ埛鐨勫啿绐佹儏鍐靛悧锛 </h3>
+<p>
+ 涓嶄細銆<i>currval()</i> 杩斿洖鐨勬槸浣犳湰娆′細璇濊繘绋嬫墍璧嬬殑鍊艰屼笉鏄墍鏈夌敤鎴风殑褰撳墠鍊笺<br/>
+
+</p>
+
+<h3> <a name="4.11.4"></a>4.11.4) 涓轰粈涔堜笉鍦ㄤ簨鍔″紓甯镐腑姝㈠悗閲嶇敤搴忓垪鍙峰憿锛熶负浠涔堝湪搴忓垪鍙峰瓧娈电殑鍙栧间腑瀛樺湪闂存柇鍛紵 </h3>
+<p>
+ 涓轰簡鎻愰珮骞跺彂鎬э紝搴忓垪鍙峰湪闇瑕佺殑鏃跺欒祴浜堟鍦ㄨ繍琛岀殑浜嬪姟锛屽苟涓斿湪浜嬪姟缁撴潫涔嬪墠涓嶈繘琛岄攣瀹氾紝
+ 杩欏氨浼氬鑷村紓甯镐腑姝㈢殑浜嬪姟鍚庯紝搴忓垪鍙蜂細鍑虹幇闂撮殧銆
+</p>
+
+<h3> <a name="4.12"></a>4.12) 浠涔堟槸 <small>OID</small> 锛熶粈涔堟槸 <small>CTID</small> 锛 </h3>
+
+
+<p>PostgreSQL 閲屽垱寤虹殑姣忎竴琛岃褰曢兘浼氳幏寰椾竴涓敮涓鐨<small>OID</small>锛岄櫎闈炲湪鍒涘缓琛ㄦ椂浣跨敤<small>WITHOUT OIDS</small>閫夐」銆
+ <small>OID</small>鍒涘缓鏃朵細鑷姩鐢熸垚涓涓4瀛楄妭鐨勬暣鏁帮紝鎵鏈 OID 鍦ㄧ浉搴擯ostgreSQL鏈嶅姟鍣ㄤ腑鍧囨槸鍞竴鐨勩 鐒惰岋紝瀹冨湪瓒呰繃40浜挎椂灏嗘孩鍑猴紝
+ <small>OID</small>姝ゅ悗浼氬嚭鐜伴噸澶嶃侾ostgreSQL 鍦ㄥ畠鐨勫唴閮ㄧ郴缁熻〃閲屼娇鐢 OID 鍦ㄨ〃涔嬮棿寤虹珛鑱旂郴銆
+</p>
+<p>
+ 鍦ㄧ敤鎴风殑鏁版嵁琛ㄤ腑锛屾渶濂芥槸浣跨敤<small>SERIAl</small>鏉ヤ唬鏇<small>OID</small>
+
+ 鍥犱负<small>SERIAL</small>鍙淇濊瘉鍦ㄥ崟涓〃涓殑鏁板兼槸鍞竴鐨勫氨鍙互浜嗭紝杩欐牱瀹冩孩鍑虹殑鍙兘鎬у氨闈炲父灏忎簡锛
+ <small>SERIAL8</small>鍙敤鏉ヤ繚瀛8瀛楄妭鐨勫簭鍒楁暟鍊笺
+</p>
+
+<p>
+ <small>CTID</small> 鐢ㄤ簬鏍囪瘑甯︾潃鏁版嵁鍧楋紙鍦板潃锛夊拰锛堝潡鍐咃級鍋忕Щ鐨勭壒瀹氱殑鐗╃悊琛屻
+ <small>CTID</small> 鍦ㄨ褰曡鏇存敼鎴栭噸杞藉悗鍙戠敓鏀瑰彉銆傜储寮曟暟鎹娇鐢ㄥ畠浠寚鍚戠墿鐞嗚銆
+</p>
+
+
+
+<h3> <a name="4.13"></a>4.13) 涓轰粈涔堟垜鏀跺埌閿欒淇℃伅鈥<i>ERROR: Memory exhausted in AllocSetAlloc()</i>鈥濓紵 </h3>
+<p>
+ 杩欏緢鍙兘鏄郴缁熺殑铏氭嫙鍐呭瓨鐢ㄥ厜浜嗭紝鎴栬呭唴鏍稿鏌愪簺璧勬簮鏈夎緝浣庣殑闄愬埗鍊笺傚湪鍚姩 postmaster 涔嬪墠璇曡瘯涓嬮潰鐨勫懡浠わ細
+</p>
+<pre>
+ ulimit -d 262144
+ limit datasize 256m
+</pre>
+<p>
+ 鍙栧喅浜庝綘鐢ㄧ殑 shell锛屼笂闈㈠懡浠ゅ彧鏈変竴鏉¤兘鎴愬姛锛屼絾鏄畠灏嗘妸浣犵殑杩涚▼鏁版嵁娈甸檺鍒惰寰楁瘮杈冮珮锛
+ 鍥犺屼篃璁歌兘璁╂煡璇㈠畬鎴愩傝繖鏉″懡浠ゅ簲鐢ㄤ簬褰撳墠杩涚▼锛屼互鍙婃墍鏈夊湪杩欐潯鍛戒护杩愯鍚庡垱寤虹殑瀛愯繘绋嬨
+ 濡傛灉浣犳槸鍦ㄨ繍琛孲QL瀹㈡埛绔椂鍥犱负鍚庡彴杩斿洖浜嗗お澶氱殑鏁版嵁鑰屽嚭鐜伴棶棰橈紝璇峰湪杩愯瀹㈡埛绔箣鍓嶆墽琛屼笂杩板懡浠ゃ
+
+</p>
+
+<h3> <a name="4.14"></a>4.14) 鎴戝浣曟墠鑳界煡閬撴墍杩愯鐨凱ostgreSQL鐨勭増鏈紵 </h3>
+<p>
+ 浠 psql 閲岋紝杈撳叆 <code>SELECT version();</code>鎸囦护銆
+</p>
+
+<h3> <a name="4.15"></a>4.15) 鎴戝浣曞垱寤轰竴涓己鐪佸兼槸褰撳墠鏃堕棿鐨勫瓧娈碉紵 </h3>
+<p>
+ 浣跨敤 CURRENT_TIMESTAMP锛
+
+</p>
+<pre>
+ CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
+</pre>
+
+
+<h3> <a name="4.16"></a>4.16) 鎴戞庢牱杩涜 outer join 锛堝杩炴帴锛夛紵 </h3>
+<p>PostgreSQL 閲囩敤鏍囧噯鐨 SQL 璇硶鏀寔澶栬繛鎺ャ傝繖閲屾槸涓や釜渚嬪瓙锛</p>
+<pre>
+ SELECT *
+ FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
+</pre>
+<p>鎴栨槸</p>
+
+<pre>
+ SELECT *
+ FROM t1 LEFT OUTER JOIN t2 USING (col);
+</pre>
+<p>
+ 杩欎袱涓瓑浠风殑鏌ヨ鍦 t1.col 鍜 t2.col 涓婂仛杩炴帴锛屽苟涓旇繑鍥 t1 涓墍鏈夋湭杩炴帴鐨勮锛堥偅浜涘湪 t2 涓病鏈夊尮閰嶇殑琛岋級銆
+ 鍙砙澶朷杩炴帴锛圧IGHT OUTER JOIN锛夊皢杩斿洖 t2 涓湭杩炴帴鐨勮銆
+ 瀹屽叏澶栬繛鎺ワ紙FULL OUTER JOIN锛夊皢杩斿洖 t1 鍜 t2 涓湭杩炴帴鐨勮銆
+ 鍏抽敭瀛 OUTER 鍦ㄥ乏[澶朷杩炴帴銆佸彸[澶朷杩炴帴鍜屽畬鍏╗澶朷杩炴帴涓槸鍙夌殑锛屾櫘閫氳繛鎺ヨ绉颁负鍐呰繛鎺ワ紙INNER JOIN锛夈
+</p>
+
+
+<h3> <a name="4.17"></a>4.17) 濡備綍浣跨敤娑夊強澶氫釜鏁版嵁搴撶殑鏌ヨ锛 </h3>
+<p>
+ 娌℃湁鍔炴硶鏌ヨ褰撳墠鏁版嵁搴撲箣澶栫殑鏁版嵁搴撱
+ 鍥犱负PostgreSQL瑕佸姞杞戒笌鏁版嵁搴撶浉鍏崇殑绯荤粺鐩綍锛堢郴缁熻〃锛夛紝鍥犳璺ㄦ暟鎹簱鐨勬煡璇㈠浣曟墽琛屾槸涓嶅畾鐨勩
+</p>
+
+<p>
+ 闄勫姞澧炲兼ā鍧梒ontrib/dblink鍏佽閲囩敤鍑芥暟璋冪敤瀹炵幇璺ㄥ簱鏌ヨ銆傚綋鐒剁敤鎴蜂篃鍙互鍚屾椂杩炴帴鍒颁笉鍚岀殑鏁版嵁搴撴墽琛屾煡璇㈢劧鍚庡湪瀹㈡埛绔悎骞剁粨鏋溿
+</p>
+
+<h3> <a name="4.18"></a>4.18) 濡備綍璁╁嚱鏁拌繑鍥炲琛屾垨澶氬垪鏁版嵁锛 </h3>
+<p>
+ 鍦ㄥ嚱鏁颁腑杩斿洖鏁版嵁璁板綍闆嗙殑鍔熻兘鏄緢瀹规槗浣跨敤鐨勶紝璇︽儏鍙傝锛
+ <a href="http://techdocs.postgresql.org/guides/SetReturningFunctions">http://techdocs.postgresql.org/guides/SetReturningFunctions</a>
+</p>
+
+<h3> <a name="4.19"></a>4.19) 涓轰粈涔堟垜鍦ㄤ娇鐢≒L/PgSQL鍑芥暟瀛樺彇涓存椂琛ㄦ椂浼氭敹鍒伴敊璇俊鎭渞elation with OID ##### does not exist鈥濓紵 </h3>
+
+<p>
+ PL/PgSQL浼氱紦瀛樺嚱鏁扮殑鑴氭湰鍐呭锛岀敱姝ゅ甫鏉ョ殑涓涓笉濂界殑鍓綔鐢ㄦ槸鑻ヤ竴涓 PL/PgSQL
+ 鍑芥暟璁块棶浜嗕竴涓复鏃惰〃锛岀劧鍚庤琛ㄨ鍒犻櫎骞堕噸寤轰簡锛屽垯鍐嶆璋冪敤璇ュ嚱鏁板皢澶辫触锛
+ 鍥犱负缂撳瓨鐨勫嚱鏁板唴瀹逛粛鐒舵寚鍚戞棫鐨勪复鏃惰〃銆傝В鍐崇殑鏂规硶鏄湪 PL/PgSQL 涓敤<small>EXECUTE</small>
+ 瀵逛复鏃惰〃杩涜璁块棶銆傝繖鏍蜂細淇濊瘉鏌ヨ鍦ㄦ墽琛屽墠鎬讳細琚噸鏂拌В鏋愩
+</p>
+
+<h3> <a name="4.20"></a>4.20) 鐩墠鏈夊摢浜涙暟鎹鍒舵柟妗堝彲鐢紵 </h3>
+<p>
+ 鈥滃鍒垛濆彧鏄竴涓湳璇紝鏈夊ソ鍑犵澶嶅埗鎶鏈彲鐢紝姣忕閮芥湁浼樼偣鍜岀己鐐癸細
+</p>
+<p>
+
+ 涓/浠庡鍒舵柟寮忔槸鍏佽涓涓富鏈嶅姟鍣ㄦ帴鍙楄/鍐欑殑鐢宠锛岃屽涓粠鏈嶅姟鍣ㄥ彧鑳芥帴鍙楄/<small>SELECT</small>鏌ヨ鐨勭敵璇凤紝
+ 鐩墠鏈娴佽涓斿厤璐圭殑涓/浠嶱ostgreSQL澶嶅埗鏂规鏄
+ <a href="http://gborg.postgresql.org/project/slony1/projdisplay.php">Slony-I </a>銆
+</p>
+<p>
+ 澶氫釜涓绘湇鍔″櫒鐨勫鍒舵柟寮忓厑璁稿皢璇/鍐欑殑鐢宠鍙戦佺粰澶氬彴鐨勮绠楁満锛岃繖绉嶆柟寮忕敱浜庨渶瑕佸湪澶氬彴鏈嶅姟鍣ㄤ箣闂村悓姝ユ暟鎹彉鍔
+ 鍙兘浼氬甫鏉ヨ緝涓ラ噸鐨勬ц兘鎹熷け锛<a href="http://pgfoundry.org/projects/pgcluster/">Pgcluster</a>鏄洰鍓嶈繖绉嶆柟妗
+ 涓渶濂界殑锛岃屼笖杩樺彲浠ュ厤璐逛笅杞姐
+</p>
+<p>
+ 涔熸湁涓浜涘晢涓氶渶浠樿垂鍜屽熀浜庣‖浠剁殑鏁版嵁澶嶅埗鏂规锛屾敮鎸佷笂杩板悇绉嶅鍒舵ā鍨嬨
+</p>
+
+
+<h3> <a name="4.21">4.21</a>) 涓轰綍鏌ヨ缁撴灉鏄剧ず鐨勮〃鍚嶆垨鍒楀悕涓庢垜鐨勬煡璇㈣鍙ヤ腑鐨勪笉鍚岋紵涓轰綍澶у啓鐘舵佷笉鑳戒繚鐣欙紵 </h3>
+
+<p>
+ 鏈甯歌鐨勫師鍥犳槸鍦ㄥ垱寤鸿〃鏃跺琛ㄥ悕鎴栨槸鍒楀悕浣跨敤浜嗗弻寮曞彿鈥溾濓紝褰撲娇鐢ㄤ簡鍙屽紩鍙峰悗锛岃〃鍚嶆垨鍒楀悕锛堢О涓烘爣璇嗙锛夊瓨鍌ㄦ椂鏄尯鍒
+<a href="http://www.postgresql.org/docs/8.0/static/sql-syntax.html#SQL-SYNTAX-IDENTIFIERS">澶у皬鍐欑殑</a>锛
+ 杩欐剰璋撶潃浣犲湪鏌ヨ鏃惰〃鍚嶆垨鍒楀悕涔熷簲浣跨敤鍙屽紩鍙凤紝涓浜涘伐鍏疯蒋浠讹紝鍍弍gAdmin浼氬湪鍙戝嚭鍒涘缓琛ㄧ殑鎸囦护鏃惰嚜鍔ㄥ湴鍦ㄦ瘡涓爣璇嗙涓婂姞鍙屽紩鍙枫
+ 鍥犳锛屼负浜嗘爣璇嗙鐨勭粺涓锛屼綘搴旇锛
+</p>
+<ul>
+<li>鍦ㄥ垱寤鸿〃鏃堕伩鍏嶅皢鏍囪瘑绗︿娇鐢ㄥ弻寮曞彿寮曡捣鏉ャ</li>
+<li>鍦ㄦ爣璇嗙涓彧浣跨敤灏忓啓瀛楁瘝銆</li>
+
+<li>锛堜负浜嗕笌宸插瓨鍦ㄧ殑鏍囪瘑绗︾浉鍚岋級鍦ㄦ煡璇腑浣跨敤鍙屽紩鍙峰皢鏍囪瘑绗﹀紩璧锋潵銆</li>
+</ul>
+
+</body>
+
+</html> \ No newline at end of file