
                          PostgreSQL ⣨FAQ
                                       
   £2005  06  02   22:27:35 CST
   
   ĿǰάԱBruce Momjian (pgman@candle.pha.pa.us)
   İάԱdoudou586 doudou586_2005@yahoo.com.cn
   
   ĵ°汾
   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)ύһBUG棿
   1.7)°PostgreSQL ʲô
   1.8)ܹȡĵЩ
   1.9)˽֪ BUG ȱĹܣ
   1.10)Ӧѧϰ SQL 
   1.11)Ӧ뿪飿
   1.12)PostgreSQL ݿϵͳΣ
   1.13)˿ƺ͹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 Ҫ汾ʱ dump  restore 
   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() ᵼºûrace condition
   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)ĿǰЩݸƷã
     _________________________________________________________________
   


    1.1)PostgreSQL ʲôô
    
   PostgreSQL  Post-Gres-Q-LʱҲΪPostgres 
   
   PostgreSQL
   ĿĹϵݿϵͳдͳҵݿϵͳйܣͬʱ
   нһ DBMS ϵͳʹõǿԡ PostgreSQL
   ѵģԴ붼Իá
   
   PostgreSQL
   ĿҪΪ־ԸߣǱ鲼زͨϵһ
   Ŀκι˾ơ
   뿪飬μԱ⣨FAQ
   http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html
   
    1.2)PostgreSQL İȨʲô?
    
   PostgreSQLķӾ
   BSDȨԴʹûκƣǺϲַʽһ
   ûдı
   
   ʹõBSDȨݣ
   
   ְȨ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.3)PostgreSQL Щϵͳƽ̨ϣ
    
   һ˵һִ UNIX ݵƽ̨ PostgreSQL
   ڰװָг˷ʱȷԵƽ̨
   
   PostgreSQlҲֱڻ΢Windows-NTĲϵͳWin2000Win
   XP  Win2003ɵİװɴ
   http://pgfoundry.org/projects/pginstallerأMSDOSWindows
   ͳ Win95Win98WinMeҪͨCygwinģ⻷PostgreSQL
   
   ͬʱҲһΪNovell Netware 6İ汾ɴ http://forge.novell.com
   ȡΪOS/2İ汾ɴ
   http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgre
   SQL&stype=all&sort=type&dir=%2F
   
    1.4)Ҵܵõ PostgreSQL
    
   ͨɴhttp://www.postgresql.org/ftp/أҲͨFTP
   ftp://ftp.PostgreSQL.org/pub/վء
   
    1.5)Ҵܵõ PostgreSQL ֧֣
    
   PostgreSQLͨʼбΪûṩʼбվ
   
   http://www.postgresql.org/community/lists/һ£ȼGeneral
    BugʼбһϺõĿʼ
   
   ҪIRCƵFreeNode(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.6)ύһBUG棿
    
   ɷ
   http://www.postgresql.org/support/submitbugдBugϱ񼴿ɡ
   
   ͬҲɷftpվftp://ftp.PostgreSQL.org/pub/
   ޸µPostgreSQL汾򲹶
   
    1.7)°PostgreSQL ʲô
    
   PostgreSQL µİ汾ǰ汾 8.0.2 ע°汾Ϊ8.0.3
   
   Ǽƻÿ귢һҪ汾ÿ·һС汾
   
    1.8)ܹȡĵЩ
    
   PostgreSQLĵҪһЩֲᣬֲҳһЩĲӡμ
   /doc Ŀ¼עӦΪ $PGHOME/doc 㻹 PostgreSQL
   ֲᣬַǣhttp://www.PostgreSQL.org/docs
   
    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.9)˽֪ BUG ȱĹܣ
    
   PostgreSQL ֧һչ˵ SQL-92 ӼǵTODO
   бȡһ֪BugȱĹܺͽļƻ
   
    1.10)Ӧѧϰ SQL 
    
   ȿᵽPostgreSQLص鼮һTeach Yourself SQL
   in 21 Days, Second Edition ǵûϲThe Practical SQL
   Handbook Bowman, Judith S., et al., Addison-Wesleyϲ The
   Complete Reference SQL, Groff et al., McGraw-Hill
   
    1.11)Ӧ뿪飿
    
    Developer's FAQ 
   
    1.12)PostgreSQL ݿϵͳΣ
    
   кüַԣܣɿԣֺ֧ͼ۸
   
   
          PostgreSQL ӵд DBMS ԣ
          磺ӲѯͼοԺ͸ӵȡ
          ǻһЩûеԣû̳ͣУͶ汾
          пԼõȡ
          
   
          PostgreSQL úͿԴݿƵܡ
          ĳЩȽϿ죬һЩȽ
          ݿȣǵͨ +/- 10%֮䡣
          
   ɿ
          ֪ DBMS ǿɿģһöûС
          Ŭ
          ԵģȶĳٵĴ롣ÿ汾һµ beta
          ʱ䣬ǵķʷʾǿṩȶģι̵ģ
          ʹõİ汾
          ⷽݿ൱ġ
          
   ֧
          ǵʼбṩһǳĿԱû԰
          κ⡣ ǲܱ֤϶ܽ⣬֮£ DBMS
          Ҳܹṩ
          ֱ뿪ԱûȺֲԴӴ PostgreSQL
          ֱ֧ DBMS
          ҪáһЩҵԵԤװ֧֣ԸṩЩҪˡ
           FAQ  1.5 Сڣ
          
   ۸
          Ƕκ;ѣúͷĿġ
          ԲƵĲƷǵĴ룬Щ
          İȨ BSD İȨ⡣
          
    1.13)˿PostgreSQL 
    
   ѰPostgreSQLˣʲôίԱᣬʲô˾
   ֻܷ---ΪһҲڣǵȷһ
   ίԱCVS飬ЩҪΪ˽йǶPos
   tgreSQLпƣPostgreSQLĿκ˾
   ɲμӵĿԱûƵģҪľǼʼб
   ۼɣҪPostgreSQLĿ Developer's FAQ ȡϢ
     _________________________________________________________________
   
ûͻ

    2.1)ǿʲôԺ PostgreSQL 򽻵
    
   PostgreSQL(ȱʡ)ֻװCǶʽCĽӿڣĽӿڶǶĿ
   ֱܹأЩӿĿĺô
   ǿиԵķƻ͸ԶĿ顣
   
   һЩPHPз PostgreSQL
   ĽӿڣPerl,TCL,PythonԼܶԵĽӿ
   http://gborg.postgresql.org ϵDrivers/InterfacesСڿҵ
   ͨInternet
   
    2.2)ʲô߿԰ PostgreSQL  Web ҳ棿
    
   һݿΪ̨ͦվǣhttp://www.webreview.com
   
    Web ɣPHP һõĽӿڡڣhttp://www.php.net/
   
   ڸӵ񣬺ܶ˲ Perl ӿں CGI.pm  mod_perl 
   
    2.3)PostgreSQL ӵͼû
    
   ǵģ
   http://techdocs.postgresql.org/guides/GUIToolsһϸб
     _________________________________________________________________
   
ϵͳ

    3.1)ܰ PostgreSQL װ /usr/local/pgsql ĵط
    
    configure ʱ --prefix ѡ
   
    3.2)οӣ
    
   ȱʡʱPostgreSQL ֻͨ unix
   ׽ֻTCP/IPʽԱӡ
   ֻ޸ļpostgresql.confеlisten_addressesҲ
   ļpg_hba.confд Ϊ host-based
   ֤PostgreSQLǲPostgreSQL
   ӵġ
   
    3.3)ݿԻøõܣ
    
   ҪPostgreSQLǱܡ
   
   ѯʽı仯
          Ҫ漰޸ĲѯʽԻȡõ:
          
          + ʽͲ
          + ʹCOPYInsert䣻
          + SQLһԼύĿ
          + һȡ¼ʱʹCLUSTER
          + һѯȡּ¼ʱʹLIMIT
          + ʹԤʽѯPrepared Query)
          + ʹANALYZEԱ־ȷŻͳƣ
          + ʹ VACUUM  pg_autovacuum
          + дݸʱɾȻؽ
            
   
          ļpostgres.confеĺܶöӰܣвб
           Administration Guide/Server Run-time Environment/Run-time
          Configuration йزĽͿɼ
          http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_co
          nf_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 Ҫ汾ʱ dump  restore 
    
   PostgreSQL ÿС˽ٵ޸ģ˴ 7.4.0 
   7.4.1 Ҫ dump  restore Ҫ 7.3 
   7.4ͨ޸ϵͳݱڲʽ
   Щ仯һȽϸӣǲάļݡ dump
   ݰͨõĸʽԱ¼زʹµڲʽ
   
    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ѯPostg
   reSQLҲṩһ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 ıߴӵı
   
    4.5)洢һ͵ıļҪٴ̿ռ䣿
    
   һ Postgres
   ݿ⣨洢һıļռõĿռҪ൱ıļ
   С5Ĵ̿ռ䡣
   
   磬һ 100,000 еļÿһһı
   ıƽΪ20ֽڡıļռ 2.8 MBЩݵ
   PostgreSQL ݿļԼ 6.4 MB:
     32 ֽ: ÿеͷֵ
     24 ֽ: һֶκһıֶ
   +  4 ֽ: ҳָԪָ
   ----------------------------------------
     60 ֽÿ

   PostgreSQL ҳĴС 8192 ֽ (8 KB)

   8192 ֽÿҳ
   -------------------   =  136 /ҳȡ
     60 ֽÿ

   100000 
   --------------------  =  735 ҳȡ
      128 ÿҳ

   735 ҳ * 8192 ֽ/ҳ  =  6,021,120 ֽڣ6 MB

   ҪôĶģҲȷʵݣҲܺ
   
   
   ֵNULLλͼУռúٵĿռ䡣
   
    4.6)ΪʲôҵĲѯΪʲôЩѯû
    
   ÿѯԶʹֻڱĴСһСֵҲѯֻ
   ѡбнСļ¼ʱŻ
   Ϊɨ漴̴ȡֱܱӵضȡ˳ɨ裩
   
   ΪжǷʹPostgreSQLйرͳֵЩͳֵ
   ʹ VACUUM ANALYZE ANALYZE á
   ʹͳֵŻ֪жУܹõжǷ
   ͳֵȷŻ˳ӷҲáڱݷ仯ʱӦ
   ڽͳֵĸռ
   
   ͨ ORDER BY
   ִӡһһ˳ɨ裬һʽͨɨ
   Ҫ졣
   
   ǣ LIMIT  ORDER BY ʹʱ
   ʹΪֻ᷵رһС֡ ʵϣȻ MAX()  MIN()
   ʹͨ ORDER BY  LLIMIT
   ʹȡֵСֵҲǿԵģ
        SELECT col
        FROM tab
        ORDER BY col [ DESC ]
        LIMIT 1;

   ȷPostgreSQLŻʹ˳ɨǲȷģʹSET
   enable_seqscan TO 'off'ָ
   ȻٴвѯͿԿʹһɨǷȷʵҪһЩ
   
   ʹͨ LIKE  ~ ʱֻضʹã
     * ַĿʼֱַͨҲ˵
          + LIKE ģʽ % ͷ
          + ~ ʽģʽ ^ ͷ
     * ַƥַģʽͷ [a-e]
     * Сд޹صĲң ILIKE  ~* Ȳʹ 4.8
       ĺ
     *  initdb ʱȱʡı C
       localeΪϵͳ֪ڷC localeʱһַʲô
       £Դһtext_pattern_opsLIKE
       
       
   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));

    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"䳤ͣҲ˵ͷĸֽ
   ǳȣݣ ʵռõĿռĴСҪһЩ
   ȻЩͶԱѹ洢Ҳ TOAST
   ѻ洢˴̿ռҲܱԤҪ١
   
   VARCHAR(n) ڴ洢󳤶ȵı䳤ַõġ TEXT
   ڴ洢ɴ 1GҵδƳȵַ
   
   CHAR(n) ʺڴ洢ַͬ
   CHAR(n)ֶγԿո㣨ֶݣ 
   VARCHAR(n) ֻ洢ݡ BYTEA
   ڴ洢ݣǰ NULL
   ֽڵֵЩ;Ƶԡ
   
    4.11.1)һк/ԶֶΣ
    
   PostgreSQL ֧ SERIAL
   ֶ͡Զһк磺
        CREATE TABLE person (
                id   SERIAL,
                name TEXT
        );

   ԶתΪ
        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() ᵼºûĳͻrace condition
    
   ᡣcurrval() ص㱾λỰֵûĵǰֵ
   
    4.11.4)Ϊʲô쳣ֹкأΪʲôкֶεȡֵд
    أ
    
   Ϊ߲ԣкҪʱе񣬲֮
   ǰ ͻᵼ쳣ֹкŻּ
   
    4.12)ʲô OID ʲô CTID 
    
   PostgreSQL
   ﴴÿһм¼һΨһOIDڴʱʹWITHOUT
   OIDSѡ OIDʱԶһ4ֽڵ OID 
   PostgreSQL оΨһġ Ȼڳ40ʱ
   OID˺ظPostgreSQL ڲϵͳʹ OID
   ڱ֮佨ϵ
   
   ûݱУʹSERIAlOID
   Ϊ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.27)ĿǰЩݸƷã
    
   ơֻһкüָƼʹãÿֶŵȱ㣺
   
   /ӸƷʽһܶ/д룬ӷֻܽ
   /SELECTѯ룬 Ŀǰѵ/ PostgreSQLƷ
   Slony-I 
   
   ĸƷʽ/д뷢͸̨ļַʽ
   Ҫڶ̨֮ͬݱ䶯
   ܻصʧPgclusterĿǰַ
   õģһء
   
   ҲһЩҵ踶ѺͻӲݸƷָ֧ģ͡
