
                          PostgreSQL 常FAQ
                                       
   2007 年 2  8   22:43:13 EST
   2007 年 2  12   12:00:04 CST
   
   人Bruce Momjian (pgman@candle.pha.pa.us)
   人(ChaoYi, Kuo)kuo.chaoyi@gmail.com
   
   以
   http://www.postgresql.org/files/documentation/faqs/FAQ.html 
   
   系統平 http://www.postgresql.org/docs/faq/
   裡
     _________________________________________________________________
   
常

   1.1)PostgreSQL 麼該麼
   1.2)誰管PostgreSQL 
   1.3)PostgreSQL麼
   1.4)PostgreSQL以系統平
   1.5)裡PostgreSQL
   1.6) PostgreSQL 麼
   1.7)裡 PostgreSQL 
   1.8)交 BUG  
   1.9)解已 BUG 缺
   1.10) 
   1.11)該樣 SQL 
   1.12)交 
   1.13)PostgreSQL 庫系統起
   1.14)PostgreSQL 以家
   
客端

   2.1)以麼 PostgreSQL 
   2.2)麼工以 PostgreSQL  Web  
   2.3)PostgreSQL 形(GUI)
   
系統管

   3.1)樣 PostgreSQL  /usr/local/pgsql 以
   3.2)
   3.3)樣調庫伺以好
   3.4)PostgreSQL 裡以麼樣調試
   3.5)麼試Sorry, too many clients 
   3.6)PostgreSQL 容
   3.7)(使 PostgreSQL )使麼硬
   


   4.1) 詢 幾
   4.2) 表索庫以義 psql
   裡詢令並顯示
   4.3) 
   4.4) 表庫大
   4.5) 件裡空
   4.6) 麼詢麼詢索
   4.7) 詢樣估詢
   4.8) 樣表索大寫
   表樣索大寫
   4.9) 詢裡樣檢測
   NULL確NULL
   4.10) 種符麼
   4.11.1) 樣建
   4.11.2) 
   4.11.3) 使 currval() 
   4.11.4) 麼常麼中
   
   4.12) 麼 OID麼 CTID 
   4.13) 麼誤ERROR: Memory exhausted in
   AllocSetAlloc()
   4.14)  PostgreSQL 
   4.15) 建 
   4.16) outer join詢
   4.17) 庫詢
   4.18) 
   4.19) 麼使 PL/PgSQL 表誤relation
   with OID ##### does not exist
   4.20) 寫(replication)
   4.21) 詢顯示表詢中
   大寫
     _________________________________________________________________
   
常

  1.1) PostgreSQL 麼該麼
  
   PostgreSQL  Post-Gres-Q-L簡稱Postgres
   人裡件 MP3   
   
   PostgreSQL 庫系統統業
   庫系統代 DBMS
   系統使強PostgreSQL
   費並代碼以
   
   PostgreSQL
   主並網繫社
    被任
    人常FAQ
   http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html
   
  1.2) 誰 PostgreSQL 
  
    PostgreSQL人麼中
   央麼屬 --- 
   確  CVS管工設
   主管工PostgreSQLPostgreSQL
    任人
    人社 就件表
   PostgreSQL詳 人常 (Developer's FAQ) 
   
  1.3) PostgreSQL 麼?
  
   PostgreSQL BSD 許使
   PostgreSQL 以 PostgreSQL
   代碼以就  身追訴
   責任就 以
   就使BSD容
   
   PostgreSQL 庫管系統
   
   c1996-2005PostgreSQL c1994-1996
    大
   
   Portions copyright (c) 1996-2005,PostgreSQL Global Development Group
   Portions Copyright (c) 1994-6 Regents of the University of
   California
   
   許任使修任費
   並 簽署 段以段
   
   
   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.
   
   任 大 使
   任人
    伴失責任使 大
   已建失
   
   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.
   
    大確任
   裡份  大責任維
   強修
   
   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.
   
  1.4) PostgreSQL 以系統平
  
   說任 UNIX 容系統 PostgreSQL
   裡確測試平
   
   PostgreSQL 以微 Windows-NT 系統
   Win2000 SP4WinXP  Win2003已製
   http://pgfoundry.org/projects/pginstallerMSDOSWindows業
   系統 Win95Win98WinMeCygwin模PostgreSQL
   
    Novell Netware 6  http://forge.novell.com
   OS/2(eComStation)
   http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgre
   SQL&stype=all&sort=type&dir=%2F 
   
  1.5) 裡 PostgreSQL
  
   覽 http://www.postgresql.org/ftp/ FTP
   ftp://ftp.PostgreSQL.org/pub/ 
   
  1.6)  PostgreSQL 麼
  
   PostgreSQL  8.2.3 
   
   年主幾
   
  1.7) 裡 PostgreSQL 
  
   PostgreSQL社件表大幫件表主
   
   http://www.postgresql.org/community/lists/ General 
   Bug件表好
   
   主IRC FreeNode(irc.freenode.net)#postgresql
    以使 UNIX  irc令  irc -c '#postgresql'
   "$USER" irc.freenode.net 使IRC客端網絡
    PostgreSQL 西 (#postgersql-es) 
   (#postgresql-fr)樣 EFNET  PostgreSQL 交 
   
   表 http://techdocs.postgresql.org/companies.php
   覽
   
  1.8) 交 BUG  
  
   訪 http://www.postgresql.org/support/submitbug填寫 Bug
    表 樣訪 ftp  ftp://ftp.PostgreSQL.org/pub/
   檢PostgreSQL 
   
   使 Bug 交表  PostgreSQL 件表 Bug
   常以
     * 交容 Bug  Bug  
     * 交容已 Bug 並已  TODO 任表
     * 交 Bug 已被修
     * 交 Bug 已修 
     * 交詳細
          + 系統
          + PostgreSQL 
          +  Bug 測試
          + 調試
          + 調試蹤輸
     * 交容 Bug以工
          + 建並 主
          +  Bug 修被  TODO 任表
       
  1.9) 解已 BUG 缺
  
   PostgreSQL  SQL:2003  TODO 表解已 Bug
   表缺
   
    常以
     * 該已  TODO 任表
     * 該  
          + 符 SQL 
          + 該大大 代碼帶好微足
          + 該 
     * 該被  TODO 任表
       
   PostgreSQL 使 Bug 蹤系統 件表中
   以 TODO
   任表總工實Bug中
    影Bug總快被修
   修 CVS
   使
   
  1.10)  
  
   PostgreSQL 大主詳細 測試
   /doc 註 $PGHOME/doc  以覽 PostgreSQL
   網http://www.PostgreSQL.org/docs
   
   PostgreSQL
   http://www.postgresql.org/docs/books/awbook.html 
   http://www.commandprompt.com/ppbook/  大 PostgreSQL
   購買 Korry Douglas 編寫
   http://techdocs.PostgreSQL.org/techdocs/bookreviews.php 大
   PostgreSQL 簡  http://techdocs.PostgreSQL.org/ 
   PostgreSQL 大 
   
   客端令psql以 \d  
   令顯示符使 \?
   以顯示令
   
    web 
   
  1.11) 該樣 SQL 
  
   述PostgreSQL Teach Yourself SQL in
   21 Days, Second Edition詳細紹網
   http://members.tripod.com/er4ebus/sql/index.htm 許The
   Practical SQL Handbook Bowman, Judith S.
   編寫Addison-Wesley The Complete Reference SQL,
   Groff 編寫McGraw-Hill 
   
   網好
     * http://www.intermedia.net/support/sql/sqltut.shtm
     * http://sqlcourse.com.
     * http://www.w3schools.com/sql/default.asp
     * http://mysite.verizon.net/Graeme_Birchall/id1.html
       
  1.12)交 
  
   詳 人常 (Developer's FAQ) 
   
  1.13) PostgreSQL 庫系統起
  
   好幾種  
   
   
          PostgreSQL 大庫
          詢觸
          義繼並
          
          
   
          PostgreSQL庫似快
           庫常 +/-
          10%
          
    
          庫  就
          測試缺穩代碼 beta
          測試並
          顯示以穩使信
          庫
          
   
          件表常大人以幫解決碰
          任
          總解決庫並總 
          決
          人群觸使PostgreSQL
          庫好業
          以給給人1.7 
          
    
          任費
           以  裡 代碼
          裡 BSD容
          
  1.14) PostgreSQL 以家?
  
   PostgreSQL 8.0使系統庫
   8.0 以 PostgreSQL 身
     _________________________________________________________________
   
客端

  2.1) 以麼 PostgreSQL 
  
   PostgreSQL ( ) C  C
      好
   以
   
   編 PHP 訪 PostgreSQL PerlTCLPython
   以 http://gborg.postgresql.org 網
   Drivers/Interfaces  並 Internet 容索
   
  2.2) 麼工以 PostgreSQL  Web  
  
   紹以庫http://www.webreview.com
   
    Web PHP 極好 http://www.php.net/
   
   任人 Perl  使 CGI.pm  DBD::Pg  mod_perl
   
   
  2.3)PostgreSQL 形
  
   人 PostgreSQLGUI 形工
   PostgreSQL社 詳細表
     _________________________________________________________________
   
系統管

  3.1)樣 PostgreSQL  /usr/local/pgsql 以
  
    configure   --prefix  
   
  3.2) 
  
    PostgreSQL 許 unix  TCP/IP
     修置件 postgresql.conf 
   listen_addresses置件 $PGDATA/pg_hba.conf 
     host-based 身份並
   PostgreSQL  PostgreSQL 伺
   
  3.3) 樣調庫以好
  
   主以 PostgreSQL 
   
   詢
          主修詢以好:
          
          + 建索表索
          + 使 COPY 代 Insert 
          + SQL以交
          + 索使 CLUSTER
          + 詢使 LIMIT
          + 使 編詢Prepared Query)
          + 使 ANALYZE 以精確統
          + 使 VACUUM  pg_autovacuum
          + 大索建索
            
   伺置
          置件 postgres.conf 設
          置影表
          管/庫伺/庫伺置
          解http://www.varlena.com/varlena/GeneralBits/Tidb
          its/annotated_conf_e.html 
          http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html
          
   硬
          硬影覽
          http://candle.pha.pa.us/main/writings/pgsql/hw_performance/inde
          x.html  http://www.powerpostgresql.com/PerfList/
          
  3.4)PostgreSQL 裡以麼樣調試
  
   PostgreSQL 似 log_*
   伺置詢統工調試測試
   幫
   
  3.5) 麼試Sorry, too many
  clients已太
  
   表示 已  100 並() 修
   postgresql.conf 件 max_connections    postmaster
   併修 postmaster
   
  3.6)PostgreSQL 容 
  
   PostgreSQL 次主 Bug 修工 
   7.4.8  7.4.9  dump  restore
   庫伺伺
   
   PostgreSQL該 使主快
   管次風PostgreSQL 修
    Bug
   碼以風PostgreSQL社
   風
   
   主 7.3  7.4常修系統表表 
    件容 中
   dump/中
   reload主 
   
  3.7)(使 PostgreSQL )使麼硬 
  
   硬大容人總信硬質
   實 ECC RAM帶 SCSI
   硬質主便貨  好
   PostgreSQL 幾以任硬
     系統 就 究 硬
   件表 硬置
     _________________________________________________________________
   


  4.1) 詢 幾
  
    幾並 詢中
   確 以使 LIMIT  索 ORDER BY 中
   件PostgreSQL 就 幾
   詢詢確
    使游(cursor)FETCH
   
   使以
       SELECT  cols
      FROM tab
      ORDER BY random()
      LIMIT 1 ;

  4.2)
  表索庫以義psql裡詢令並顯示
  
  
   psql使 \dt 令顯示表義解 psql 中
   令表使 \?  以 psql 代碼 件
   pgsql/src/bin/psql/describe.c psql 令輸 SQL
   令 以帶 -E   psql 樣  psql 中
   給令實使 SQL
   詢PostgreSQL容 SQL INFORMATION SCHEMA 
    以裡庫
   
   系統以 pg_  系統表述表義
   
   使 psql -l 令以庫
   
   以覽 pgsql/src/tutorial/syscat.source
   件庫系統表SELECT
   
  4.3) 
  
   8.0裡容使 ALTER TABLE ALTER COLUMN
   TYPE 
   
   以以樣
    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;

    以使 VACUUM FULL tab 令使系統空
   
  4.4) 表庫大
  
   
   
     庫大尺寸    已 32TB 庫
     表大尺寸      32 TB
     大尺寸     1.6 TB
     大尺寸?      1 GB
     表裡大       
     表裡大    250-1600 
     表裡大索 
   
   實空/交
   實述常大系統大影
   
   表大大 32 TB 業
   系統件麼大大表 1 GB 件 
   件系統大
   
    大 32K 大表大大以 
   
   就大2000
   建索幸樣索
   容MD5索
   並檢索許索
   
  4.5) 件裡空
  
    Postgres 庫
   件空件身大5空
   
   
    100,000 件述 設
   串平度20(Byte)件 2.8 MB
   PostgreSQL庫件大 5.2 MB:
     24 :  大
     24 : 
   +  4 :  
   ----------------------------------------
     52 

   PostgreSQL  大 8192  (8 KB)

   8192 
   -------------------   =  158 / 
     52 

   100000 
   --------------------  =  633  
      146 /

   633   * 8192 /   = 5,185,536 5.2 MB

   索麼確實被索 
   大
   
   空 NULL  空
   
  4.6) 麼詢麼詢索
  
   並詢使索表大並詢
   表索  索起
   表 
   
   使索PostgreSQL
    表統統以使 VACUUM ANALYZE ANALYZE
    使統表中
   就 好索
   統確 表容
   統
   
   索常 ORDER BY
   大表次 次常索快
    LIMIT  ORDER BY
   起使話常使索 表
   
    確信PostgreSQL使 確 以使SET
   enable_seqscan TO 'off'令 
   次詢 就以使索確實快
   
   使符 LIKE  ~ 索使
     * 符串 符串就說
          + LIKE 模以 %  
          + ~ 表模 以 ^  
     * 符串以符模  [a-e]
     * 大寫 ILIKE  ~* 使索以 4.8
       述表索
     *  initdb   置 C
       locale 系統 C locale 大符麼
       種 以建 text_pattern_ops 索
       LIKE 索
       
    8.0 中
   詢索索常被
    int2, int8 索
   
  4.7) 詢樣估詢
  
    EXPLAIN  
   
  4.8) 樣表索大寫
  表樣索大寫
  
   符 ~ 表 ~* 大寫表大寫
   LIKE 種 ILIKE
   
   大寫常寫
    SELECT *
    FROM tab
    WHERE lower(col) = 'abc';

   樣使索以建種使表索
   :
    CREATE INDEX tabindex ON tab (lower(col));

   述索建  UNIQUE 索身容以
   大寫容 UNIQUE
   容大寫 
   種以使 CHECK 件觸
   
  4.9) 詢裡樣檢測 NULL
  確 NULL 
  
    IS NULL  IS NOT NULL 測試
   SELECT *
   FROM tab
   WHERE col IS NULL;

    NULL  ORDER BY 件使 IS NULL  IS NOT
   NULL 修飾符件 true 件 false 
   就 NULL 
   SELECT *
   FROM tab
   ORDER BY (col IS NOT NULL)

  4.10) 種符麼
  
    稱 說
   VARCHAR(n) varchar 大度
   符串足義度
   CHAR(n) bpchar 符串實足義度以空 
   TEXT text 大度
   BYTEA bytea 使NULL符許
   "char" char 符
   
   系統表誤裡 稱
   
   種 "varlena"就說 
   度 實空大
   義以被縮 
   空 
   
   VARCHAR(n) 大度符串好 TEXT 
   大 1G 左義度符串
   
   CHAR(n) 度符串
   CHAR(n) 給度以空 足足容 
   VARCHAR(n) 給容 BYTEA 尤
   NULL 差
   
  4.11.1) 樣建
  
   PostgreSQL  SERIAL
   義SERIAL建
   CREATE TABLE person (
      id   SERIAL,
      name TEXT
   );

   以SQL
   CREATE SEQUENCE person_id_seq;
   CREATE TABLE person (
      id   INT4 NOT NULL DEFAULT nextval('person_id_seq'),
      name TEXT
   );

    create_sequence  
   
  4.11.2) 
  
   種 nextval() 象裡檢索 SERIAL
   精確使 4.11.1 裡表碼樣述
   new_id = execute("SELECT nextval('person_id_seq')");
   execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");

   樣詢使 new_id 裡 person
   表 注建 SEQUENCE 象稱
   <table>_<serialcolumn>_seq 裡 table  serialcolumn
    表稱  SERIAL 稱
   
   似 SERIAL 象  以 currval() 檢索賦
   SERIAL 
   execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
   new_id = execute("SELECT currval('person_id_seq')");

  4.11.3) 使 currval() 
  
   currval()  次話賦
   
  4.11.4) 麼常麼
  
   併賦
   並 就常中
   
   
  4.12) 麼 OID 麼 CTID 
  
   PostgreSQL 裡建 OID建表使
   WITHOUT OIDS   OID 建 4 OID 
   PostgreSQL 伺  40溢 OID 
   PostgreSQL 系統表裡使 OID
   表建繫
   
   表好使 SERIAl 代 OID   SERIAL 
   表就以樣溢就常
   SERIAL8 8
   
   CTID 帶移 CTID
   被索使
   
  4.13) 麼誤ERROR: Memory exhausted in AllocSetAlloc()
  
   系統 
   postmaster 試試令
   ulimit -d 262144
   limit datasize 256m

   決 
   shell令 段
    許詢令以令建
   
    SQL客端 太客
   述令
   
  4.14) PostgreSQL
  
    psql 裡輸 SELECT version();令
   
  4.15) 建 
  
   使 CURRENT_TIMESTAMP
   CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );

  4.16) 樣 outer join 
  
   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 t2  FULL OUTER JOIN t1  t2
     OUTER 左[][][]中
   被稱INNER JOIN
   
  4.17) 使庫詢
  
   辦詢庫庫
    PostgreSQL 庫系統系統表 
   跨庫詢
   
    模 contrib/dblink
   許調實跨庫詢以庫
   詢客端併
   
  4.18) 
  
   容使詳
   http://techdocs.postgresql.org/guides/SetReturningFunctions
   
  4.19) 麼使 PL/PgSQL 表誤relation with OID
  ##### does not exist
  
   PL/PgSQL 緩容帶好
   PL/PgSQL
   訪表該表被並建次調該
     緩容表解決 PL/PgSQL 中
   EXECUTE 表訪樣詢總被解
   
  4.20) 寫(replication)
  
   寫好幾種寫種缺
   
   主/寫許主伺/寫伺
   /SELECT詢 費主/PostgreSQL寫
   Slony-I 
   
   主伺寫許/寫給主種
   伺 帶失Pgcluster
   種好並以費
   
   費硬寫述種寫模
   
  4.21) 詢顯示表詢大寫
  
   常 建表表使( ' '
   )使表稱符 大寫
    詢表使工 pgAdmin
   建表令符   
   符統 該
     * 建表符使起
     * 符使寫
     * 已符詢使符起
