Skip to content
Snippets Groups Projects
FAQ_chinese_simp 29.10 KiB

                          PostgreSQL 常FAQ
                                       
   2007 年 1  30   17:37:01 EST
   2007 年 2  1   12:55:04 CST
   
   维人Bruce Momjian (pgman@candle.pha.pa.us)
   维人Daojing.Zhoudoudou586@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 形
   
系管

   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) 
   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管工设主为管工
   对PostgreSQL PostgreSQL项任人
    人社 就订件表讨论
   PostgreSQL详 人常 (Developer's FAQ)
   信
   
  1.3)PostgreSQL?
  
   PostgreSQLBSD许使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/pginstaller载MSDOSWindows
    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.1 
   
   们计年个主级 个个
   
  1.7) 对PostgreSQL
  
   PostgreSQL社件表为大帮订件表主
   
   http://www.postgresql.org/community/lists/ General 
   Bug件表个好
   
   主IRCFreeNode(irc.freenode.net)#postgresql为
   以使UNIXirc令  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表 
    访ftpftp://ftp.PostgreSQL.org/pub/
    PostgreSQL补
   
   使Bug交表 PostgreSQL件表Bug常以
   
     * 交容个BugBug 
     * 交容个已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
    以线PostgreSQLhttp://www.PostgreSQL.org/d
   ocs
   
   两PostgreSQL书线
   http://www.PostgreSQL.org/docs/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(缺)CC项
   载项好
   们以计
   
   语
   PHP访PostgreSQLPerlTCLPython以
   http://gborg.postgresql.orgDrivers/Interfaces
   并Internet容索
   
  2.2) 工以PostgreSQL Web 页
  
   个以为http://www.webreview.com
   
   对 Web PHP 个好http://www.php.net/
   
   对任人 Perl  使CGI.pmDBD::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/Tid
          bits/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个并 修postgres
   ql.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个容SQLINFORMATION 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件  2.8 MB
   PostgreSQL件大约 6.4 MB:
     28 : 头大约
     24 : 个段个段
   +  4 : 页
   ----------------------------------------
     56 

   PostgreSQL 页大 8192  (8 KB)

   8192 页
   -------------------   =  146 /页
     56 

   100000 
   --------------------  =  685 页
      146 /页

   685 页 * 8192 /页  = 5,611,520 5.6 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个表中
   就以 溢就常
   SERIAL88
   
   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) 
  
   个好 缺
   
   主/许个主读/请个
   /SELECT询请 费主/PostgreSQL
   Slony-I 
   
   个主许读/请计
   
   带严失Pgcluster 中
   好以费载
   
   费硬件述模
   
  4.21) 为询示表询为大
  
   常 建表对表使使
   称为 符 大
    询表使工软件pgAdmin
   建表令个 符   
   为 符 该
     * 建表 符使起
     *  符使
     * 为已 符询使 符起