Use Unix newlines, instead of DOS ones.
authorBruce Momjian
Mon, 26 Jun 2006 13:04:05 +0000 (13:04 +0000)
committerBruce Momjian
Mon, 26 Jun 2006 13:04:05 +0000 (13:04 +0000)
doc/src/FAQ/FAQ_chinese.html

index 8a4662c253883c685a61df59201ebc9ee1acf1f5..d089d69eab5c1a545433f7afa8b533dc5ee0d3c4 100644 (file)
-\r
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-\r
-  \r
-    <span class="marked"><span class="cntrl">\r</span></span></div> <div class="diff rem">-      PostgreSQL: PostgreSQL ³£¼ûÎÊÌ⣨FAQ£©<span class="marked"><span class="cntrl">\r</span></span></div> <div class="diff rem">-    \r
-    \r
-  \r
-\r
-  \r
-\r
-

PostgreSQL ³£¼ûÎÊÌ⣨FAQ£©

\r
-

\r

-×î½ü¸üУº2005 Äê 06 Ô 02 ÈÕ ÐÇÆÚÎå 22:27:35 CST\r
-

\r
-

\r

-   Ä¿Ç°Î¬»¤ÈËÔ±£ºBruce Momjian ([email protected])
\r
-   ÖÐÎİæÎ¬»¤ÈËÔ±£ºdoudou586 £¨[email protected]£©\r
-

\r
-

\r

-   ±¾ÎĵµµÄ×îа汾¿ÉÒÔÔÚ\r
-   http://www.postgresql.org/files/documentation/faqs/FAQ.html²é¿´¡£\r
-

\r
-

\r

-   Óë²Ù×÷ϵͳƽ̨Ïà¹ØµÄÎÊÌâÔÚhttp://www.postgresql.org/docs/faq/Àï»Ø´ð¡£
\r
-

\r
-
\r
-\r
-

³£¼ûÎÊÌâ

\r
-\r
-

\r

-1.1)PostgreSQL ÊÇʲô£¿¸ÃÔõô·¢Òô£¿
\r
-1.2)PostgreSQL µÄ°æÈ¨ÊÇʲô£¿
\r
-1.3)PostgreSQL ¿ÉÒÔÔËÐÐÔÚÄÄЩ²Ù×÷ϵͳƽ̨ÉÏ£¿
\r
-1.4)ÎÒ´ÓÄÄÀïÄܵõ½ PostgreSQL£¿
\r
-1.5)ÎÒ´ÓÄÄÀïÄܵõ½¶Ô PostgreSQL µÄÖ§³Ö£¿
\r
-1.6)ÎÒÈçºÎÌá½»Ò»¸öBUG±¨¸æ£¿
\r
-1.7)×îаæµÄPostgreSQL ÊÇʲô£¿
\r
-1.8)Äܹ»»ñÈ¡µÄ×îÐÂÎĵµÓÐÄÄЩ£¿
\r
-1.9)ÎÒÈçºÎÁ˽âÒÑÖªµÄ BUG »òÔÝȱµÄ¹¦ÄÜ£¿
\r
-1.10)ÎÒÓ¦¸ÃÔõÑùѧϰ SQL £¿
\r
-1.11)ÎÒÓ¦¸ÃÔõÑù¼ÓÈ뿪·¢¶ÓÎ飿
\r
-1.12)PostgreSQL ºÍÆäËûÊý¾Ý¿âϵͳ±ÈÆðÀ´ÈçºÎ£¿
          \r
-1.13)Ë­¿ØÖƺ͹ÜÀíPostgreSQL £¿\r
-

\r
-\r
-

Óû§¿Í»§¶ËÎÊÌâ

\r
-

\r

-2.1)ÎÒÃÇ¿ÉÒÔÓÃʲôÓïÑԺ͠PostgreSQL ´ò½»µÀ£¿
\r
-2.2)ÓÐʲô¹¤¾ß¿ÉÒÔ°Ñ PostgreSQL ÓÃÓÚ Web Ò³Ã棿
\r
-2.3)PostgreSQL ÓµÓÐͼÐÎÓû§½çÃæÂð£¿
\r
-

\r
-\r
-

ϵͳ¹ÜÀíÎÊÌâ

\r
-

\r

-3.1)ÎÒÔõÑù²ÅÄܰѠPostgreSQL ×°ÔÚ /usr/local/pgsql ÒÔÍâµÄµØ·½£¿
\r
-3.2)ÎÒÈçºÎ¿ØÖÆÀ´×ÔÆäËûÖ÷»úµÄÁ¬½Ó£¿
\r
-3.3)ÎÒÔõÑùµ÷ÕûÊý¾Ý¿âÒýÇæÒÔ»ñµÃ¸üºÃµÄÐÔÄÜ£¿
\r
-3.4)PostgreSQL Àï¿ÉÒÔ»ñµÃʲôÑùµÄµ÷ÊÔÌØÐÔ£¿
\r
-3.5)ΪʲôÔÚÊÔͼÁ¬½ÓµÇ¼ʱÊÕµ½¡°Sorry, too many clients¡± ÏûÏ¢£¿
\r
-3.6)ΪʲôҪÔÚÉý¼¶ PostgreSQL Ö÷Òª·¢²¼°æ±¾Ê±×ö dump ºÍ restore £¿
\r
-3.7)(ʹÓÃPostgreSQL)ÎÒÐèҪʹÓÃʲô¼ÆËã»úÓ²¼þ £¿
\r
-

\r
-\r
-

²Ù×÷ÎÊÌâ

\r
-

\r

-4.1)ÈçºÎֻѡÔñÒ»¸ö²éѯ½á¹ûµÄÍ·¼¸ÐУ¿»òÊÇËæ»úµÄÒ»ÐУ¿
\r
-4.2)ÈçºÎ²é¿´±í¡¢Ë÷Òý¡¢Êý¾Ý¿âÒÔ¼°Óû§µÄ¶¨Ò壿ÈçºÎ²é¿´psqlÀïÓõ½µÄ²éѯָÁî²¢ÏÔʾËüÃÇ£¿
\r
-4.3)ÈçºÎ¸ü¸ÄÒ»¸ö×ֶεÄÊý¾ÝÀàÐÍ£¿
\r
-4.4)Ò»ÐмǼ£¬Ò»¸ö±í£¬Ò»¸ö¿âµÄ×î´ó³ß´çÊǶàÉÙ£¿
\r
-4.5)´æ´¢Ò»¸öµäÐ͵ÄÎı¾ÎļþÀïµÄÊý¾ÝÐèÒª¶àÉÙ´ÅÅ̿ռ䣿
\r
-4.6)ΪʲôÎҵIJéѯºÜÂý£¿ÎªÊ²Ã´ÕâЩ²éѯûÓÐÀûÓÃË÷Òý£¿
\r
-4.7)ÎÒÈçºÎ²ÅÄÜ¿´µ½²éѯÓÅ»¯Æ÷ÊÇÔõÑùÆÀ¹À´¦ÀíÎҵIJéѯµÄ£¿
\r
-4.8)ÎÒÔõÑù×öÕýÔò±í´ïʽËÑË÷ºÍ´óСдÎ޹صÄÕýÔò±í´ïʽ²éÕÒ£¿ÔõÑùÀûÓÃË÷Òý½øÐдóСдÎ޹زéÕÒ£¿
\r
-4.9)ÔÚÒ»¸ö²éѯÀÎÒÔõÑù¼ì²âÒ»¸ö×Ö¶ÎÊÇ·ñΪ NULL£¿ÎÒÈçºÎ²ÅÄÜ׼ȷÅÅÐò¶ø²»ÂÛij×Ö¶ÎÊÇ·ñº¬NULLÖµ£¿
\r
-4.10)¸÷ÖÖ×Ö·ûÀàÐÍÖ®¼äÓÐʲô²»Í¬£¿
\r
-4.11.1)ÎÒÔõÑù´´½¨Ò»¸öÐòÁкÅ/×Ô¶¯µÝÔöµÄ×ֶΣ¿
\r
-4.11.2)ÎÒÈçºÎ»ñµÃÒ»¸ö²åÈëµÄÐòÁкŵÄÖµ£¿
\r
-4.11.3)ʹÓàcurrval() »áµ¼ÖÂºÍÆäËûÓû§µÄÎÉÂÒÇé¿ö£¨race condition£©Âð£¿
\r
-4.11.4)Ϊʲô²»ÔÚÊÂÎñÒì³£ÖÐÖ¹ºóÖØÓÃÐòÁкÅÄØ£¿ÎªÊ²Ã´ÔÚÐòÁкÅ×ֶεÄȡֵÖдæÔÚ¼ä¶ÏÄØ£¿
\r
-4.12)ʲôÊÇ OID£¿Ê²Ã´ÊÇ CTID £¿
\r
-4.13)ΪʲôÎÒÊÕµ½´íÎóÐÅÏ¢¡°ERROR: Memory exhausted in AllocSetAlloc()¡±£¿
\r
-4.14)ÎÒÈçºÎ²ÅÄÜÖªµÀËùÔËÐеĠPostgreSQL µÄ°æ±¾£¿
\r
-4.15)ÎÒÈçºÎ´´½¨Ò»¸öȱʡֵÊǵ±Ç°Ê±¼äµÄ×ֶΣ¿
\r
-4.16)ÈçºÎ½øÐРouter join £¨ÍâÁ¬½Ó£©£¿
\r
-4.17)ÈçºÎʹÓÃÉæ¼°¶à¸öÊý¾Ý¿âµÄ²éѯ£¿
\r
-4.18)ÈçºÎÈú¯Êý·µ»Ø¶àÐлò¶àÁУ¿
\r
-4.19)ΪʲôÎÒÔÚʹÓÃPL/PgSQLº¯Êý´æÈ¡ÁÙʱ±íʱ»áÊÕµ½´íÎóÐÅÏ¢¡°relation with OID ##### does not exist¡±£¿
\r
-4.20)ĿǰÓÐÄÄЩÊý¾Ý¸´ÖÆ·½°¸¿ÉÓã¿
\r
-

\r
-\r
-
\r
-\r
-

³£¼ûÎÊÌâ

\r
-\r
-

1.1)PostgreSQL ÊÇʲô£¿¸ÃÔõô·¢Òô£¿

\r
-

\r

-PostgreSQL ¶Á×÷ Post-Gres-Q-L£¬ÓÐʱºòÒ²¼ò³ÆÎªPostgres ¡£\r
-

\r
-

\r

-   PostgreSQL ÊÇÃæÏòÄ¿±êµÄ¹ØÏµÊý¾Ý¿âϵͳ£¬Ëü¾ßÓд«Í³ÉÌÒµÊý¾Ý¿âϵͳµÄËùÓй¦ÄÜ£¬Í¬Ê±ÓÖº¬Óн«ÔÚÏÂÒ»´ú DBMS ÏµÍ³µÄʹÓõÄÔöÇ¿ÌØÐÔ¡£\r
-   PostgreSQL ÊÇ×ÔÓÉÃâ·ÑµÄ£¬²¢ÇÒËùÓÐÔ´´úÂë¶¼¿ÉÒÔ»ñµÃ¡£\r
-

\r
-\r
-

\r

-   PostgreSQL µÄ¿ª·¢¶ÓÎéÖ÷ҪΪ־ԸÕߣ¬ËûÃDZ鲼ÊÀ½ç¸÷µØ²¢Í¨¹ý»¥ÁªÍø½øÐÐÁªÏµ£¬ÕâÊÇÒ»¸öÉçÇø¿ª·¢ÏîÄ¿£¬Ëü²»±»Èκι«Ë¾¿ØÖÆ¡£\r
-   ÈçÏë¼ÓÈ뿪·¢¶ÓÎ飬Çë²Î¼û¿ª·¢ÈËÔ±³£¼ûÎÊÌ⣨FAQ£©\r
-   http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html\r
-

\r
-\r
-\r
-

1.2)PostgreSQL µÄ°æÈ¨ÊÇʲô?

\r
-

\r

-PostgreSQLµÄ·¢²¼×ñ´Ó¾­µäµÄBSD°æÈ¨¡£¹ØÓÚÔ´´úÂëµÄÈçºÎʹÓÃûÓÐÈκÎÏÞÖÆ£¬ÎÒÃǺÜϲ»¶ÕâÖÖ·½Ê½²¢ÇÒ»¹Ã»ÓдòËã¸Ä±äËü¡£\r
-

\r
-

\r

-ÏÂÃæ¾ÍÊÇÎÒÃÇʹÓõÄBSD°æÈ¨ÄÚÈÝ£º\r
-

\r
-\r
-

\r

-   ²¿·Ö°æÈ¨£¨c£©1996-2005£¬PostgreSQL È«Çò¿ª·¢Ð¡×飬²¿·Ö°æÈ¨£¨c£©1994-1996 ¼ÓÖÝ´óѧ¶­ÊÂ\r
-

\r
-\r
-

\r

-   £¨Portions copyright (c) 1996-2005, PostgreSQL Global Development Group Portions Copyright (c) 1994-6 Regents of the University of California£©\r
-

\r
-\r
-

\r

-   ÔÊÐíΪÈκÎÄ¿µÄʹÓ㬿½±´£¬Ð޸ĺͷַ¢Õâ¸öÈí¼þºÍËüµÄÎĵµ¶ø²»ÊÕÈ¡ÈκηÑÓã¬\r
-   ²¢ÇÒÎÞÐëÇ©ÊðÒò´Ë¶ø²úÉúµÄÖ¤Ã÷£¬Ç°ÌáÊÇÉÏÃæµÄ°æÈ¨ÉùÃ÷ºÍ±¾¶ÎÒÔ¼°ÏÂÃæÁ½¶ÎÎÄ×Ö³öÏÖÔÚËùÓп½±´ÖС£\r
-

\r
-\r
-

\r

-   £¨Permission to use, copy, modify, and distribute this software and its           \r
-   documentation for any purpose, without fee, and without a written agreement is           \r
-   hereby granted, provided that the above copyright notice and this paragraph and           \r
-   the following two paragraphs appear in all copies.£©\r
-

\r
-\r
-

\r

-   ÔÚÈκÎÇé¿öÏ£¬¼ÓÖÝ´óѧ¶¼²»³Ðµ£ÒòʹÓôËÈí¼þ¼°ÆäÎĵµ¶øµ¼ÖµĶÔÈκε±ÊÂÈ˵ÄÖ±½ÓµÄ£¬\r
-   ¼ä½ÓµÄ£¬ÌØÊâµÄ£¬¸½¼ÓµÄ»òÕßÏà°é¶øÉúµÄË𻵣¬°üÀ¨ÀûÒæËðʧµÄÔðÈΣ¬¼´Ê¹¼ÓÖÝ´óѧÒѾ­½¨ÒéÁËÕâЩËðʧµÄ¿ÉÄÜÐÔʱҲÊÇÈç´Ë¡£\r
-

\r
-\r
-

\r

-   £¨IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR           \r
-   DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST           \r
-   PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF           \r
-   THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH           \r
-   DAMAGE.£©\r
-

\r
-\r
-

\r

-   ¼ÓÖÝ´óѧÃ÷È··ÅÆúÈκα£Ö¤£¬°üÀ¨µ«²»¾ÖÏÞÓÚÄ³Ò»ÌØ¶¨ÓÃ;µÄÉÌÒµºÍÀûÒæµÄÒþº¬±£Ö¤¡£\r
-   ÕâÀïÌṩµÄÕâ·ÝÈí¼þÊÇ»ùÓÚ¡°µ±×÷ÊÇ¡±µÄ»ù´¡µÄ£¬Òò¶ø¼ÓÖÝ´óѧûÓÐÔðÈÎÌṩά»¤£¬Ö§³Ö£¬¸üУ¬ÔöÇ¿»òÕßÐ޸ĵķþÎñ¡£\r
-

\r
-\r
-

\r

-   £¨THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT           \r
-   NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A           \r
-   PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND           \r
-   THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE,           \r
-   SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.£©
          \r
-\r
-

\r
-\r
-

1.3)PostgreSQL ¿ÉÒÔÔËÐÐÔÚÄÄЩ²Ù×÷ϵͳƽ̨ÉÏ£¿

\r
-\r
-

\r

-   Ò»°ã˵À´£¬Ò»¸öÏÖ´úµÄ UNIX ¼æÈÝµÄÆ½Ì¨¶¼ÄÜÔËÐРPostgreSQL ¡£ÔÚ°²×°Ö¸ÄÏÀïÁгöÁË·¢²¼Ê±¾­¹ýÃ÷È·²âÊÔµÄÆ½Ì¨¡£\r
-

\r
-\r
-

\r

-   PostgreSQlÒ²¿ÉÒÔÖ±½ÓÔËÐÐÔÚ»ùÓÚ΢ÈíWindows-NTµÄ²Ù×÷ϵͳ£¬ÈçWin2000£¬WinXP ºÍ Win2003£¬ÒÑÖÆ×÷Íê³ÉµÄ°²×°°ü¿É´Ó\r
-   http://pgfoundry.org/projects/pginstallerÏÂÔØ£¬»ùÓÚMSDOSµÄWindows²Ù×÷ϵͳ\r
-   £¨Win95£¬Win98£¬WinMe£©ÐèҪͨ¹ýCygwinÄ£Äâ»·¾³ÔËÐÐPostgreSQL¡£\r
-

\r
-\r
-

\r

-  Í¬Ê±Ò²ÓÐÒ»¸öΪNovell Netware 6¿ª·¢µÄ°æ±¾¿É´Ó http://forge.novell.com »ñÈ¡£¬ÎªOS/2¿ª·¢µÄ°æ±¾¿É´Ó\r
-  \r
-  http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgreSQL&stype=all&sort=type&dir=%2F\r
-

\r
-\r
-

1.4)ÎÒ´ÓÄÄÀïÄܵõ½ PostgreSQL£¿

\r
-\r
-

\r

-  Í¨¹ýä¯ÀÀÆ÷¿É´Óhttp://www.postgresql.org/ftp/ÏÂÔØ£¬Ò²¿Éͨ¹ýFTP£¬´Ó\r
-  ftp://ftp.PostgreSQL.org/pub/Õ¾µãÏÂÔØ¡£\r
-

\r
-\r
-\r
-

1.5)ÎÒ´ÓÄÄÀïÄܵõ½¶Ô PostgreSQL µÄÖ§³Ö£¿

\r
-

\r

-    PostgreSQLÉçÇøÍ¨¹ýÓʼþÁбíΪÆä´ó¶àÊýÓû§Ìṩ°ïÖú£¬¼ÓÈëÓʼþÁбíµÄÖ÷Õ¾µãÊÇ http://www.postgresql.org/community/lists/£¬Ò»°ãÇé¿öÏ£¬ÏȼÓÈëGeneral »ò BugÓʼþÁбíÊÇÒ»¸ö½ÏºÃµÄ¿ªÊ¼¡£\r
-

\r
-\r
-

\r

-   Ö÷ÒªµÄIRCƵµÀÊÇÔÚFreeNode(irc.freenode.net)µÄ#postgresql£¬ÎªÁËÁ¬ÉÏ´ËÆµµÀ£¬¿ÉÒÔʹÓÃUNIX³ÌÐòirc£¬ÆäÖ¸Áî¸ñʽ£º\r
-   irc -c '#postgresql' "$USER" irc.freenode.net £¬»òÕßʹÓÃÆäËûIRC¿Í»§¶Ë³ÌÐò¡£ÔÚ´ËÍøÂçÖл¹´æÔÚÒ»¸öPostgreSQLµÄÎ÷°àÑÀƵµÀ(#postgersql-es)ºÍ·¨ÓïÆµµÀ\r
-   (#postgresql-fr)¡£Í¬ÑùµØ£¬ÔÚEFNETÉÏÒ²ÓÐÒ»¸öPostgreSQLµÄ½»Á÷ƵµÀ¡£\r
-

\r
-\r
-

\r

-   ÉÌÒµÖ§³Ö¹«Ë¾µÄÁбíÔÚ http://techdocs.postgresql.org/companies.php¡£\r
-

\r
-\r
-\r
-\r
-

1.6)ÎÒÈçºÎÌá½»Ò»¸öBUG±¨¸æ£¿

\r
-

\r

-   ¿É·ÃÎÊ http://www.postgresql.org/support/submitbug£¬ÌîдBugÉϱ¨±í¸ñ¼´¿É¡£\r
-

\r
-\r
-

\r

-    Í¬ÑùÒ²¿É·ÃÎÊftpÕ¾µãftp://ftp.PostgreSQL.org/pub/ ¼ì²éÓÐÎÞ¸üеÄPostgreSQL°æ±¾»ò²¹¶¡¡£\r
-

\r
-\r
-\r
-\r
-

1.7)×îаæµÄPostgreSQL ÊÇʲô£¿

\r
-

\r

-   PostgreSQL ×îеİ汾Êǰ汾 8.0.2 £¨Òë×¢£ºÏÖ×îа汾Ϊ8.0.3£©¡£\r
-

\r
-\r
-

\r

-   ÎÒÃǼƻ®Ã¿Äê·¢²¼Ò»¸öÖ÷Òª°æ±¾£¬Ã¿¼¸¸öÔ·¢²¼Ò»¸öС°æ±¾¡£\r
-

\r
-\r
-\r
-

1.8)Äܹ»»ñÈ¡µÄ×îÐÂÎĵµÓÐÄÄЩ£¿

\r
-\r
-

\r

-   PostgreSQL°üº¬´óÁ¿µÄÎĵµ£¬Ö÷ÒªÓÐһЩÊֲᣬÊÖ²áÒ³ºÍһЩµÄ²âÊÔÀý×Ó¡£²Î¼û /doc Ä¿Â¼£¨Òë×¢£ºÓ¦Îª $PGHOME/doc£©¡£\r
-   Ä㻹¿ÉÒÔÔÚÏßä¯ÀÀ PostgreSQL µÄÊֲᣬÆäµØÖ·ÊÇ£ºhttp://www.PostgreSQL.org/docs¡£\r
-

\r
-

\r

-   ÓÐÁ½±¾¹ØÓÚ PostgreSQL µÄÊéÔÚÏßÌṩ£¬ÔÚ\r
-   http://www.PostgreSQL.org/docs/awbook.html\r
-   ºÍ http://www.commandprompt.com/ppbook/ ¡£\r
-   Ò²ÓдóÁ¿µÄPostgreSQLÊé¼®¿É¹©¹ºÂò£¬ÆäÖÐ×îΪÁ÷ÐеÄÒ»±¾ÊÇÓÉKorry Douglas±àдµÄ¡£ÔÚ \r
-   http://techdocs.PostgreSQL.org/techdocs/bookreviews.phpÉÏ\r
-   ÉÏÓдóÁ¿ÓйØPostgreSQLÊé¼®µÄ¼ò½é¡£\r
-   ÔÚ http://techdocs.PostgreSQL.org/ÉÏÊÕ¼¯ÁËÓйؠPostgreSQL µÄ´óÁ¿¼¼ÊõÎÄÕ¡£\r
-

\r
-\r
-

\r

-   ¿Í»§¶ËµÄÃüÁîÐгÌÐòpsqlÓÐһЩÒÔ \d ¿ªÍ·µÄÃüÁ¿ÉÏÔʾ¹ØÓÚÀàÐÍ£¬²Ù×÷·û£¬º¯Êý£¬»ã×ܵȵÄÐÅÏ¢£¬Ê¹Óà\? ¿ÉÒÔÏÔʾËùÓпÉÓõÄÃüÁî¡£\r
-

\r
-\r
-

\r

-   ÎÒÃǵĠweb Õ¾µã°üº¬¸ü¶àµÄÎĵµ¡£\r
-

\r
-\r
-

1.9)ÎÒÈçºÎÁ˽âÒÑÖªµÄ BUG »òÔÝȱµÄ¹¦ÄÜ£¿

\r
-

\r

-   PostgreSQL Ö§³ÖÒ»¸öÀ©Õ¹Á˵ĠSQL-92 µÄ×Ó¼¯¡£²ÎÔÄÎÒÃǵÄTODO ÁÐ±í£¬»ñȡһ¸öÒÑÖªBug£¬ÔÝȱµÄ¹¦Äܺͽ«À´µÄ¼Æ»®¡£\r
-

\r
-\r
-\r
-

1.10)ÎÒÓ¦¸ÃÔõÑùѧϰ SQL £¿

\r
-

\r

-   Ê×ÏÈ¿¼ÂÇÉÏÊöÌáµ½µÄÓëPostgreSQLÏà¹ØµÄÊé¼®£¬ÁíÍâÒ»±¾ÊÇTeach Yourself SQL in 21 Days, Second Edition£¬\r
-   ÎÒÃǵÄÐí¶àÓû§Ï²»¶The Practical SQL Handbook Bowman, Judith S., et al., Addison-Wesley£¬ÆäËûµÄÔòϲ»¶\r
-   The Complete Reference SQL, Groff et al., McGraw-Hill¡£\r
-

\r
-\r
-\r
-

1.11)ÎÒÓ¦¸ÃÔõÑù¼ÓÈ뿪·¢¶ÓÎ飿

\r
-

\r

-   Ïê¼û Developer's FAQ ¡£\r
-

\r
-\r
-\r
-

1.12)PostgreSQL ºÍÆäËûÊý¾Ý¿âϵͳ±ÈÆðÀ´ÈçºÎ£¿

\r
-

\r

-ÆÀ¼ÛÈí¼þÓкü¸ÖÖ·½·¨£ºÌØÐÔ£¬ÐÔÄÜ£¬¿É¿¿ÐÔ£¬Ö§³ÖºÍ¼Û¸ñ¡£\r
-

\r
-
\r
-   
ÌØÐÔ
\r
-   
\r
-       PostgreSQL ÓµÓдóÐÍÉÌÓàDBMS Àï´ó¶àÊýÌØÐÔ£¬\r
-       ÀýÈ磺ÊÂÎñ£¬×Ó²éѯ£¬´¥·¢Æ÷£¬ÊÓͼ£¬Íâ¼ü²Î¿¼ÍêÕûÐԺ͸´ÔÓµÄËøµÈ¡£\r
-       ÎÒÃÇ»¹ÓÐһЩËüÃÇûÓеÄÌØÐÔ£¬ÈçÓû§¶¨ÒåÀàÐÍ£¬¼Ì³Ð£¬¹æÔòºÍ¶à°æ±¾²¢ÐпØÖÆÒÔ¼õÉÙËøµÄÕùÓõȡ£
\r
-   \r
-\r
-   
ÐÔÄÜ
\r
-   
\r
-       PostgreSQL ºÍÆäËûÉÌÓúͿªÔ´µÄÊý¾Ý¿â¾ßÓÐÀàËÆµÄÐÔÄÜ¡£\r
-       ¶ÔijЩ´¦ÀíËü±È½Ï¿ì£¬¶ÔÆäËûһЩ´¦ÀíËü±È½ÏÂý¡£\r
-       ÓëÆäËûÊý¾Ý¿âÏà±È£¬ÎÒÃǵÄÐÔÄÜͨ³£ÔÚ +/- 10%Ö®¼ä¡£
\r
-   \r
-\r
-   
¿É¿¿ÐÔ
\r
-   
\r
-       ÎÒÃÇÖªµÀ DBMS ±ØÐëÊǿɿ¿µÄ£¬·ñÔòËü¾ÍÒ»µãÓö¼Ã»ÓС£\r
-       ÎÒÃÇŬÁ¦×öµ½·¢²¼¾­¹ýÈÏÕæ²âÊԵģ¬Îȶ¨µÄ³ô³æ×îÉٵĴúÂ롣ÿ¸ö°æ±¾ÖÁÉÙÓÐÒ»¸öÔµĠbeta\r
-       ²âÊÔʱ¼ä£¬²¢ÇÒÎÒÃǵķ¢²¼ÀúÊ·ÏÔʾÎÒÃÇ¿ÉÒÔÌṩÎȶ¨µÄ£¬Àι̵ģ¬¿ÉÓÃÓÚÉú²úʹÓõİ汾¡£ÎÒÃÇÏàÐÅ\r
-       ÔÚÕâ·½ÃæÎÒÃÇÓëÆäËûµÄÊý¾Ý¿âÈí¼þÊÇÏ൱µÄ¡£
\r
-   \r
-   \r
-   
Ö§³Ö
\r
-    
\r
-       ÎÒÃǵÄÓʼþÁбíÌṩһ¸ö·Ç³£´óµÄ¿ª·¢ÈËÔ±ºÍÓû§µÄ×éÒÔ°ïÖú½â¾öËùÅöµ½µÄÈκÎÎÊÌâ¡£\r
-       ÎÒÃDz»Äܱ£Ö¤¿Ï¶¨Äܽâ¾öÎÊÌ⣬Ïà±È֮ϣ¬ÉÌÓàDBMS Ò²²¢²»ÊÇ×ÜÄܹ»Ìṩ½â¾ö·½·¨¡£\r
-       Ö±½ÓÓ뿪·¢ÈËÔ±£¬Óû§Èº£¬ÊÖ²áºÍÔ´³ÌÐò½Ó´¥Áî PostgreSQL µÄÖ§³Ö±ÈÆäËû DBMS\r
-       »¹ÒªºÃ¡£»¹ÓÐһЩÉÌÒµÐÔµÄÔ¤°ü×°µÄÖ§³Ö£¬¿ÉÒÔ¸øÌṩ¸øÄÇЩÐèÒªµÄÈË¡££¨²ÎÔÄ FAQ Ìõ¿î 1.5 Ð¡½Ú£©
\r
-    \r
-\r
-    
¼Û¸ñ
\r
-    
\r
-       ÎÒÃǶÔÈκÎÓÃ;¶¼Ãâ·Ñ£¬°üÀ¨ÉÌÓúͷÇÉÌÓÃÄ¿µÄ¡£\r
-       Äã¿ÉÒÔ²»¼ÓÏÞÖÆµØÏòÄãµÄ²úÆ·Àï¼ÓÈëÎÒÃǵĴúÂ룬³ýÁËÄÇЩÎÒÃÇÔÚÉÏÃæµÄ°æÈ¨ÉùÃ÷ÀïÉùÃ÷µÄ BSD ·ç¸ñµÄ°æÈ¨Íâ¡£\r
-    \r
-\r
-\r
-\r
-\r
-

1.13)Ë­¿ØÖÆPostgreSQL £¿

\r
-

\r

-   Èç¹ûÄãÔÚѰÕÒPostgreSQLµÄÕÆÃÅÈË£¬»òÊÇʲôÖÐÑëίԱ»á£¬»òÊÇʲôËùÊô¹«Ë¾£¬ÄãÖ»ÄÜ·ÅÆúÁË---ÒòΪһ¸öÒ²²»´æÔÚ£¬µ«ÎÒÃǵÄÈ·ÓÐÒ»¸ö\r
-   Î¯Ô±»áºÍCVS¹ÜÀí×飬µ«ÕâЩ¹¤×÷×éµÄÉèÁ¢Ö÷ÒªÊÇΪÁ˽øÐйÜÀí¹¤×÷¶ø²»ÊǶÔPostgreSQL½øÐпØÖÆ£¬PostgreSQLÏîÄ¿ÊÇÓÉÈκÎÈ˾ù\r
-   ¿É²Î¼ÓµÄ¿ª·¢ÈËÔ±ÉçÇøºÍËùÓÐÓû§¿ØÖƵģ¬ÄãËùÐèÒª×öµÄ¾ÍÊǼÓÈëÓʼþÁÐ±í£¬²ÎÓëÌÖÂÛ¼´¿É£¨Òª²ÎÓëPostgreSQLµÄ¿ª·¢Ïê¼û\r
-    Developer's FAQ »ñÈ¡ÐÅÏ¢£©¡£\r
-

\r
-\r
-
\r
-\r
-\r
-
 

Óû§¿Í»§¶ËÎÊÌâ

 
\r
-\r
-

2.1)ÎÒÃÇ¿ÉÒÔÓÃʲôÓïÑԺ͠PostgreSQL ´ò½»µÀ£¿

\r
-

\r

-   PostgreSQL(ȱʡÇé¿ö)Ö»°²×°ÓÐCºÍÄÚǶʽCµÄ½Ó¿Ú£¬ÆäËûµÄ½Ó¿Ú¶¼ÊǶÀÁ¢µÄÏîÄ¿£¬Äܹ»·Ö±ðÏÂÔØ£¬ÕâЩ½Ó¿ÚÏîÄ¿¶ÀÁ¢µÄºÃ´¦\r
-   ÊÇËûÃÇ¿ÉÒÔÓи÷×Եķ¢²¼¼Æ»®ºÍ¸÷×Ô¶ÀÁ¢µÄ¿ª·¢×é¡£\r
-

\r
-

\r

-   Ò»Ð©±à³ÌÓïÑÔÈçPHP¶¼ÓзÃÎÊ PostgreSQL µÄ½Ó¿Ú£¬Perl,TCL,PythonÒÔ¼°ºÜ¶àÆäËûÓïÑԵĽӿÚÔÚ\r
-    http://gborg.postgresql.org ÉϵÄDrivers/InterfacesС½Ú¿ÉÕÒµ½£¬\r
-   ²¢ÇÒͨ¹ýInternetºÜÈÝÒ×ËÑË÷µ½¡£\r
-

\r
-\r
-\r
-\r
-

2.2)ÓÐʲô¹¤¾ß¿ÉÒÔ°Ñ PostgreSQL ÓÃÓÚ Web Ò³Ã棿

\r
-

\r

-   Ò»¸ö½éÉÜÒÔÊý¾Ý¿âΪºǫ́µÄͦ²»´íµÄÕ¾µãÊÇ£ºhttp://www.webreview.com¡£\r
-

\r
-

\r

-   ¶ÔÓÚ Web ¼¯³É£¬PHP ÊÇÒ»¸ö¼«ºÃµÄ½Ó¿Ú¡£ËüÔÚ£ºhttp://www.php.net/¡£\r
-

\r
-

\r

-   ¶ÔÓÚ¸´ÔÓµÄÈÎÎñ£¬ºÜ¶àÈ˲ÉÓàPerl ½Ó¿ÚºÍ CGI.pm »ò mod_perl ¡£\r
-

\r
-\r
-\r
-

2.3)PostgreSQL ÓµÓÐͼÐÎÓû§½çÃæÂð£¿

\r
-

\r

-   Êǵģ¬ÔÚ http://techdocs.postgresql.org/guides/GUIToolsÓÐÒ»¸öÏêϸµÄÁÐ±í¡£\r
-

\r
-\r
-\r
-\r
-
\r
-\r
-
 

ϵͳ¹ÜÀíÎÊÌâ

 
\r
-\r
-

3.1)ÎÒÔõÑùÄܰѠPostgreSQL ×°ÔÚ /usr/local/pgsql ÒÔÍâµÄµØ·½£¿

\r
-

\r

-   ÔÚÔËÐРconfigure Ê±¼ÓÉÏ --prefix Ñ¡Ïî¡£\r
-

\r
-\r
-\r
-

3.2)ÎÒÈçºÎ¿ØÖÆÀ´×ÔÆäËûÖ÷»úµÄÁ¬½Ó£¿

\r
-

\r

-   È±Ê¡Ê±£¬PostgreSQL Ö»ÔÊÐíͨ¹ý unix ÓòÌ×½Ó×Ö»òTCP/IP·½Ê½ÇÒÀ´×Ô±¾»úµÄÁ¬½Ó¡£\r
-   ÄãÖ»ÓÐÔÚÐÞ¸ÄÁËÅäÖÃÎļþpostgresql.confÖеÄlisten_addresses£¬ÇÒÒ²ÔÚÅäÖÃÎļþpg_hba.confÖдò¿ªÁË\r
-   Ö÷»úΪ»ù´¡£¨ host-based £©µÄÉí·ÝÈÏÖ¤£¬²¢ÖØÐÂÆô¶¯PostgreSQL£¬·ñÔòÆäËû»úÆ÷ÊDz»ÄÜÓëÄãµÄPostgreSQL·þÎñÆ÷Á¬½ÓµÄ¡£\r
-

\r
-\r
-\r
-

3.3)ÎÒÔõÑùµ÷ÕûÊý¾Ý¿âÒýÇæÒÔ»ñµÃ¸üºÃµÄÐÔÄÜ£¿

\r
-

\r

-   ÓÐÈý¸öÖ÷Òª·½Ãæ¿ÉÒÔÌáÉýPostgreSQLµÄDZÄÜ¡£\r
-

\r
-\r
-
\r
-   
²éѯ·½Ê½µÄ±ä»¯
\r
-   
\r
-       ÕâÖ÷񻃾¼°Ð޸IJéѯ·½Ê½ÒÔ»ñÈ¡¸üºÃµÄÐÔÄÜ:\r
-       
    \r
-       
  • ´´½¨Ë÷Òý£¬°üÀ¨±í´ïʽºÍ²¿·ÖË÷Òý£»
  • \r
    -       
  • ʹÓÃCOPYÓï¾ä´úÌæ¶à¸öInsertÓï¾ä£»
  • \r
    -       
  • ½«¶à¸öSQLÓï¾ä×é³ÉÒ»¸öÊÂÎñÒÔ¼õÉÙÌá½»ÊÂÎñµÄ¿ªÏú£»
  • \r
    -       
  • ´ÓÒ»¸öË÷ÒýÖÐÌáÈ¡¶àÌõ¼Ç¼ʱʹÓÃCLUSTER£»
  • \r
    -       
  • ´ÓÒ»¸ö²éѯ½á¹ûÖÐÈ¡³ö²¿·Ö¼Ç¼ʱʹÓÃLIMIT£»
  • \r
    -       
  • ʹÓÃÔ¤±àÒëʽ²éѯ£¨Prepared Query)£»
  • \r
    -       
  • ʹÓÃANALYZEÒÔ±£³Ö¾«È·µÄÓÅ»¯Í³¼Æ£»
  • \r
    -       
  • ¶¨ÆÚʹÓàVACUUM »ò pg_autovacuum
  • \r
    -       
  • ½øÐдóÁ¿Êý¾Ý¸ü¸ÄʱÏÈɾ³ýË÷Òý£¨È»ºóÖØ½¨Ë÷Òý£©
  • \r
    -       \r
    -   \r
    -\r
    -   
    ·þÎñÆ÷µÄÅäÖÃ
    \r
    -   
    \r
    -       ÅäÖÃÎļþpostgres.confÖеĺܶàÉèÖö¼»áÓ°ÏìÐÔÄÜ£¬ËùÓвÎÊýµÄÁбí¿É¼û£º\r
    -       Administration Guide/Server Run-time Environment/Run-time Configuration£¬\r
    -       ÓйزÎÊýµÄ½âÊͿɼû£º\r
    -       http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_conf_e.html  ºÍ \r
    -       http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html¡£\r
    -   \r
    -\r
    -   
    Ó²¼þµÄÑ¡Ôñ
    \r
    -   
    \r
    -       ¼ÆËã»úÓ²¼þ¶ÔÐÔÄܵÄÓ°Ïì¿Éä¯ÀÀ \r
    -       http://candle.pha.pa.us/main/writings/pgsql/hw_performance/index.html ºÍ \r
    -       http://www.powerpostgresql.com/PerfList/¡£\r
    -   \r
    -\r
    -\r
    -\r
    -\r
    -

    3.4)PostgreSQL Àï¿ÉÒÔ»ñµÃʲôÑùµÄµ÷ÊÔÌØÐÔ£¿

    \r
    -

    \r

    -   PostgreSQL ÓкܶàÀàËÆ log_* µÄ·þÎñÆ÷ÅäÖñäÁ¿¿ÉÓÃÓÚ²éѯµÄ´òÓ¡ºÍ½ø³Ìͳ¼Æ£¬¶øÕâЩ¹¤×÷¶Ôµ÷ÊÔºÍÐÔÄܲâÊÔºÜÓаïÖú¡£\r
    -

    \r
    -\r
    -\r
    -\r
    -

    3.5)ΪʲôÔÚÊÔͼÁ¬½ÓʱÊÕµ½¡°Sorry, too many clients¡±ÏûÏ¢£¿

    \r
    -

    \r

    -   Õâ±íʾÄãÒѴﵽȱʡ100¸ö²¢·¢ºǫ́½ø³ÌÊýµÄÏÞÖÆ£¬ÄãÐèҪͨ¹ýÐÞ¸Äpostgresql.confÎļþÖеÄmax_connectionsÖµÀ´\r
    -   Ôö¼ÓpostmasterµÄºǫ́²¢·¢´¦ÀíÊý£¬Ð޸ĺóÐèÖØÐÂÆô¶¯postmaster¡£\r
    -

    \r
    -\r
    -\r
    -

    3.6)ΪʲôҪÔÚÉý¼¶ PostgreSQL Ö÷Òª·¢²¼°æ±¾Ê±×ö dump ºÍ restore £¿

    \r
    -

    \r

    -   PostgreSQL ¿ª·¢×é¶Ôÿ´ÎСµÄÉý¼¶½ö×öÁ˽ÏÉÙµÄÐ޸ģ¬Òò´Ë´Ó 7.4.0 Éý¼¶µ½ 7.4.1 ²»ÐèÒª dump ºÍ restore¡£\r
    -   µ«ÊÇÖ÷ÒªµÄÉý¼¶£¨ÀýÈç´Ó 7.3 µ½ 7.4£©Í¨³£»áÐÞ¸Äϵͳ±íºÍÊý¾Ý±íµÄÄÚ²¿¸ñʽ¡£\r
    -   ÕâЩ±ä»¯Ò»°ã±È½Ï¸´ÔÓ£¬Òò´ËÎÒÃDz»Î¬Êý¾ÝÎļþµÄÏòºó¼æÈÝ¡£\r
    -   dump ½«Êý¾Ý°´ÕÕͨÓõĸñʽÊä³ö£¬Ëæºó¿ÉÒÔ±»ÖØÐ¼ÓÔØ²¢Ê¹ÓÃеÄÄÚ²¿¸ñʽ¡£\r
    -

    \r
    -\r
    -

    3.7)(ʹÓÃPostgreSQL)ÎÒÐèҪʹÓÃʲô¼ÆËã»úÓ²¼þ £¿

    \r
    -

    \r

    -   ÓÉÓÚ¼ÆËã»úÓ²¼þ´ó¶àÊýÊǼæÈݵģ¬ÈËÃÇ×ÜÊÇÇãÏòÓÚÏàÐÅËùÓмÆËã»úÓ²¼þÖÊÁ¿Ò²ÊÇÏàͬµÄ¡£ÊÂʵÉϲ»ÊÇ£¬\r
    -   ECC RAM£¨´øÆæÅ¼Ð£ÑéµÄÄڴ棩£¬SCSI £¨Ó²ÅÌ£©ºÍÓÅÖʵÄÖ÷°å±ÈһЩ±ãÒË»õÒª¸ü¼Ó¿É¿¿ÇÒ¾ßÓиüºÃµÄÐÔÄÜ¡£PostgreSQL¼¸ºõ¿ÉÒÔÔËÐÐÔÚÈκÎÓ²¼þÉÏ£¬\r
    -   µ«Èç¹û¿É¿¿ÐÔºÍÐÔÄܶÔÄãµÄϵͳºÜÖØÒª£¬Äã¾ÍÐèÒªÈ«ÃæµÄÑо¿Ò»ÏÂÄãµÄÓ²¼þÅäÖÃÁË¡£ÔÚÎÒÃǵÄÓʼþÁбíÉÏÒ²ÓйØÓÚ\r
    -   Ó²¼þÅäÖúÍÐԼ۱ȵÄÌÖÂÛ¡£\r
    -

    \r
    -\r
    -\r
    -
    \r
    -\r
    -

    ²Ù×÷ÎÊÌâ

     
    \r
    -\r
    -\r
    -

    4.1)ÈçºÎֻѡÔñÒ»¸ö²éѯ½á¹ûµÄÍ·¼¸ÐУ¿»òÊÇËæ»úµÄÒ»ÐУ¿

    \r
    -

    \r

    -       Èç¹ûÄãÖ»ÊÇÒªÌáÈ¡¼¸ÐÐÊý¾Ý£¬²¢ÇÒÄãÔÚÖ´ÐвéѯÖÐÖªµÀÈ·ÇеÄÐÐÊý£¬Äã¿ÉÒÔʹÓÃLIMIT¹¦ÄÜ¡£\r
    -       Èç¹ûÓÐÒ»¸öË÷ÒýÓë  ORDER BYÖеÄÌõ¼þÆ¥Å䣬PostgreSQL ¿ÉÄܾÍÖ»´¦ÀíÒªÇóµÄÍ·¼¸Ìõ¼Ç¼£¬\r
    -       £¨·ñÔò½«¶ÔÕû¸ö²éѯ½øÐд¦ÀíÖ±µ½Éú³ÉÐèÒªµÄÐУ©¡£Èç¹ûÔÚÖ´Ðвéѯ¹¦ÄÜʱ²»ÖªµÀÈ·ÇеļǼÊý£¬\r
    -       ¿ÉʹÓÃÓαê(cursor)ºÍFETCH¹¦ÄÜ¡£\r
    -

    \r
    -

    \r

    -       ¿ÉʹÓÃÒÔÏ·½·¨ÌáȡһÐÐËæ»ú¼Ç¼µÄ£º\r
    -

    \r
    -
    \r
    -       SELECT  cols\r
    -       FROM tab\r
    -       ORDER BY random()\r
    -       LIMIT 1 ;\r
    -\r
    -\r
    -\r
    -\r
    -

    4.2)ÈçºÎ²é¿´±í¡¢Ë÷Òý¡¢Êý¾Ý¿âÒÔ¼°Óû§µÄ¶¨Ò壿ÈçºÎ²é¿´psqlÀïÓõ½µÄ²éѯָÁî²¢ÏÔʾËüÃÇ£¿

    \r
    -

    \r

    -   ÔÚpsqlÖÐʹÓà\dt ÃüÁîÀ´ÏÔʾÊý¾Ý±íµÄ¶¨Ò壬ҪÁ˽âpsqlÖеÄÍêÕûÃüÁîÁбí¿ÉʹÓÃ\? £¬ÁíÍ⣬ÄãÒ²¿ÉÒÔÔĶÁ psql µÄÔ´´úÂë\r
    -   Îļþpgsql/src/bin/psql/describe.c£¬Ëü°üÀ¨ÎªÉú³Épsql·´Ð±¸ÜÃüÁîµÄÊä³öµÄËùÓРSQL ÃüÁî¡£Ä㻹¿ÉÒÔ´ø -E Ñ¡ÏîÆô¶¯ psql£¬\r
    -   ÕâÑùËü½«´òÓ¡³öÖ´ÐÐÄãÔÚpsqlÖÐËù¸ø³öµÄÃüÁîµÄÄÚ²¿Êµ¼ÊʹÓõÄSQL²éѯ¡£PostgreSQLÒ²ÌṩÁËÒ»¸ö¼æÈÝSQLµÄINFORMATION SCHEMA½Ó¿Ú£¬\r
    -   Äã¿ÉÒÔ´ÓÕâÀï»ñÈ¡¹ØÓÚÊý¾Ý¿âµÄÐÅÏ¢¡£\r
    -

    \r
    -

    \r

    -   ÔÚϵͳÖÐÓÐһЩÒÔpg_ ´òÍ·µÄϵͳ±íÒ²ÃèÊöÁ˱íµÄ¶¨Òå¡£\r
    -

    \r
    -

    \r

    -   Ê¹Óàpsql -l Ö¸Áî¿ÉÒÔÁгöËùÓеÄÊý¾Ý¿â¡£\r
    -

    \r
    -

    \r

    -   Ò²¿ÉÒÔä¯ÀÀһϠpgsql/src/tutorial/syscat.sourceÎļþ£¬ËüÁоÙÁ˺ܶà¿É´ÓÊý¾Ý¿âϵͳ±íÖлñÈ¡ÐÅÏ¢µÄSELECTÓï·¨¡£\r
    -

    \r
    -\r
    -\r
    -

    4.3)ÈçºÎ¸ü¸ÄÒ»¸ö×ֶεÄÊý¾ÝÀàÐÍ£¿

    \r
    -

    \r

    -   ÔÚ8.0°æ±¾Àï¸ü¸ÄÒ»¸ö×ֶεÄÊý¾ÝÀàÐͺÜÈÝÒ×£¬¿ÉʹÓàALTER TABLE ALTER COLUMN TYPE ¡£\r
    -

    \r
    -

    \r

    -   ÔÚÒÔǰµÄ°æ±¾ÖУ¬¿ÉÒÔÕâÑù×ö£º\r
    -

    \r
    -
    \r
    -   BEGIN;\r
    -    ALTER TABLE tab ADD COLUMN new_col new_data_type;\r
    -    UPDATE tab SET new_col = CAST(old_col AS new_data_type);\r
    -    ALTER TABLE tab DROP COLUMN old_col;\r
    -    COMMIT;\r
    -\r
    -

    \r

    -   ÄãÈ»ºó¿ÉÒÔʹÓÃVACUUM FULL tab Ö¸ÁîÀ´Ê¹ÏµÍ³ÊÕ»ØÎÞЧÊý¾ÝËùÕ¼ÓõĿռ䡣\r
    -

    \r
    -\r
    -

    4.4)Ò»ÐмǼ£¬Ò»¸ö±í£¬Ò»¸ö¿âµÄ×î´ó³ß´çÊǶàÉÙ£¿

    \r
    -

    \r

    -   ÏÂÃæÊÇһЩÏÞÖÆ£º\r
    -

    \r
    -
    \r
    -   \r
    -   
    \r
    -       
    \r
    -       
    \r
    -       
    \r
    -       
    \r
    -       
    \r
    -       
    \r
    -       
    \r
    -   
    \r
    -
    Ò»¸öÊý¾Ý¿â×î´ó³ß´ç£¿ÎÞÏÞÖÆ£¨ÒÑ´æÔÚÓР32TB µÄÊý¾Ý¿â£©
    Ò»¸ö±íµÄ×î´ó³ß´ç£¿32 TB
    Ò»ÐмǼµÄ×î´ó³ß´ç£¿1.6 TB
    Ò»¸ö×ֶεÄ×î´ó³ß´ç?1 GB
    Ò»¸ö±íÀï×î´óÐÐÊý£¿ÎÞÏÞÖÆ
    Ò»¸ö±íÀï×î´óÁÐÊý£¿250-1600 £¨ÓëÁÐÀàÐÍÓйأ©
    Ò»¸ö±íÀïµÄ×î´óË÷ÒýÊýÁ¿£¿ÎÞÏÞÖÆ
    \r
    -\r
    -\r
    -

    \r

    -   µ±È»£¬Êµ¼ÊÉÏûÓÐÕæÕýµÄÎÞÏÞÖÆ£¬»¹ÊÇÒªÊÜ¿ÉÓôÅÅ̿ռ䡢¿ÉÓÃÄÚ´æ/½»»»ÇøµÄÖÆÔ¼¡£\r
    -   ÊÂʵÉÏ£¬µ±ÕâЩÊýÖµ±äµÃÒì³£µØ´óʱ£¬ÏµÍ³ÐÔÄÜÒ²»áÊܴܺóÓ°Ïì¡£\r
    -

    \r
    -\r
    -

    \r

    -   ±íµÄ×î´ó³ß´ç 32 TB ²»ÐèÒª²Ù×÷ϵͳ¶Ô´óÎļþµÄÖ§³Ö¡£´ó±íÓöà¸ö 1 GB µÄÎļþ´æ´¢£¬Òò´ËÎļþϵͳ³ß´çµÄÏÞÖÆÊDz»ÖØÒªµÄ¡£\r
    -

    \r
    -

    \r

    -   Èç¹ûȱʡµÄ¿é´óСÔö³¤µ½ 32K £¬×î´óµÄ±í³ß´çºÍ×î´óÁÐÊý»¹¿ÉÒÔÔö¼Óµ½Ëı¶¡£\r
    -

    \r
    -\r
    -\r
    -

    4.5)´æ´¢Ò»¸öµäÐ͵ÄÎı¾ÎļþÀïµÄÊý¾ÝÐèÒª¶àÉÙ´ÅÅ̿ռ䣿

    \r
    -

    \r

    -   Ò»¸ö Postgres Êý¾Ý¿â£¨´æ´¢Ò»¸öÎı¾Îļþ£©ËùÕ¼ÓõĿռä×î¶à¿ÉÄÜÐèÒªÏ൱ÓÚÕâ¸öÎı¾Îļþ×ÔÉí´óС5±¶µÄ´ÅÅ̿ռ䡣\r
    -

    \r
    -

    \r

    -   ÀýÈ磬¼ÙÉèÓÐÒ»¸ö 100,000 ÐеÄÎļþ£¬Ã¿ÐÐÓÐÒ»¸öÕûÊýºÍÒ»¸öÎı¾ÃèÊö¡£\r
    -   ¼ÙÉèÎı¾´®µÄƽ¾ù³¤¶ÈΪ20×Ö½Ú¡£Îı¾ÎļþÕ¼Óà2.8 MB¡£´æ·ÅÕâЩÊý¾ÝµÄ PostgreSQL Êý¾Ý¿âÎļþ´óÔ¼ÊÇ 6.4 MB:\r
    -

    \r
    -
    \r
    -     32 ×Ö½Ú: Ã¿ÐеÄÍ·£¨¹À¼ÆÖµ£©\r
    -     24 ×Ö½Ú: Ò»¸öÕûÊýÐÍ×ֶκÍÒ»¸öÎı¾ÐÍ×Ö¶Î\r
    -   +  4 ×Ö½Ú: Ò³ÃæÄÚÖ¸ÏòÔª×éµÄÖ¸Õë\r
    -   ----------------------------------------\r
    -     60 ×Ö½ÚÿÐÐ\r
    -\r
    -   PostgreSQL Êý¾ÝÒ³µÄ´óСÊÇ 8192 ×Ö½Ú (8 KB)£¬Ôò£º\r
    -\r
    -   8192 ×Ö½Úÿҳ\r
    -   -------------------   =  136 ÐÐ/Êý¾ÝÒ³£¨ÏòÏÂÈ¡Õû£©\r
    -     60 ×Ö½ÚÿÐÐ\r
    -\r
    -   100000 Êý¾ÝÐÐ\r
    -   --------------------  =  735 Êý¾ÝÒ³£¨ÏòÉÏÈ¡Õû£©\r
    -      128 ÐÐÿҳ\r
    -\r
    -   735 Êý¾ÝÒ³ * 8192 ×Ö½Ú/Ò³  =  6,021,120 ×Ö½Ú£¨6 MB£©\r
    -\r
    -\r
    -

    \r

    -   Ë÷Òý²»ÐèÒªÕâô¶àµÄ¶îÍâÏûºÄ£¬µ«Ò²È·Êµ°üÀ¨±»Ë÷ÒýµÄÊý¾Ý£¬Òò´ËËüÃÇÒ²¿ÉÄܴܺó¡£\r
    -

    \r
    -

    \r

    -   ¿ÕÖµNULL´æ·ÅÔÚλͼÖУ¬Òò´ËÕ¼ÓúÜÉٵĿռ䡣\r
    -

    \r
    -\r
    -

    4.6)ΪʲôÎҵIJéѯºÜÂý£¿ÎªÊ²Ã´ÕâЩ²éѯûÓÐÀûÓÃË÷Òý£¿

    \r
    -

    \r

    -   ²¢·Çÿ¸ö²éѯ¶¼»á×Ô¶¯Ê¹ÓÃË÷Òý¡£Ö»ÓÐÔÚ±íµÄ´óС³¬¹ýÒ»¸ö×îСֵ£¬²¢ÇÒ²éѯֻ»áÑ¡ÖбíÖнÏС±ÈÀýµÄ¼Ç¼ʱ²Å»á²ÉÓÃË÷Òý¡£\r
    -   ÕâÊÇÒòΪË÷ÒýɨÃèÒýÆðµÄËæ¼´´ÅÅÌ´æÈ¡¿ÉÄܱÈÖ±½ÓµØ¶ÁÈ¡±í£¨Ë³ÐòɨÃ裩¸üÂý¡£\r
    -

    \r
    -

    \r

    -   ÎªÁËÅжÏÊÇ·ñʹÓÃË÷Òý£¬PostgreSQL±ØÐë»ñµÃÓйرíµÄͳ¼ÆÖµ¡£ÕâЩͳ¼ÆÖµ¿ÉÒÔʹÓàVACUUM ANALYZE£¬»ò ANALYZE »ñµÃ¡£\r
    -   Ê¹ÓÃͳ¼ÆÖµ£¬ÓÅ»¯Æ÷ÖªµÀ±íÖÐÓжàÉÙÐУ¬¾ÍÄܹ»¸üºÃµØÅжÏÊÇ·ñÀûÓÃË÷Òý¡£\r
    -   Í³¼ÆÖµ¶ÔÈ·¶¨ÓÅ»¯µÄÁ¬½Ó˳ÐòºÍÁ¬½Ó·½·¨Ò²ºÜÓÐÓá£ÔÚ±íµÄÄÚÈÝ·¢Éú±ä»¯Ê±£¬Ó¦¶¨ÆÚ½øÐÐͳ¼ÆÖµµÄ¸üÐÂÊÕ¼¯¡£\r
    -

    \r
    -

    \r

    -   Ë÷Òýͨ³£²»ÓÃÓÚ ORDER BY »òÖ´ÐÐÁ¬½Ó¡£¶ÔÒ»¸ö´ó±íµÄÒ»´Î˳ÐòɨÃ裬ÔÙ×öÒ»¸öÏÔʽµÄÅÅÐòͨ³£±ÈË÷ÒýɨÃèÒª¿ì¡£\r
    -

    \r
    -\r
    -

    \r

    -   µ«ÊÇ£¬ÔÚ LIMIT ºÍ ORDER BY ½áºÏʹÓÃʱ¾­³£»áʹÓÃË÷Òý£¬ÒòΪÕâÖ»»á·µ»Ø±íµÄһС²¿·Ö¡£\r
    -   Êµ¼ÊÉÏ£¬ËäÈ» MAX() ºÍ MIN() ²¢²»Ê¹ÓÃË÷Òý£¬Í¨¹ý¶Ô\r
    -   ORDER BY ºÍ LLIMIT Ê¹ÓÃË÷ÒýÈ¡µÃ×î´óÖµºÍ×îСֵҲÊÇ¿ÉÒԵģº\r
    -

    \r
    -
    \r
    -   SELECT col\r
    -   FROM tab\r
    -   ORDER BY col [ DESC ]\r
    -   LIMIT 1;\r
    -\r
    -

    \r

    -   Èç¹ûÄãÈ·ÐÅPostgreSQLµÄÓÅ»¯Æ÷ʹÓÃ˳ÐòɨÃèÊDz»ÕýÈ·µÄ£¬Äã¿ÉÒÔʹÓÃSET enable_seqscan TO 'off'Ö¸Á\r
    -   È»ºóÔÙ´ÎÔËÐвéѯ£¬Äã¾Í¿ÉÒÔ¿´³öʹÓÃÒ»¸öË÷ÒýɨÃèÊÇ·ñȷʵҪ¿ìһЩ¡£\r
    -

    \r
    -\r
    -

    \r

    -   µ±Ê¹ÓÃͨÅä·û²Ù×÷£¬ÀýÈç LIKE »ò ~ Ê±£¬Ë÷ÒýÖ»ÄÜÔÚÌØ¶¨µÄÇé¿öÏÂʹÓãº\r
    -

    \r
    -
      \r
    -   
  • ×Ö·û´®µÄ¿ªÊ¼²¿·Ö±ØÐëÊÇÆÕͨ×Ö·û´®£¬Ò²¾ÍÊÇ˵£º\r
  • -       
      \r
    -       
  •  LIKE Ä£Ê½²»ÄÜÒÔ % ´òÍ·¡£
  • \r
    -       
  •  ~ £¨ÕýÔò±í´ïʽ£©Ä£Ê½±ØÐëÒÔ ^ ´òÍ·¡£
  • \r
    -       \r
    -   \r
    -   
  • ×Ö·û´®²»ÄÜÒÔÆ¥Åä¶à¸ö×Ö·ûµÄģʽÀà´òÍ·£¬ÀýÈç [a-e]¡£
  • \r
    -   
  • ´óСдÎ޹صIJéÕÒ£¬Èç ILIKE ºÍ ~* µÈ²»Ê¹ÓÃË÷Òý£¬µ«¿ÉÒÔÓà4.8 ½ÚÃèÊöµÄº¯ÊýË÷Òý¡£
  • \r
    -   
  • ÔÚ×ö initdb Ê±±ØÐë²ÉÓÃȱʡµÄ±¾µØÉèÖàC locale£¬ÒòΪϵͳ²»¿ÉÄÜÖªµÀÔÚ·ÇC localeÇé¿öʱÏÂÒ»¸ö×î´ó×Ö·ûÊÇʲô¡£\r
  • -       ÔÚÕâÖÖÇé¿öÏ£¬Äã¿ÉÒÔ´´½¨Ò»¸öÌØÊâµÄtext_pattern_opsË÷ÒýÀ´ÓÃÓÚLIKEµÄË÷Òý¡£\r
    -   \r
    -\r
    -

    \r

    -   ÔÚ8.0֮ǰµÄ°æ±¾ÖУ¬³ý·ÇÒª²éѯµÄÊý¾ÝÀàÐͺÍË÷ÒýµÄÊý¾ÝÀàÐÍÏàÆ¥Å䣬·ñÔòË÷Òý¾­³£ÊÇδ±»Óõ½£¬ÌرðÊǶÔint2,int8ºÍÊýÖµÐ͵ÄË÷Òý¡£\r
    -

    \r
    -\r
    -

    4.7)ÎÒÈçºÎ²ÅÄÜ¿´µ½²éѯÓÅ»¯Æ÷ÊÇÔõÑùÆÀ¹À´¦ÀíÎҵIJéѯ£¿

    \r
    -

    \r

    -   ²Î¿¼ EXPLAIN ÊÖ²áÒ³¡£\r
    -

    \r
    -\r
    -

    4.8)ÎÒÔõÑù×öÕýÔò±í´ïʽËÑË÷ºÍ´óСдÎ޹صÄÕýÔò±í´ïʽ²éÕÒ£¿ÔõÑùÀûÓÃË÷Òý½øÐдóСдÎ޹زéÕÒ£¿

    \r
    -

    \r

    -   ²Ù×÷·û  ~  ´¦ÀíÕýÔò±í´ïʽƥÅ䣬¶ø ~* ´¦Àí´óСдÎ޹صÄÕýÔò±í´ïʽƥÅä¡£´óдЩÎ޹صĠLIKE ±äÖÖ³ÉΪ ILIKE¡£\r
    -

    \r
    -

    \r

    -   ´óСдÎ޹صĵÈʽ±È½Ïͨ³£Ð´×ö£º\r
    -

    \r
    -
        SELECT *\r
    -    FROM tab\r
    -    WHERE lower(col) = 'abc';\r
    -\r
    -

    \r

    -   ÕâÑù½«²»»áʹÓñê×¼µÄË÷Òý¡£µ«ÊÇ¿ÉÒÔ´´½¨Ò»¸ö¿É±»ÀûÓõĺ¯ÊýË÷Òý:\r
    -

    \r
    -
        CREATE INDEX tabindex ON tab (lower(col));\r
    -\r
    -\r
    -

    4.9)ÔÚÒ»¸ö²éѯÀÎÒÔõÑù¼ì²âÒ»¸ö×Ö¶ÎÊÇ·ñΪ NULL £¿ÎÒÈçºÎ²ÅÄÜ׼ȷÅÅÐò¶ø²»ÂÛij×Ö¶ÎÊÇ·ñº¬ NULL Öµ£¿

    \r
    -

    \r

    -   ÓàIS NULL ºÍ IS NOT NULL ²âÊÔÕâ¸ö×ֶΣ¬¾ßÌå·½·¨ÈçÏ£º\r
    -

    \r
    -
       SELECT *\r
    -   FROM tab\r
    -   WHERE col IS NULL;\r
    -\r
    -\r
    -

    ΪÁËÄܶԺ¬ NULL×Ö¶ÎÅÅÐò£¬¿ÉÔÚ ORDER BY Ìõ¼þÖÐʹÓàIS NULLºÍ\r

    -   IS NOT NULL ÐÞÊηû£¬Ìõ¼þÎªÕæ true ½«±ÈÌõ¼þΪ¼Ùfalse ÅÅÔÚÇ°Ãæ£¬ÏÂÃæµÄÀý×ӾͻὫº¬\r
    -   NULL µÄ¼Ç¼ÅÅÔÚ½á¹ûµÄÉÏÃæ²¿·Ö£º\r
    -

    \r
    -
       SELECT *\r
    -   FROM tab\r
    -   ORDER BY (col IS NOT NULL)\r
    -\r
    -\r
    -

    4.10)¸÷ÖÖ×Ö·ûÀàÐÍÖ®¼äÓÐʲô²»Í¬£¿

    \r
    -
    \r
    -   \r
    -   
    \r
    -       
    \r
    -       
    \r
    -       
    \r
    -       
    \r
    -       
    \r
    -       
    \r
    -       
    \r
    -   
    ÀàÐÍÄÚ²¿Ãû³ÆËµÃ÷
    VARCHAR(n)varcharÖ¸¶¨ÁË×î´ó³¤¶È£¬±ä³¤×Ö·û´®£¬²»×㶨Ò峤¶ÈµÄ²¿·Ö²»²¹Æë
    CHAR(n)bpchar¶¨³¤×Ö·û´®£¬Êµ¼ÊÊý¾Ý²»×㶨Ò峤¶Èʱ£¬ÒÔ¿Õ¸ñ²¹Æë
    TEXTtextûÓÐÌØ±ðµÄÉÏÏÞÏÞÖÆ£¨½öÊÜÐеÄ×î´ó³¤¶ÈÏÞÖÆ£©
    BYTEAbytea±ä³¤×Ö½ÚÐòÁУ¨Ê¹ÓÃNULLÒ²ÊÇÔÊÐíµÄ£©
    "char"charÒ»¸ö×Ö·û
    \r
    -\r
    -\r
    -

    \r

    -   ÔÚϵͳ±íºÍÔÚһЩ´íÎóÐÅÏ¢ÀïÄ㽫¿´µ½ÄÚ²¿Ãû³Æ¡£\r
    -

    \r
    -

    \r

    -   ÉÏÃæËùÁеÄǰËÄÖÖÀàÐÍÊÇ"varlena"£¨±ä³¤£©ÀàÐÍ£¨Ò²¾ÍÊÇ˵£¬¿ªÍ·µÄËĸö×Ö½ÚÊdz¤¶È£¬ºóÃæ²ÅÊÇÊý¾Ý£©¡£\r
    -   ÓÚÊÇʵ¼ÊÕ¼ÓõĿռä±ÈÉùÃ÷µÄ´óСҪ¶àһЩ¡£\r
    -   È»¶øÕâЩÀàÐͶ¼¿ÉÒÔ±»Ñ¹Ëõ´æ´¢£¬Ò²¿ÉÒÔÓàTOAST ÍÑ»ú´æ´¢£¬Òò´Ë´ÅÅ̿ռäÒ²¿ÉÄܱÈÔ¤ÏëµÄÒªÉÙ¡£\r
    -

    \r
    -

    \r

    -   VARCHAR(n) ÔÚ´æ´¢ÏÞÖÆÁË×î´ó³¤¶ÈµÄ±ä³¤×Ö·û´®ÊÇ×îºÃµÄ¡£\r
    -   TEXT ÊÊÓÃÓÚ´æ´¢×î´ó¿É´ï 1G×óÓÒµ«Î´¶¨ÒåÏÞÖÆ³¤¶ÈµÄ×Ö·û´®¡£\r
    -

    \r
    -

    \r

    -   CHAR(n) ×îÊʺÏÓÚ´æ´¢³¤¶ÈÏàͬµÄ×Ö·û´®¡£ CHAR(n)»á¸ù¾ÝËù¸ø¶¨µÄ×ֶ㤶ÈÒÔ¿Õ¸ñ²¹×㣨²»×ãµÄ×Ö¶ÎÄÚÈÝ£©£¬\r
    -   ¶ø VARCHAR(n) Ö»´æ´¢Ëù¸ø¶¨µÄÊý¾ÝÄÚÈÝ¡£\r
    -   BYTEA ÓÃÓÚ´æ´¢¶þ½øÖÆÊý¾Ý£¬ÓÈÆäÊǰüº¬ NULL ×Ö½ÚµÄÖµ¡£ÕâЩÀàÐ;ßÓÐÏàËÆµÄÐÔÄÜÌØÐÔ¡£\r
    -

    \r
    -\r
    -\r
    -\r
    -

    4.11.1)ÎÒÔõÑù´´½¨Ò»¸öÐòÁкÅ/×Ô¶¯µÝÔöµÄ×ֶΣ¿

    \r
    -

    \r

    -   PostgreSQL Ö§³Ö SERIAL Êý¾ÝÀàÐÍ¡£ËüÔÚ×Ö¶ÎÉÏ×Ô¶¯´´½¨Ò»¸öÐòÁкÍË÷Òý¡£ÀýÈ磺\r
    -

    \r
    -
    \r
    -   CREATE TABLE person ( \r
    -       id   SERIAL, \r
    -       name TEXT \r
    -   );\r
    -\r
    -

    \r

    -   »á×Ô¶¯×ª»»Îª£º\r
    -

    \r
    -
    \r
    -   CREATE SEQUENCE person_id_seq;\r
    -   CREATE TABLE person ( \r
    -       id   INT4 NOT NULL DEFAULT nextval('person_id_seq'),\r
    -       name TEXT\r
    -   );\r
    -\r
    -

    \r

    -   ²Î¿¼ create_sequence ÊÖ²áÒ³»ñÈ¡¹ØÓÚÐòÁеĸü¶àÐÅÏ¢¡£\r
    -

    \r
    -\r
    -\r
    -

    4.11.2)ÎÒÈçºÎ»ñµÃÒ»¸ö²åÈëµÄÐòÁкŵÄÖµ£¿

    \r
    -

    \r

    -   Ò»ÖÖ·½·¨ÊÇÔÚ²åÈë֮ǰÏÈÓú¯Êý nextval() ´ÓÐòÁжÔÏóÀï¼ìË÷³öÏÂÒ»¸ö SERIAL Öµ£¬È»ºóÔÙÏÔʽ²åÈ롣ʹÓÃ\r
    -    4.11.1 ÀïµÄÀý±í£¬¿ÉÓÃαÂëÕâÑùÃèÊö£º\r
    -

    \r
    -
    \r
    -   new_id = execute("SELECT nextval('person_id_seq')");\r
    -   execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");\r
    -\r
    -

    \r

    -   ÕâÑù»¹ÄÜÔÚÆäËû²éѯÖÐʹÓôæ·ÅÔÚ new_id ÀïµÄÐÂÖµ£¨ÀýÈ磬×÷Ϊ person ±íµÄÍâ¼ü£©¡£\r
    -   ×¢Òâ×Ô¶¯´´½¨µÄ SEQUENCE ¶ÔÏóµÄÃû³Æ½«»áÊÇ  <table>_<serialcolumn>_seq£¬\r
    -   ÕâÀï table ºÍ serialcolumn ·Ö±ðÊÇÄãµÄ±íµÄÃû³ÆºÍÄãµÄ SERIAL ×ֶεÄÃû³Æ¡£\r
    -

    \r
    -

    \r

    -   ÀàËÆµÄ£¬ÔÚ SERIAL ¶ÔÏóȱʡ²åÈëºóÄã¿ÉÒÔÓú¯Êý currval() ¼ìË÷¸Õ¸³ÖµµÄ SERIAL Öµ£¬ÀýÈ磺\r
    -

    \r
    -
    \r
    -   execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");\r
    -   new_id = execute("SELECT currval('person_id_seq')");\r
    -\r
    -\r
    -

    4.11.3)ʹÓàcurrval() »áµ¼ÖÂºÍÆäËûÓû§µÄ³åÍ»Çé¿ö£¨race condition£©Âð£¿

    \r
    -

    \r

    -   ²»»á¡£currval() ·µ»ØµÄÊÇÄã±¾´Î»á»°½ø³ÌËù¸³µÄÖµ¶ø²»ÊÇËùÓÐÓû§µÄµ±Ç°Öµ¡£
    \r
    -

    \r
    -\r
    -

    4.11.4)Ϊʲô²»ÔÚÊÂÎñÒì³£ÖÐÖ¹ºóÖØÓÃÐòÁкÅÄØ£¿ÎªÊ²Ã´ÔÚÐòÁкÅ×ֶεÄȡֵÖдæÔÚ¼ä¶ÏÄØ£¿

    \r
    -

    \r

    -   ÎªÁËÌá¸ß²¢·¢ÐÔ£¬ÐòÁкÅÔÚÐèÒªµÄʱºò¸³ÓèÕýÔÚÔËÐеÄÊÂÎñ£¬²¢ÇÒÔÚÊÂÎñ½áÊøÖ®Ç°²»½øÐÐËø¶¨£¬\r
    -   Õâ¾Í»áµ¼ÖÂÒì³£ÖÐÖ¹µÄÊÂÎñºó£¬ÐòÁкŻá³öÏÖ¼ä¸ô¡£\r
    -

    \r
    -\r
    -


    4.12)ʲôÊÇ OID £¿Ê²Ã´ÊÇ CTID £¿

    \r
    -

    \r

    -   PostgreSQL Àï´´½¨µÄÿһÐмǼ¶¼»á»ñµÃÒ»¸öΨһµÄOID£¬³ý·ÇÔÚ´´½¨±íʱʹÓÃWITHOUT OIDSÑ¡Ïî¡£\r
    -   OID´´½¨Ê±»á×Ô¶¯Éú³ÉÒ»¸ö4×Ö½ÚµÄÕûÊý£¬ËùÓРOID ÔÚÕû¸ö PostgreSQL ÖоùÊÇΨһµÄ¡£ È»¶ø£¬ËüÔÚ³¬¹ý40ÒÚʱ½«Òç³ö£¬\r
    -   OID´Ëºó»á³öÏÖÖØ¸´¡£PostgreSQL ÔÚËüµÄÄÚ²¿ÏµÍ³±íÀïʹÓàOID ÔÚ±íÖ®¼ä½¨Á¢ÁªÏµ¡£\r
    -

    \r
    -

        \r

    -   ÔÚÓû§µÄÊý¾Ý±íÖУ¬×îºÃÊÇʹÓÃSERIAlÀ´´úÌæOID\r
    -   ÒòΪSERIALÖ»ÊDZ£Ö¤ÔÚµ¥¸ö±íÖÐÊý¾ÝÊÇΨһµÄ£¬ÕâÑùËüÒç³öµÄ¿ÉÄÜÐԾͷdz£Ð¡ÁË£¬\r
    -   SERIAL8¿ÉÓÃÀ´±£´æ8×Ö½ÚµÄÐòÁкÅ×ֶΡ£\r
    -

    \r
    -\r
    -

    \r

    -   CTID ÓÃÓÚ±êʶ´ø×ÅÊý¾Ý¿é£¨µØÖ·£©ºÍ£¨¿éÄÚ£©Æ«ÒƵÄÌØ¶¨µÄÎïÀíÐС£\r
    -   CTID ÔڼǼ±»¸ü¸Ä»òÖØÔØºó·¢Éú¸Ä±ä¡£Ë÷ÒýÈë¿ÚʹÓÃËüÃÇÖ¸ÏòÎïÀíÐС£\r
    -

    \r
    -\r
    -\r
    -

    4.13)ΪʲôÎÒÊÕµ½´íÎóÐÅÏ¢¡°ERROR: Memory exhausted in AllocSetAlloc()¡±£¿

    \r
    -

    \r

    -   ÕâºÜ¿ÉÄÜÊÇϵͳµÄÐéÄâÄÚ´æÓùâÁË£¬»òÕßÄں˶ÔijЩ×ÊÔ´Óнϵ͵ÄÏÞÖÆÖµ¡£ÔÚÆô¶¯ postmaster Ö®Ç°ÊÔÊÔÏÂÃæµÄÃüÁ\r
    -

    \r
    -
    \r
    -   ulimit -d 262144\r
    -   limit datasize 256m\r
    -\r
    -

    \r

    -   È¡¾öÓÚÄãÓõĠshell£¬ÉÏÃæÃüÁîÖ»ÓÐÒ»ÌõÄܳɹ¦£¬µ«ÊÇËü½«°ÑÄãµÄ½ø³ÌÊý¾Ý¶ÎÏÞÖÆÉèµÃ±È½Ï¸ß£¬\r
    -   Òò¶øÒ²ÐíÄÜÈòéѯÍê³É¡£ÕâÌõÃüÁîÓ¦ÓÃÓÚµ±Ç°½ø³Ì£¬ÒÔ¼°ËùÓÐÔÚÕâÌõÃüÁîÔËÐк󴴽¨µÄ×Ó½ø³Ì¡£\r
    -   Èç¹ûÄãÊÇÔÚÔËÐÐSQL¿Í»§¶ËʱÒòΪºǫ́·µ»ØÁËÌ«¶àµÄÊý¾Ý¶ø³öÏÖÎÊÌ⣬ÇëÔÚÔËÐпͻ§¶Ë֮ǰִÐÐÉÏÊöÃüÁî¡£\r
    -

    \r
    -\r
    -

    4.14)ÎÒÈçºÎ²ÅÄÜÖªµÀËùÔËÐеĠPostgreSQL µÄ°æ±¾£¿

    \r
    -

    \r

    -   ´Ó psql ÀÊäÈë SELECT version();Ö¸Áî¡£\r
    -

    \r
    -\r
    -

    4.15)ÎÒÈçºÎ´´½¨Ò»¸öȱʡֵÊǵ±Ç°Ê±¼äµÄ×ֶΣ¿

    \r
    -

    \r

    -   Ê¹ÓàCURRENT_TIMESTAMP£º\r
    -

    \r
    -
    \r
    -   CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );\r
    -\r
    -\r
    -\r
    -

    4.16)ÎÒÔõÑù½øÐРouter join £¨ÍâÁ¬½Ó£©£¿

    \r
    -

    \r

    -   PostgreSQL ²ÉÓñê×¼µÄ SQL Óï·¨Ö§³ÖÍâÁ¬½Ó¡£ÕâÀïÊÇÁ½¸öÀý×Ó£º\r
    -

    \r
    -
    \r
    -   SELECT *\r
    -   FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);\r
    -\r
    -

    »òÊÇ

    \r
    -
    \r
    -   SELECT *\r
    -   FROM t1 LEFT OUTER JOIN t2 USING (col);\r
    -\r
    -

    \r

    -   ÕâÁ½¸öµÈ¼ÛµÄ²éѯÔÚ t1.col ºÍ t2.col ÉÏ×öÁ¬½Ó£¬²¢ÇÒ·µ»Ø t1 ÖÐËùÓÐδÁ¬½ÓµÄÐУ¨ÄÇЩÔÚ t2 ÖÐûÓÐÆ¥ÅäµÄÐУ©¡£\r
    -   ÓÒ[Íâ]Á¬½Ó(RIGHT OUTER JOIN)½«·µ»Ø t2 ÖÐδÁ¬½ÓµÄÐС£\r
    -   ÍêÈ«ÍâÁ¬½Ó£¨FULL OUTER JOIN£©½«·µ»Ø t1 ºÍ t2 ÖÐδÁ¬½ÓµÄÐС£\r
    -   ¹Ø¼ü×Ö OUTER ÔÚ×ó[Íâ]Á¬½Ó¡¢ÓÒ[Íâ]Á¬½ÓºÍÍêÈ«[Íâ]Á¬½ÓÖÐÊÇ¿ÉÑ¡µÄ£¬ÆÕͨÁ¬½Ó±»³ÆÎªÄÚÁ¬½Ó£¨INNER JOIN£©¡£\r
    -

    \r
    -\r
    -\r
    -

    4.17)ÈçºÎʹÓÃÉæ¼°¶à¸öÊý¾Ý¿âµÄ²éѯ£¿

    \r
    -

    \r

    -   Ã»Óа취²éѯµ±Ç°Êý¾Ý¿âÖ®ÍâµÄÊý¾Ý¿â¡£\r
    -   ÒòΪ PostgreSQL Òª¼ÓÔØÓëÊý¾Ý¿âÏà¹ØµÄϵͳĿ¼£¨ÏµÍ³±í£©£¬Òò´Ë¿çÊý¾Ý¿âµÄ²éѯÈçºÎÖ´ÐÐÊDz»¶¨µÄ¡£\r
    -

    \r
    -

    \r

    -   ¸½¼ÓÔöֵģ¿écontrib/dblinkÔÊÐí²ÉÓú¯Êýµ÷ÓÃʵÏÖ¿ç¿â²éѯ¡£µ±È»Óû§Ò²¿ÉÒÔͬʱÁ¬½Óµ½²»Í¬µÄÊý¾Ý¿âÖ´ÐвéѯȻºóÔÚ¿Í»§¶ËºÏ²¢½á¹û¡£\r
    -

    \r
    -\r
    -

    4.18)ÈçºÎÈú¯Êý·µ»Ø¶àÐлò¶àÁУ¿

    \r
    -

    \r

    -   ÔÚº¯ÊýÖзµ»ØÊý¾Ý¼Ç¼¼¯µÄ¹¦ÄÜÊǺÜÈÝÒ×ʹÓõģ¬ÏêÇé²Î¼û£º\r
    -   http://techdocs.postgresql.org/guides/SetReturningFunctions\r
    -

    \r
    -\r
    -

    4.19)ΪʲôÎÒÔÚʹÓÃPL/PgSQLº¯Êý´æÈ¡ÁÙʱ±íʱ»áÊÕµ½´íÎóÐÅÏ¢¡°relation with OID ##### does not exist¡±£¿

    \r
    -

    \r

    -   PL/PgSQL»á»º´æº¯ÊýµÄÄÚÈÝ£¬ÓÉ´Ë´øÀ´µÄÒ»¸ö²»ºÃµÄ¸±×÷ÓÃÊÇÈôÒ»¸ö PL/PgSQL\r
    -    º¯Êý·ÃÎÊÁËÒ»¸öÁÙʱ±í£¬È»ºó¸Ã±í±»É¾³ý²¢Öؽ¨ÁË£¬ÔòÔٴε÷Óøú¯Êý½«Ê§°Ü£¬\r
    -   ÒòΪ»º´æµÄº¯ÊýÄÚÈÝÈÔȻָÏò¾ÉµÄÁÙʱ±í¡£½â¾öµÄ·½·¨ÊÇÔÚ PL/PgSQL ÖÐÓÃEXECUTE\r
    -    ¶ÔÁÙʱ±í½øÐзÃÎÊ¡£ÕâÑù»á±£Ö¤²éѯÔÚÖ´ÐÐǰ×Ü»á±»ÖØÐ½âÎö¡£\r
    -

    \r
    -\r
    -

    4.27)ĿǰÓÐÄÄЩÊý¾Ý¸´ÖÆ·½°¸¿ÉÓã¿

    \r
    -

    \r

    -   ¡°¸´ÖÆ¡±Ö»ÊÇÒ»¸öÊõÓÓкü¸ÖÖ¸´ÖƼ¼Êõ¿ÉʹÓã¬Ã¿ÖÖ¶¼ÓÐÓŵãºÍȱµã£º\r
    -

    \r
    -

    \r

    -   Ö÷/´Ó¸´ÖÆ·½Ê½ÊÇÔÊÐíÒ»¸öÖ÷·þÎñÆ÷½ÓÊܶÁ/дµÄÉêÇ룬¶ø¶à¸ö´Ó·þÎñÆ÷Ö»ÄܽÓÊܶÁ/SELECT²éѯµÄÉêÇ룬\r
    -   Ä¿Ç°×îÁ÷ÐÐÇÒÊÇÃâ·ÑµÄÖ÷/´Ó PostgreSQL¸´ÖÆ·½°¸ÊÇ \r
    -   Slony-I ¡£\r
    -

    \r
    -

    \r

    -   ¶à¸öÖ÷·þÎñÆ÷µÄ¸´ÖÆ·½Ê½ÔÊÐí½«¶Á/дµÄÉêÇë·¢Ë͸ø¶ą̀µÄ¼ÆËã»ú£¬ÕâÖÖ·½Ê½ÓÉÓÚÐèÒªÔÚ¶ą̀·þÎñÆ÷Ö®¼äͬ²½Êý¾Ý±ä¶¯\r
    -   ¿ÉÄÜ»á´øÀ´½ÏÑÏÖØµÄÐÔÄÜËðʧ£¬PgclusterÊÇĿǰÕâÖÖ·½°¸\r
    -   ÖÐ×îºÃµÄ£¬¶øÇÒ»¹¿ÉÒÔÃâ·ÑÏÂÔØ¡£\r
    -

    \r
    -

    \r

    -   Ò²ÓÐһЩÉÌÒµÐ踶·ÑºÍ»ùÓÚÓ²¼þµÄÊý¾Ý¸´ÖÆ·½°¸£¬Ö§³ÖÉÏÊö¸÷ÖÖ¸´ÖÆÄ£ÐÍ¡£\r
    -

    \r
    -\r
    -\r
    -\r
    -\r
    -\r
    -\r
    +
    +    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    +
    +  
    +    </div> <div class="diff add">+      PostgreSQL: PostgreSQL ³£¼ûÎÊÌ⣨FAQ£©</div> <div class="diff add">+    
    +    
    +  
    +
    +  
    +
    +

    PostgreSQL ³£¼ûÎÊÌ⣨FAQ£©

    +

    +×î½ü¸üУº2005 Äê 06 Ô 02 ÈÕ ÐÇÆÚÎå 22:27:35 CST
    +

    +

    +   Ä¿Ç°Î¬»¤ÈËÔ±£ºBruce Momjian ([email protected])
    +   ÖÐÎİæÎ¬»¤ÈËÔ±£ºdoudou586 £¨[email protected]£©
    +

    +

    +   ±¾ÎĵµµÄ×îа汾¿ÉÒÔÔÚ
    +   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)ΪʲôÎҵIJéѯºÜÂý£¿ÎªÊ²Ã´ÕâЩ²éѯûÓÐÀûÓÃË÷Òý£¿
    +4.7)ÎÒÈçºÎ²ÅÄÜ¿´µ½²éѯÓÅ»¯Æ÷ÊÇÔõÑùÆÀ¹À´¦ÀíÎҵIJéѯµÄ£¿
    +4.8)ÎÒÔõÑù×öÕýÔò±í´ïʽËÑË÷ºÍ´óСдÎ޹صÄÕýÔò±í´ïʽ²éÕÒ£¿ÔõÑùÀûÓÃË÷Òý½øÐдóСдÎ޹زéÕÒ£¿
    +4.9)ÔÚÒ»¸ö²éѯÀÎÒÔõÑù¼ì²âÒ»¸ö×Ö¶ÎÊÇ·ñΪ NULL£¿ÎÒÈçºÎ²ÅÄÜ׼ȷÅÅÐò¶ø²»ÂÛij×Ö¶ÎÊÇ·ñº¬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 µÄ¿ª·¢¶ÓÎéÖ÷ҪΪ־ԸÕߣ¬ËûÃDZ鲼ÊÀ½ç¸÷µØ²¢Í¨¹ý»¥ÁªÍø½øÐÐÁªÏµ£¬ÕâÊÇÒ»¸öÉçÇø¿ª·¢ÏîÄ¿£¬Ëü²»±»Èκι«Ë¾¿ØÖÆ¡£
    +   ÈçÏë¼ÓÈ뿪·¢¶ÓÎ飬Çë²Î¼û¿ª·¢ÈËÔ±³£¼ûÎÊÌ⣨FAQ£©
    +   http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html
    +

    +
    +
    +

    1.2)PostgreSQL µÄ°æÈ¨ÊÇʲô?

    +

    +PostgreSQLµÄ·¢²¼×ñ´Ó¾­µäµÄBSD°æÈ¨¡£¹ØÓÚÔ´´úÂëµÄÈçºÎʹÓÃûÓÐÈκÎÏÞÖÆ£¬ÎÒÃǺÜϲ»¶ÕâÖÖ·½Ê½²¢ÇÒ»¹Ã»ÓдòËã¸Ä±äËü¡£
    +

    +

    +ÏÂÃæ¾ÍÊÇÎÒÃÇʹÓõÄBSD°æÈ¨ÄÚÈÝ£º
    +

    +
    +

    +   ²¿·Ö°æÈ¨£¨c£©1996-2005£¬PostgreSQL È«Çò¿ª·¢Ð¡×飬²¿·Ö°æÈ¨£¨c£©1994-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µÄ²Ù×÷ϵͳ£¬ÈçWin2000£¬WinXP ºÍ Win2003£¬ÒÑÖÆ×÷Íê³ÉµÄ°²×°°ü¿É´Ó
    +   http://pgfoundry.org/projects/pginstallerÏÂÔØ£¬»ùÓÚMSDOSµÄWindows²Ù×÷ϵͳ
    +   £¨Win95£¬Win98£¬WinMe£©ÐèҪͨ¹ýCygwinÄ£Äâ»·¾³ÔËÐÐPostgreSQL¡£
    +

    +
    +

    +  Í¬Ê±Ò²ÓÐÒ»¸öΪNovell Netware 6¿ª·¢µÄ°æ±¾¿É´Ó http://forge.novell.com »ñÈ¡£¬ÎªOS/2¿ª·¢µÄ°æ±¾¿É´Ó
    +  
    +  http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgreSQL&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£¬ÎªÁËÁ¬ÉÏ´ËÆµµÀ£¬¿ÉÒÔʹÓÃUNIX³ÌÐòirc£¬ÆäÖ¸Áî¸ñʽ£º
    +   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 ºÍÆäËûÉÌÓúͿªÔ´µÄÊý¾Ý¿â¾ßÓÐÀàËÆµÄÐÔÄÜ¡£
    +       ¶ÔijЩ´¦ÀíËü±È½Ï¿ì£¬¶ÔÆäËûһЩ´¦ÀíËü±È½ÏÂý¡£
    +       ÓëÆäËûÊý¾Ý¿âÏà±È£¬ÎÒÃǵÄÐÔÄÜͨ³£ÔÚ +/- 10%Ö®¼ä¡£
    +   
    +
    +   
    ¿É¿¿ÐÔ
    +   
    +       ÎÒÃÇÖªµÀ DBMS ±ØÐëÊǿɿ¿µÄ£¬·ñÔòËü¾ÍÒ»µãÓö¼Ã»ÓС£
    +       ÎÒÃÇŬÁ¦×öµ½·¢²¼¾­¹ýÈÏÕæ²âÊԵģ¬Îȶ¨µÄ³ô³æ×îÉٵĴúÂ롣ÿ¸ö°æ±¾ÖÁÉÙÓÐÒ»¸öÔµĠbeta
    +       ²âÊÔʱ¼ä£¬²¢ÇÒÎÒÃǵķ¢²¼ÀúÊ·ÏÔʾÎÒÃÇ¿ÉÒÔÌṩÎȶ¨µÄ£¬Àι̵ģ¬¿ÉÓÃÓÚÉú²úʹÓõİ汾¡£ÎÒÃÇÏàÐÅ
    +       ÔÚÕâ·½ÃæÎÒÃÇÓëÆäËûµÄÊý¾Ý¿âÈí¼þÊÇÏ൱µÄ¡£
    +   
    +   
    +   
    Ö§³Ö
    +    
    +       ÎÒÃǵÄÓʼþÁбíÌṩһ¸ö·Ç³£´óµÄ¿ª·¢ÈËÔ±ºÍÓû§µÄ×éÒÔ°ïÖú½â¾öËùÅöµ½µÄÈκÎÎÊÌâ¡£
    +       ÎÒÃDz»Äܱ£Ö¤¿Ï¶¨Äܽâ¾öÎÊÌ⣬Ïà±È֮ϣ¬ÉÌÓàDBMS Ò²²¢²»ÊÇ×ÜÄܹ»Ìṩ½â¾ö·½·¨¡£
    +       Ö±½ÓÓ뿪·¢ÈËÔ±£¬Óû§Èº£¬ÊÖ²áºÍÔ´³ÌÐò½Ó´¥Áî PostgreSQL µÄÖ§³Ö±ÈÆäËû DBMS
    +       »¹ÒªºÃ¡£»¹ÓÐһЩÉÌÒµÐÔµÄÔ¤°ü×°µÄÖ§³Ö£¬¿ÉÒÔ¸øÌṩ¸øÄÇЩÐèÒªµÄÈË¡££¨²ÎÔÄ FAQ Ìõ¿î 1.5 Ð¡½Ú£©
    +    
    +
    +    
    ¼Û¸ñ
    +    
    +       ÎÒÃǶÔÈκÎÓÃ;¶¼Ãâ·Ñ£¬°üÀ¨ÉÌÓúͷÇÉÌÓÃÄ¿µÄ¡£
    +       Äã¿ÉÒÔ²»¼ÓÏÞÖÆµØÏòÄãµÄ²úÆ·Àï¼ÓÈëÎÒÃǵĴúÂ룬³ýÁËÄÇЩÎÒÃÇÔÚÉÏÃæµÄ°æÈ¨ÉùÃ÷ÀïÉùÃ÷µÄ BSD ·ç¸ñµÄ°æÈ¨Íâ¡£
    +    
    +
    +
    +
    +
    +

    1.13)Ë­¿ØÖÆPostgreSQL £¿

    +

    +   Èç¹ûÄãÔÚѰÕÒPostgreSQLµÄÕÆÃÅÈË£¬»òÊÇʲôÖÐÑëίԱ»á£¬»òÊÇʲôËùÊô¹«Ë¾£¬ÄãÖ»ÄÜ·ÅÆúÁË---ÒòΪһ¸öÒ²²»´æÔÚ£¬µ«ÎÒÃǵÄÈ·ÓÐÒ»¸ö
    +   Î¯Ô±»áºÍCVS¹ÜÀí×飬µ«ÕâЩ¹¤×÷×éµÄÉèÁ¢Ö÷ÒªÊÇΪÁ˽øÐйÜÀí¹¤×÷¶ø²»ÊǶÔPostgreSQL½øÐпØÖÆ£¬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£¬·ñÔòÆäËû»úÆ÷ÊDz»ÄÜÓëÄãµÄPostgreSQL·þÎñÆ÷Á¬½ÓµÄ¡£
    +

    +
    +
    +

    3.3)ÎÒÔõÑùµ÷ÕûÊý¾Ý¿âÒýÇæÒÔ»ñµÃ¸üºÃµÄÐÔÄÜ£¿

    +

    +   ÓÐÈý¸öÖ÷Òª·½Ãæ¿ÉÒÔÌáÉýPostgreSQLµÄDZÄÜ¡£
    +

    +
    +
    +   
    ²éѯ·½Ê½µÄ±ä»¯
    +   
    +       ÕâÖ÷񻃾¼°Ð޸IJéѯ·½Ê½ÒÔ»ñÈ¡¸üºÃµÄÐÔÄÜ:
    +       
      +       
    • ´´½¨Ë÷Òý£¬°üÀ¨±í´ïʽºÍ²¿·ÖË÷Òý£»
    • +       
    • ʹÓÃCOPYÓï¾ä´úÌæ¶à¸öInsertÓï¾ä£»
    • +       
    • ½«¶à¸ö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_conf_e.html  ºÍ 
      +       http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html¡£
      +   
      +
      +   
      Ó²¼þµÄÑ¡Ôñ
      +   
      +       ¼ÆËã»úÓ²¼þ¶ÔÐÔÄܵÄÓ°Ïì¿Éä¯ÀÀ 
      +       http://candle.pha.pa.us/main/writings/pgsql/hw_performance/index.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£©Í¨³£»áÐÞ¸Äϵͳ±íºÍÊý¾Ý±íµÄÄÚ²¿¸ñʽ¡£
      +   ÕâЩ±ä»¯Ò»°ã±È½Ï¸´ÔÓ£¬Òò´ËÎÒÃDz»Î¬Êý¾ÝÎļþµÄÏòºó¼æÈÝ¡£
      +   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²éѯ¡£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 µÄÎļþ´æ´¢£¬Òò´ËÎļþϵͳ³ß´çµÄÏÞÖÆÊDz»ÖØÒªµÄ¡£
      +

      +

      +   Èç¹ûȱʡµÄ¿é´óСÔö³¤µ½ 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)ΪʲôÎҵIJéѯºÜÂý£¿ÎªÊ²Ã´ÕâЩ²éѯûÓÐÀûÓÃË÷Òý£¿

      +

      +   ²¢·Çÿ¸ö²éѯ¶¼»á×Ô¶¯Ê¹ÓÃË÷Òý¡£Ö»ÓÐÔÚ±íµÄ´óС³¬¹ýÒ»¸ö×îСֵ£¬²¢ÇÒ²éѯֻ»áÑ¡ÖбíÖнÏС±ÈÀýµÄ¼Ç¼ʱ²Å»á²ÉÓÃË÷Òý¡£
      +   ÕâÊÇÒòΪË÷ÒýɨÃèÒýÆðµÄËæ¼´´ÅÅÌ´æÈ¡¿ÉÄܱÈÖ±½ÓµØ¶ÁÈ¡±í£¨Ë³ÐòɨÃ裩¸üÂý¡£
      +

      +

      +   ÎªÁËÅжÏÊÇ·ñʹÓÃË÷Òý£¬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µÄÓÅ»¯Æ÷ʹÓÃ˳ÐòɨÃèÊDz»ÕýÈ·µÄ£¬Äã¿ÉÒÔʹÓÃSET enable_seqscan TO 'off'Ö¸Á
      +   È»ºóÔÙ´ÎÔËÐвéѯ£¬Äã¾Í¿ÉÒÔ¿´³öʹÓÃÒ»¸öË÷ÒýɨÃèÊÇ·ñȷʵҪ¿ìһЩ¡£
      +

      +
      +

      +   µ±Ê¹ÓÃͨÅä·û²Ù×÷£¬ÀýÈç LIKE »ò ~ Ê±£¬Ë÷ÒýÖ»ÄÜÔÚÌØ¶¨µÄÇé¿öÏÂʹÓãº
      +

      +
        +   
      • ×Ö·û´®µÄ¿ªÊ¼²¿·Ö±ØÐëÊÇÆÕͨ×Ö·û´®£¬Ò²¾ÍÊÇ˵£º
      • +       
          +       
        •  LIKE Ä£Ê½²»ÄÜÒÔ % ´òÍ·¡£
        • +       
        •  ~ £¨ÕýÔò±í´ïʽ£©Ä£Ê½±ØÐëÒÔ ^ ´òÍ·¡£
        • +       
          +   
          +   
        • ×Ö·û´®²»ÄÜÒÔÆ¥Åä¶à¸ö×Ö·ûµÄģʽÀà´òÍ·£¬ÀýÈç [a-e]¡£
        • +   
        • ´óСдÎ޹صIJéÕÒ£¬Èç ILIKE ºÍ ~* µÈ²»Ê¹ÓÃË÷Òý£¬µ«¿ÉÒÔÓà4.8 ½ÚÃèÊöµÄº¯ÊýË÷Òý¡£
        • +   
        • ÔÚ×ö initdb Ê±±ØÐë²ÉÓÃȱʡµÄ±¾µØÉèÖàC locale£¬ÒòΪϵͳ²»¿ÉÄÜÖªµÀÔÚ·ÇC localeÇé¿öʱÏÂÒ»¸ö×î´ó×Ö·ûÊÇʲô¡£
        • +       ÔÚÕâÖÖÇé¿öÏ£¬Äã¿ÉÒÔ´´½¨Ò»¸öÌØÊâµÄtext_pattern_opsË÷ÒýÀ´ÓÃÓÚLIKEµÄË÷Òý¡£
          +   
          +
          +

          +   ÔÚ8.0֮ǰµÄ°æ±¾ÖУ¬³ý·ÇÒª²éѯµÄÊý¾ÝÀàÐͺÍË÷ÒýµÄÊý¾ÝÀàÐÍÏàÆ¥Å䣬·ñÔòË÷Òý¾­³£ÊÇδ±»Óõ½£¬ÌرðÊǶÔint2,int8ºÍÊýÖµÐ͵ÄË÷Òý¡£
          +

          +
          +

          4.7)ÎÒÈçºÎ²ÅÄÜ¿´µ½²éѯÓÅ»¯Æ÷ÊÇÔõÑùÆÀ¹À´¦ÀíÎҵIJéѯ£¿

          +

          +   ²Î¿¼ EXPLAIN ÊÖ²áÒ³¡£
          +

          +
          +

          4.8)ÎÒÔõÑù×öÕýÔò±í´ïʽËÑË÷ºÍ´óСдÎ޹صÄÕýÔò±í´ïʽ²éÕÒ£¿ÔõÑùÀûÓÃË÷Òý½øÐдóСдÎ޹زéÕÒ£¿

          +

          +   ²Ù×÷·û  ~  ´¦ÀíÕýÔò±í´ïʽƥÅ䣬¶ø ~* ´¦Àí´óСдÎ޹صÄÕýÔò±í´ïʽƥÅä¡£´óдЩÎ޹صĠLIKE ±äÖÖ³ÉΪ ILIKE¡£
          +

          +

          +   ´óСдÎ޹صĵÈʽ±È½Ïͨ³£Ð´×ö£º
          +

          +
              SELECT *
          +    FROM tab
          +    WHERE lower(col) = 'abc';
          +
          +

          +   ÕâÑù½«²»»áʹÓñê×¼µÄË÷Òý¡£µ«ÊÇ¿ÉÒÔ´´½¨Ò»¸ö¿É±»ÀûÓõĺ¯ÊýË÷Òý:
          +

          +
              CREATE INDEX tabindex ON tab (lower(col));
          +
          +
          +

          4.9)ÔÚÒ»¸ö²éѯÀÎÒÔõÑù¼ì²âÒ»¸ö×Ö¶ÎÊÇ·ñΪ NULL £¿ÎÒÈçºÎ²ÅÄÜ׼ȷÅÅÐò¶ø²»ÂÛij×Ö¶ÎÊÇ·ñº¬ 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¶¨³¤×Ö·û´®£¬Êµ¼ÊÊý¾Ý²»×㶨Ò峤¶Èʱ£¬ÒÔ¿Õ¸ñ²¹Æë
          TEXTtextûÓÐÌØ±ðµÄÉÏÏÞÏÞÖÆ£¨½öÊÜÐеÄ×î´ó³¤¶ÈÏÞÖÆ£©
          BYTEAbytea±ä³¤×Ö½ÚÐòÁУ¨Ê¹ÓÃNULLÒ²ÊÇÔÊÐíµÄ£©
          "char"charÒ»¸ö×Ö·û
          +
          +
          +

          +   ÔÚϵͳ±íºÍÔÚһЩ´íÎóÐÅÏ¢ÀïÄ㽫¿´µ½ÄÚ²¿Ãû³Æ¡£
          +

          +

          +   ÉÏÃæËùÁеÄǰËÄÖÖÀàÐÍÊÇ"varlena"£¨±ä³¤£©ÀàÐÍ£¨Ò²¾ÍÊÇ˵£¬¿ªÍ·µÄËĸö×Ö½ÚÊdz¤¶È£¬ºóÃæ²ÅÊÇÊý¾Ý£©¡£
          +   ÓÚÊÇʵ¼ÊÕ¼ÓõĿռä±ÈÉùÃ÷µÄ´óСҪ¶àһЩ¡£
          +   È»¶øÕâЩÀàÐͶ¼¿ÉÒÔ±»Ñ¹Ëõ´æ´¢£¬Ò²¿ÉÒÔÓà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 ÔÚ±íÖ®¼ä½¨Á¢ÁªÏµ¡£
          +

          +

              

          +   ÔÚÓû§µÄÊý¾Ý±íÖУ¬×îºÃÊÇʹÓÃSERIAlÀ´´úÌæOID
          +   ÒòΪSERIALÖ»ÊDZ£Ö¤ÔÚµ¥¸ö±íÖÐÊý¾ÝÊÇΨһµÄ£¬ÕâÑùËüÒç³öµÄ¿ÉÄÜÐԾͷdz£Ð¡ÁË£¬
          +   SERIAL8¿ÉÓÃÀ´±£´æ8×Ö½ÚµÄÐòÁкÅ×ֶΡ£
          +

          +
          +

          +   CTID ÓÃÓÚ±êʶ´ø×ÅÊý¾Ý¿é£¨µØÖ·£©ºÍ£¨¿éÄÚ£©Æ«ÒƵÄÌØ¶¨µÄÎïÀíÐС£
          +   CTID ÔڼǼ±»¸ü¸Ä»òÖØÔØºó·¢Éú¸Ä±ä¡£Ë÷ÒýÈë¿ÚʹÓÃËüÃÇÖ¸ÏòÎïÀíÐС£
          +

          +
          +
          +

          4.13)ΪʲôÎÒÊÕµ½´íÎóÐÅÏ¢¡°ERROR: Memory exhausted in AllocSetAlloc()¡±£¿

          +

          +   ÕâºÜ¿ÉÄÜÊÇϵͳµÄÐéÄâÄÚ´æÓùâÁË£¬»òÕßÄں˶ÔijЩ×ÊÔ´Óнϵ͵ÄÏÞÖÆÖµ¡£ÔÚÆô¶¯ 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 Òª¼ÓÔØÓëÊý¾Ý¿âÏà¹ØµÄϵͳĿ¼£¨ÏµÍ³±í£©£¬Òò´Ë¿çÊý¾Ý¿âµÄ²éѯÈçºÎÖ´ÐÐÊDz»¶¨µÄ¡£
          +

          +

          +   ¸½¼ÓÔöֵģ¿é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ÊÇĿǰÕâÖÖ·½°¸
          +   ÖÐ×îºÃµÄ£¬¶øÇÒ»¹¿ÉÒÔÃâ·ÑÏÂÔØ¡£
          +

          +

          +   Ò²ÓÐһЩÉÌÒµÐ踶·ÑºÍ»ùÓÚÓ²¼þµÄÊý¾Ý¸´ÖÆ·½°¸£¬Ö§³ÖÉÏÊö¸÷ÖÖ¸´ÖÆÄ£ÐÍ¡£
          +

          +
          +
          +
          +
          +
          +