From ff868d8161b9b07bc7e311a295119fa843899a7f Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: 2005年5月11日 02:11:05 +0000 Subject: [PATCH] Add Chinese FAQ. laser@pgsqldb.com --- doc/FAQ_chinese | 610 +++++++++++++++++++ doc/src/FAQ/FAQ_chinese.html | 1095 ++++++++++++++++++++++++++++++++++ 2 files changed, 1705 insertions(+) create mode 100644 doc/FAQ_chinese create mode 100644 doc/src/FAQ/FAQ_chinese.html diff --git a/doc/FAQ_chinese b/doc/FAQ_chinese new file mode 100644 index 00000000000..c50a4127c49 --- /dev/null +++ b/doc/FAQ_chinese @@ -0,0 +1,610 @@ + + PostgreSQL 31ドル⁄4ûÎÊÌ⣠̈FAQ£© ×ばつî1⁄2ü ̧üУo2003 Äê 01 Ô 06 ÈÕ ÐÇÆÚÒ» + 22:27:35 CST Ŀǰά»¤ÈËÔ±£oBruce Momjian (pgman@candle.pha.pa.us ) + ÖÐÎİæÎ¬»¤ÈËÔ±£ooÎΰÆ1⁄2 £ ̈laser@pgsqldb.com £© + ×ばつîаæ±3⁄4¿ÉÒÔÔÚhttp: + //www.postgresql.org/files/documentation/faqs/FAQ.html 2é¿ ́¡£ + ×ばつ÷ÏμÍ3Æ1⁄2Ì ̈Ïà1ØμÄÎÊÌâÔÚhttp://www.postgresql.org/docs/faq/Àï»Ø ́ð¡£ + ---------------------------------------------------------------------- + -- 31ドル⁄4ûÎÊÌâ 1.1 <#1.1>) PostgreSQL ÊÇÊ2à ́£¿ ̧ÃÔõà ́·¢Òô£¿ 1.2 <#1.2>) + PostgreSQL μİæÈ ̈ÊÇÊ2à ́? 1.3 <#1.3>) PostgreSQL ÔËÐÐÔÚÊ2à ́ Unix + Æ1⁄2Ì ̈ÉÏ£¿ 1.4 <#1.4>) ¿ÉÓÃμÄ·Ç Unix Æ1⁄2Ì ̈ÓÐÄÇЩ£¿ 1.5 <#1.5>) + ÎÒ ́ÓÄÄÀïÄÜμÃμ1⁄2 PostgreSQL£¿ 1.6 <#1.6>) ÎÒ ́ÓÄÄÀïÄÜμÃμ1⁄2¶Ô PostgreSQL + μÄÖ§3Ö£¿ 1.7 <#1.7>) PostgreSQL ×ばつîÐÂμİæ±3⁄4ÊÇÊ2à ́£¿ 1.8 <#1.8>) + ÓÐÄÄЩ¿ÉÓÃμÄ PostgreSQL μÄÎÄμμ£¿ 1.9 <#1.9>) ÎÒÈçoÎÁË1⁄2âÒÑÖaμÄ BUG + »òȱʧμÄÌØÐÔ£¿ 1.10 <#1.10>) ÎÒÓ¦ ̧ÃÔõÑùѧϰ SQL £¿ 1.11 <#1.11>) + PostgreSQL ÊÇ Y2K 1⁄4æÈÝμÄÂ𣿠1.12 <#1.12>) ÎÒÓ¦ ̧ÃÔõÑù1⁄4ÓÈë¿a·¢¶ÓÎ飿 + 1.13 <#1.13>) ÎÒÓ¦ ̧ÃÔõÑùÌá1⁄2»Ò» ̧ö BUG ± ̈ ̧棿 1.14 <#1.14>) PostgreSQL + oÍÆäËû DBMS ±ÈÆðÀ ́ÈçoΣ¿ 1.15 <#1.15>) ÎÒÓ¦ ̧ÃÔõÑùÔÞÖú PostgreSQL £¿ + Óû§¿Í»§¶ËÎÊÌâ 2.1 <#2.1>) ÓÐ PostgreSQL μÄ ODBC Çý¶ ̄3ÌÐòà ́£¿ 2.2 + <#2.2>) ÓÐÊ2à ́1¤3⁄4ß¿ÉÒÔ°Ñ PostgreSQL ÓÃÓÚ Web Ò3Ãæ£¿ 2.3 <#2.3>) + PostgreSQL ÓμÓÐÍ1⁄4ÐÎÓû§1⁄2çÃæÂ𣿠2.4 <#2.4>) ÎÒÃÇ¿ÉÒÔÓÃÊ2à ́ÓïÑÔoÍ + PostgreSQL ́ò1⁄2»μÀ£¿ ÏμÍ31ÜÀíÎÊÌâ 3.1 <#3.1>) ÎÒÔõÑùÄÜ°Ñ PostgreSQL + ×ばつ°ÔÚ /usr/local/pgsql ÒÔÍâμÄμØ·1⁄2£¿ 3.2 <#3.2>) μ±ÎÒÔËÐÐ postmaster + ʱ£¬3öÏÖ/ Bad System Call/£ ̈ÏμÍ3μ÷Óà ́í£© »ò Core Dumped ́íÎó¡£ÎaÊ2à ́£¿ + 3.3 <#3.3>) μ±ÎÒÊÔÍ1⁄4ÔËÐÐ postmaster ʱ£¬3öÏÖ /IpcMemoryCreate/ + ́íÎó¡£Îa Ê2à ́£¿ 3.4 <#3.4>) μ±ÎÒÊÔÍ1⁄4ÔËÐÐ postmaster ʱ£¬3öÏÖ + /IpcSemaphoreCreate/ ́íÎó¡£ ÎaÊ2à ́£¿ 3.5 <#3.5>) + ÎÒÈçoοØÖÆÀ ×ばつÔÆäËûÖ÷»úμÄÁ¬1⁄2Ó£¿ 3.6 <#3.6>) + ÎÒÔõÑùμ÷ÕûÊý3⁄4Ý¿âÒýÇæÒÔ»ñμà ̧üoÃμÄÐÔÄÜ£¿ 3.7 <#3.7>) PostgreSQL + Àï¿ÉÒÔ»ñμÃÊ2à ́ÑùμÄμ÷ÊÔÌØÐÔ£¿ 3.8 <#3.8>) + ÎaÊ2à ́ÔÚÊÔÍ1⁄4Á¬1⁄2ÓμÇÂ1⁄4ʱÊÕμ1⁄2¡°Sorry, too many clients¡± ÏûÏ¢£¿ 3.9 + <#3.9>) pgsql_tmp Ä¿Â1⁄4Àï¶1⁄4ÓÐЩÊ2à ́£¿ 3.10 <#3.10>) ÎaÊ2à ́ÒaÔÚÉý1⁄4¶ + PostgreSQL ×ばつö dump oÍ restore £¿ ×ばつ÷ÎÊÌâ 4.1 <#4.1>) + ¶þ1⁄2øÖÆÓαêoÍÆÕÍ ̈ÓαêÖ®1⁄4äμÄÇø±ðÊÇÊ2à ́£¿ 4.2 <#4.2>) + ÈçoÎֻѡÔñÒ» ̧ö2éÑ ̄1⁄2á1ûμÄÍ·1⁄4 ̧ÐУ¿ 4.3 <#4.3>) + ÎÒÈçoλñȡһ ̧öÊý3⁄4Ý¿âÖбíμÄÁÐ±í£¬»òÕßÊÇÆäËûÎÒÄÜÔÚ /psql /Àï¿ ́ + μ1⁄2μĶ«Î÷£¿ 4.4 <#4.4>) ÔõÑù ́Ó±íÀïÃæÉ3⁄43ýÒ»ÁУ¿ 4.5 <#4.5>) + Ò»ÐУ¬Ò» ̧ö±í£¬Ò» ×ばつî ́ó3ß ́çÊǶàÉÙ£¿ 4.6 <#4.6>) + ́æ ́¢Ò» ̧öμäÐÍμÄÎı3⁄4ÎÄ1⁄4þÀïμÄÊý3⁄4ÝÐèÒa¶àÉÙ ́ÅÅÌ¿Õ1⁄4䣿 4.7 <#4.7>) + ÈçoÎ2é¿ ́±í¡¢Ë÷Òý¡¢Êý3⁄4Ý¿âÒÔ1⁄4°Óû§μĶ ̈Ò壿 4.8 <#4.8>) + ÎÒμÄ2éÑ ̄oÜÂý»òÕßûÓÐÀûÓÃË÷Òý¡£ÎaÊ2à ́£¿ 4.9 <#4.9>) + ÎÒÈçoÎ2ÅÄÜ¿ ́μ1⁄22éÑ ̄ÓÅ» ̄Æ÷ÊÇÔõÑù ́¦ÀíÎÒμÄ2éÑ ̄μÄ£¿ 4.10 <#4.10>) R-tree + Ë÷ÒýÊÇÊ2à ́£¿ 4.11 <#4.11>) Ê2à ́ÊÇ»ùÒò2éÑ ̄ÓÅ» ̄£ ̈Genetic Query + Optimization£©£¿ 4.12 <#4.12>) + ×ばつöÕýÔò±í ́ïÊ1⁄2ËÑË÷oÍ ́óСР́ÎÞ1ØμÄÕýÔò±í ́ïÊ1⁄22éÕÒ£¿ÔõÑùÀû + ÓÃË÷Òý1⁄2øÐÐ ́óСР́ÎÞ1Ø2éÕÒ£¿ 4.13 <#4.13>) + ÔÚÒ» ̧ö2éÑ ̄ÀÎÒÔõÑù1⁄4ì2âÒ» ×ばつÖ¶ÎÊÇ·ñÎa NULL£¿ 4.14 <#4.14>) + ×ばつÖ·ûÀàÐÍÖ®1⁄4äÓÐÊ2à ́2»Í¬£¿ 4.15.1 <#4.15.1>) + ÎÒÔõÑù ́ ́1⁄2 ̈Ò» ×ばつÔ¶ ×ばつֶΣ¿ 4.15.2 <#4.15.2>) + ÎÒÈçoλñμÃÒ» ̧ö2åÈëμÄÐòÁÐoÅμÄÖμ£¿ 4.15.3 <#4.15.3>) Ê1Óà currval() oÍ + nextval() »áμ1⁄4ÖÂoÍÆäËûÓû§μÄÎÉÂÒÇé¿ö £ ̈race condition£©Â𣿠4.15.4 + <#4.15.4>) ÎaÊ2à ́2»ÔÚÊÂÎñÒì3£ÖÐÖ1oóÖØÓÃÐòÁÐoÅÄØ£¿ÎaÊ2à ×ばつÖ + ¶ÎμÄÈ¡ÖμÖÐ ́æÔÚ1⁄4ä¶ÏÄØ£¿ 4.16 <#4.16>) Ê2à ́ÊÇ OID£¿Ê2à ́ÊÇ TID £¿ 4.17 + <#4.17>) PostgreSQL Ê1ÓÃμÄһЩÊõÓïμÄo¬ÒåÊÇÊ2à ́£¿ 4.18 <#4.18>) + ÎaÊ2à ́ÎÒÊÕμ1⁄2 ́íÎó¡°/ERROR: Memory exhausted in AllocSetAlloc()/¡±£¿ + 4.19 <#4.19>) ÎÒÈçoÎ2ÅÄÜÖaμÀËùÔËÐÐμÄ PostgreSQL μİæ±3⁄4£¿ 4.20 <#4.20>) + ÎaÊ2à ́ÎÒμÄ ×ばつ÷μ1⁄4Ö ́íÎó¡°/invalid large obj + descriptor¡±£ ̈·Ç· ̈μÄ ́ó¶ÔÏóÃèÊö·û£©/£¿ 4.21 <#4.21>) + ÎÒÈçoÎ ́ ́1⁄2 ̈Ò» ×ばつֶΣ¿ 4.22 <#4.22>) ÎaÊ2à ́Ê1Óà IN + ×ばつÓ2éÑ ̄Õâà ́Âý£¿ 4.23 <#4.23>) ÈçoÎ1⁄2øÐÐ outer join £ ̈ÍâÁ¬1⁄2Ó£©£¿ 4.24 + <#4.24>) ÈçoÎÊ1ÓÃÉæ1⁄4°¶à ̧öÊý3⁄4Ý¿âμÄ2éÑ ̄£¿ 4.25 <#4.25>) + ÈçoÎÈÃo ̄Êý·μ»Ø¶àÐлò¶àÁУ¿ 4.26 <#4.26>) ÎaÊ2à ́ÔÚ PL/PgSQL + o ̄ÊýÖÐ2»Äܿɿ¿μØ ́ ́1⁄2 ̈»òÉ3⁄43ýÁÙʱ±í£¿ 4.27 <#4.27>) ÓÐÄÄЩÊý3⁄4Ý ̧ ́ÖÆÑ¡Ï + 4.28 <#4.28>) ÓÐÄÄЩÊý3⁄4Ý1⁄4ÓÃÜÑ¡Ï À©Õ1 PostgreSQL 5.1 <#5.1>) + ÎÒÐ ́ÁËÒ» ̧öÓû§¶ ̈Òåo ̄Êý¡£μ±ÎÒÔÚ/ psql/ ÀïÔËÐÐʱ£¬ÎaÊ2à ́»áμ1⁄4Ö core + dump£¿ 5.2 <#5.2>) ÎÒÈçoÎÄÜ ̧ø PostgreSQL + ×ばつһЩͦ2» ́íμÄÐÂÀàÐÍoÍo ̄Êý£¿ 5.3 <#5.3>) ÎÒÔõÑùÐ ́Ò» ̧ö·μ»ØÒ»Ìõ1⁄4ÇÂ1⁄4μÄ + C o ̄Êý£¿ 5.4 <#5.4>) + ÎÒÐÞ ̧ÄÁËÒ» ̧öÔ ́ÎÄ1⁄4þ£¬ÎaÊ2à ́ÖØÐ±àÒëoóûÓп ́μ1⁄2 ̧ı䣿 + ---------------------------------------------------------------------- + -- 31ドル⁄4ûÎÊÌâ 1.1) PostgreSQL ÊÇÊ2à ́£¿ ̧ÃÔõà ́·¢Òô£¿ PostgreSQL ×ばつ÷ + /Post-Gres-Q-L// ¡£/ PostgreSQL ÊÇÏÂÒ» ́ú DBMS μÄÑÐ3⁄4¿ÔÐÍ POSTGRES + Êý3⁄4Ý¿â1ÜÀíÏμÍ3μÄÔöÇ¿°æ¡£ PostgreSQL ÔÚ±3ドルÖ POSTGRES + μÄÇ¿ ́óμÄÊý3⁄4ÝÄ£ÐÍoÍ·á ̧»μÄÊý3⁄4ÝÀàÐÍμÄ»ù ́¡ÉÏ£¬Óà һ ̧öÀ©Õ1ÁËμÄ SQL + ×ばつÓ1⁄4 ̄È¡ ́úÁËÔÏÈμÄ PostQuel 2éÑ ̄ÓïÑÔ¡£PostgreSQL ×ばつÔÓÉμÄ + 2¢ÇÒËùÓÐÔ ́ ́úÂë¶1⁄4¿ÉÒÔ»ñμᣠPostgreSQL μÄ¿a·¢ÓÉ2Î1⁄4Ó PostgreSQL + ¿a·¢ÓÊ1⁄4þÁбíμÄÒ» ̧ö¿a×ばつé1⁄2øÐС£ ĿǰμÄÐμ÷ÈËÊÇ Marc G. Fournier + £ ̈scrappy@postgreSQL.org £©¡££ ̈1ØÓÚÈçoÎ1⁄4ÓÈë2Î1⁄4û1.61⁄2Ú£©¡£Õâ ̧ö¶ÓÎé + ÏÖÔÚ ̧oÔð PostgreSQL μÄËùÓпa·¢¡£ PostgreSQL 1.01 ×ばつ÷ÕßÊÇ Andrew Yu oÍ + Jolly Chen¡£»1ÓÐÐí¶àÆäËûÈËÎaÒÆÖ2£¬ + 2âÊÔ£¬μ÷ÊÔoÍÔöÇ¿ ×ばつöÁË ×ばつ¡£PostgreSQL ×ばつî3õÆðÔ ́ + Postgres£¬ÊÇÔÚ1⁄4Ó ÖÝ ́óѧ2®¿ËÀû·ÖУμÄ Michael Stonebraker + 1⁄2ÌÊÚμÄÖ ̧μ1⁄4Ï£¬ÓÉÐí¶àÑÐ3⁄4¿Éú£¬±3⁄4¿Æ Éúoͱà3ÌÖ°Ô±Íê3ÉμÄ¡£ + Õâ ×ばつÖÊÇ Postgres¡£ÔÚ 1995 Ä꣬μ±Ôö1⁄4ÓÁË SQL + 1¦ÄÜoó£¬ ×ばつÖ ̧Ä3É Postgres95¡£ÔÚ 1996ÄêÄ©£¬2Å ̧ÄÃûÎa PostgreSQL¡£ + 1.2) PostgreSQL μİæÈ ̈ÊÇÊ2à ́? PostgreSQL ÊÜÏÂÃæμİæÈ ̈Ô1⁄4Êø¡£ PostgreSQL + Êý3⁄4Ý¿â1ÜÀíÏμÍ3 £ ̈PostgreSQL Data Base Management System£© + 2¿·Ö°æÈ ̈£ ̈c£©1996-2002£¬PostgreSQL È«Çò¿a×ばつé 2¿·Ö°æÈ ̈£ ̈c£©1994-6 + 1⁄4ÓÖÝ ́óѧ¶Ê £ ̈Portions copyright (c) 1996-2002, PostgreSQL Global + Development Group Portions Copyright (c) 1994-6 Regents of the + University of California£© + ÔÊÐíÎaÈÎoÎÄ¿μÄÊ1Ó㬿1⁄2± ́£¬ÐÞ ̧ÄoÍ·Ö·¢Õâ ̧öÈí1⁄4þoÍËüμÄÎÄμμ¶ø2»ÊÕÈ¡ÈÎoηÑÓà + £¬ + 2¢ÇÒÎÞÐëÇ©ÊðÒò ́˶ø2úÉúμÄÖ¤Ã÷£¬Ç°ÌáÊÇÉÏÃæμİæÈ ̈ÉùÃ÷oͱ3⁄4¶ÎÒÔ1⁄4°ÏÂÃæÁ1⁄2¶ÎÎÄ + ×ばつÖ 3öÏÖÔÚËùÓп1⁄2± ́ÖС£ £ ̈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.£© + ÔÚÈÎoÎÇé¿öÏ£¬1⁄4ÓÖÝ ́óѧ¶1⁄42»3Ðμ£ÒòÊ1Óà ́ËÈí1⁄4þ1⁄4°ÆäÎÄμμ¶øμ1⁄4ÖÂμĶÔÈÎoÎμ±ÊÂÈË + μÄ + Ö±1⁄2ÓμÄ£¬1⁄4ä1⁄2ÓμÄ£¬ÌØÊâμÄ£¬ ̧1⁄21⁄4ÓμÄ»òÕßÏà°é¶øÉúμÄËð»μ£¬°üÀ ̈ÀûÒæËðʧμÄÔðÈΣ¬ + 1⁄4 ́ Ê11⁄4ÓÖÝ ́óѧÒÑ3⁄41⁄2 ̈ÒéÁËÕâЩËðʧμÄ¿ÉÄÜÐÔʱÒ2ÊÇÈç ́Ë¡£ £ ̈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.£© + 1⁄4ÓÖÝ ́óѧÃ÷È··ÅÆúÈÎoα£Ö¤£¬°üÀ ̈μ«2»3⁄4ÖÏÞÓÚÄ3Ò»ÌØ¶ ̈ÓÃÍ3⁄4μÄÉÌÒμoÍÀûÒæμÄÒþo¬ + ±£ + ×ばつ÷ÊÇ¡±μÄ»ù ́¡μÄ£¬Òò¶ø1⁄4ÓÖÝ ́óѧûÓÐÔðÈÎÌá + 1©Î¬ »¤£¬Ö§3Ö£¬ ̧üУ¬ÔöÇ¿»òÕßÐÞ ̧ÄμÄ·þÎñ¡£ £ ̈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.£© + ÉÏÃæ3⁄4ÍÊÇ BSD °æÈ ̈ÉùÃ÷£¬Ò» ̧ö3⁄4μäμÄ¿aÔ ́°æÈ ̈ÉùÃ÷¡£Ëü¶ÔÔ ́ ́úÂëμÄÊ1ÓÃÎ ×ばつ÷ÈÎoÎ + ÏÞÖÆ¡£ÎÒÃÇÏ2»¶Ëü2¢ÇÒ2» ́òËã ̧ıäËü¡£ 1.3) PostgreSQL ÔËÐÐÔÚÊ2à ́ Unix + Æ1⁄2Ì ̈ÉÏ£¿ Ò»°ãËμÀ ́£¬Ò» ̧öÏÖ ́úμÄ UNIX 1⁄4æÈÝμÄÆ1⁄2Ì ̈¶1⁄4ÄÜÔËÐÐ PostgreSQL + ×ばつ°Ö ̧ÄÏÀïÁÐ 3öÁË·21ドル⁄4ʱ3⁄41ýÃ÷È·2âÊÔμÄÆ1⁄2Ì ̈¡£ 1.4) ¿ÉÓÃμÄ·Ç Unix + Æ1⁄2Ì ̈ÓÐÄÄЩ£¿ ¿Í»§¶Ë °Ñ libpq C + ¿â£¬psql£¬ÆäËû1⁄2Ó¿ÚoͿͻ§¶ËÓ¦ÓÃ3ÌÐò±àÒë3É¿ÉÒÔÔÚ MS Windows Æ1⁄2 + Ì ̈ÉÏÔËÐÐÊÇ¿ÉÄÜμÄ¡£ÕâÖÖÇé¿öÏ£¬¿Í»§¶ËÔÚ MS Windows ÉÏÔËÐУ¬2¢ÇÒÍ ̈1ý + TCP/IP ÓëÒ» ̧öÔËÐÐÔÚÎÒÃÇÖ§3ÖμÄ Unix + Æ1⁄2Ì ̈ÉÏμÄ·þÎñÆ÷1⁄2øÐÐÍ ̈Ѷ¡£·21ドル⁄4°æ±3⁄4Öаü o¬Ò» ̧öÎÄ1⁄4þ win32.mak ÓÃÓÚÉú3É + Win32 libpq ¿âoÍ psql ¡£PostgreSQL Ò2¿ÉÒÔ oÍ ODBC ¿Í»§¶ËÍ ̈Ѷ¡£ ·þÎñÆ÷ + Êý3⁄4Ý¿â·þÎñÆ÷ÏÖÔÚ¿ÉÒÔÍ ̈1ý Cygwin £¬Cygnus μÄ Unix/NT ÒÆÖ2¿âÔÚ Windows + NT oÍ Win2k ÉÏÔËÐС2ドルÎÔÄ·21ドル⁄4°æ±3⁄4ÀïμÄ See /pgsql/doc/FAQ_MSWIN/ ÎÄ1⁄4þ»ò + http://www.PostgreSQL.org/docs/faq-mswin.html ¡£ ÒÆÖ2μ1⁄2 MS Win + NT/2000/XP ×ばつ÷ÕýÔÚ1⁄2øÐС£ 1.5) ÎÒ ́ÓÄÄÀïÄÜμÃμ1⁄2 PostgreSQL£¿ + PostgreSQL μÄÖ÷ÄäÃûFTPÕ3⁄4μãÊÇ + ftp://ftp.PostgreSQL.org/pub£¬3⁄4μÏñÕ3⁄4μã¿ÉÒÔ 2ο1⁄4ÎÒÃÇÍøÕ3⁄4μÄÖ÷Ò3¡£ 1.6) + ÎÒ ́ÓÄÄÀïÄÜμÃμ1⁄2¶Ô PostgreSQL μÄÖ§3Ö£¿ + Ö÷ÒaμÄÓÊ1⁄4þÁбíÊÇ£opgsql-general@postgreSQL.org ¡£¿ÉÒÔÔÚÄÇÀïÌÖÂÛÓÐ1Ø + PostgreSQL μÄ ÎÊÌâ¡£Òa1⁄4ÓÈëÁÐ±í£¬·¢Ò»·âÓÊ1⁄4þÄÚÈÝ£ ̈2»ÊÇÖ÷ÌâÐУ©Îa + subscribe end μÄÓÊ1⁄4þμ1⁄2 pgsql-general-request@postgreSQL.org ¡£ + »1¿ÉÒÔ»ñÈ¡ÕaÒaÁÐ±í¡£Òa1⁄4ÓÈëÕâ ̧öÁÐ±í£¬·¢ÓÊ1⁄4þμ1⁄2£opgsql-general-digest- + request@postgreSQL.org £¬ÆäÄÚÈÝÎa£o subscribe end ÿμ±Ö÷Áбí ́ïμ1⁄2 ́óÔ1⁄4 + 30k μÄÏûÏ¢ÄÚÈÝʱ£¬ÕaÒa3⁄4Í·¢ËÍ ̧øÕâ ̧öÁбíμÄ3ÉÔ±¡£ + »1¿ÉÒÔ2Î1⁄4Ó3ô3æÓÊ1⁄4þÁÐ±í¡£Òa1⁄4ÓÈëÕâ ̧öÁÐ±í£¬·¢ËÍÒ» ̧öÓÊ1⁄4þμ1⁄2 + bugs-request@postgreSQL.org £¬ÄÚÈÝÎa£o subscribe end + »1¿ÉÒÔ2Î1⁄4Ó¿a·¢ÈËÔ±ÓÊ1⁄4þÁÐ±í¡£Òa1⁄4ÓÈëÕâ ̧öÁÐ±í£¬·¢ËÍÒ» ̧öÓÊ1⁄4þμ1⁄2 + hackers-request@postgreSQL.org £¬ ÄÚÈÝÎa£o subscribe end ÆäËûμÄ1ØÓÚ + PostgreSQL ÓÊ1⁄4þÁбíoÍÆäËûÐÅÏ¢¿ÉÒÔÔÚ PostgreSQL μÄ WWW Ö÷Ò3ÕÒμ1⁄2£o + http://postgresql.org/ ÔÚ EFNet Àï»1ÓÐÒ» ̧ö IRC ÆμμÀ£¬ÆμμÀ + #PostgreSQL¡£ÎÒÓà unix ÃüÁîirc -c '#PostgreSQL' "$USER" + irc.phoenix.net ÉÌÒμÖ§3Ö1«Ë3⁄4μÄÁбíÔÚ + http://www.PostgreSQL.org/users-lounge/commercial-support.html ¡£ 1.7) + PostgreSQL ×ばつîÐÂμİæ±3⁄4ÊÇÊ2à ́£¿ PostgreSQL ×ばつîÐÂμİæ±3⁄4Êǰæ±3⁄4 + 7.2.3¡££ ×ばつ¢£oÏÖÔÚÓ¦ ̧ÃÊÇ 7.3.1 ÁË¡££© + ÎÒÃÇ1⁄4Æ»®Ã¿ËÄ ̧öÔ·21ドル⁄4Ò» ̧öÖ÷Òa°æ±3⁄4¡£ 1.8) ÓÐÄÄЩ¿ÉÓÃμÄ PostgreSQL + μÄÎÄμμ£¿ ×ばつÓ¡2ドルÎ1⁄4û /doc + Ä¿Â1⁄4¡££ ×ばつ¢£o Ó¦Îa $PGHOME/doc£©¡£Äã»1¿ÉÒÔÔÚÏßä ̄ÀÀ PostgreSQL + μÄÊÖ2ᣬÔÚ http://www.PostgreSQL.org/users-lounge/docs/ ¡£ ÓÐÁ1⁄2±3⁄41ØÓÚ + PostgreSQL μÄÊéÔÚÏßÌá1©£¬ÔÚ http://www.PostgreSQL.org/docs/awbook.html + www.PostgreSQL.org/docs/awbook.html> oÍ + http://www.commandprompt.com/ppbook/ www.commandprompt.com/ppbook/> + ¡£ÔÚ http://www.ca.PostgreSQL.org/books/ www.ca.PostgreSQL.org/books/> + ÉÏÓÐ1ØÓÚ PostgreSQL μÄ¿É1oÊé1⁄4®μÄÁÐ ±í¡£ÔÚ + http://techdocs.PostgreSQL.org/ techdocs.PostgreSQL.org/> ÉÏÊÕ1⁄4 ̄ÁËÓÐ1Ø + PostgreSQL μÄ1⁄41⁄4ÊõÎÄÕ¡£ /psql/ ÓÐһЩ2» ́íμÄ \d + ×ばつ÷·û£¬o ̄Êý£¬3⁄4Û1⁄4 ̄μÈμÄÐÅÏ¢¡£ ÎÒÃÇμÄ web + Õ3⁄4μã°üo¬ ̧ü¶àμÄÎÄμμ£® 1.9) ÎÒÈçoÎÁË1⁄2âÒÑÖaμÄ BUG oÍȱʧμÄÌØÐÔ£¿ + PostgreSQL Ö§3ÖÒ» ̧öÀ©Õ1ÁËμÄ SQL-92 ×ばつÓ1⁄4 ̄¡2ドルÎÔÄÎÒÃÇμÄ TODO + www.postgresql.org/docs/todo.html> + www.postgresql.org/docs/todo.html>ÁÐ±í£¬»ñȡһ ̧öÒÑÖa3ô3æ£¬È±Ê§ÌØ + ÐÔoÍÎ ́À ́1⁄4Æ»®¡£ 1.10) ÎÒÓ¦ ̧ÃÔõÑùѧϰ SQL£¿ ÔÚ + http://www.postgresql.org/docs/awbook.html μÄ1ØÓÚ PostgreSQL μÄÊé1⁄2ÌÊÚ + SQL¡££ ×ばつ¢£oÎÒÏÂÔØμ1⁄2±3⁄4μØÁË¡££©ÔÚ http://www.commandprompt.com/ppbook + www.commandprompt.com/ppbook/> ÓÐÁíÍâÒ»±3⁄41ØÓÚ PostgreSQL μÄÊé¡£ + ÔÚhttp://www.intermedia.net/support/sql/sqltut.shtm£¬http: + //ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM + ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM> oÍ + http://sqlcourse.com sqlcourse.com/> ÓÐÒ» ̧ö2» ́íμÄÈëÃÅ1⁄2Ì3Ì¡£ ÁíÒ» ̧öÊÇ + "Teach Yourself SQL in 21 Days, Second Edition"£ ̈21Ììѧ»áSQL£¬ + μÚ¶þ°æ£©£¬ÔÚ http://members.tripod.com/er4ebus/sql/index.htm + members.tripod.com/er4ebus/sql/index.htm> ÎÒÃÇμÄÐí¶àÓû§Ï2»¶ /The + Practical SQL Handbook, Bowman, Judith S., et al., Addison-Wesley ¡£ / + ÆäËûμÄÓÐ/ The Complete Reference SQL, Groff et al., McGraw-Hill ¡£/ + 1.11) PostgreSQL ÊÇ Y2K 1⁄4æÈÝμÄÂ𣿠×ばつ¿ØÖÆ 2000 AD Ö®oóoÍ + 2000 BC ֮ǰμÄÈÕÆÚ¡£ 1.12) ÎÒÓ¦ ̧ÃÔõÑù1⁄4ÓÈë¿a·¢¶ÓÎ飿 + ×ばつîÐÂμÄÔ ́ ́úÂë2¢ÔĶÁÎÒÃÇ web Õ3⁄4μã»ò·21ドル⁄4°üÖÐμÄ PostgreSQL + ¿a·¢Õß ÎÄμμ¡£Æä ́Σ¬1⁄4ÓÈë pgsql-hackers oÍ pgsql-patches + ÓÊ1⁄4þÁÐ±í¡£μÚÈý£¬Ïò pgsql-patches Ìá1⁄2» ̧ßÖÊÁ¿μÄ21¶¡3ÌÐò¡£ + ÏÖÔÚ ́ó ̧ÅÓÐÊ®1⁄4 ̧ ̧öÈËÓÐ PostgreSQL CVS 1éμμ COMMIT μÄÈ ̈ÏÞ¡£ËûÃǶ1⁄4ÒÑ3⁄4­ + Ìá1⁄2»ÁË + ·Ç3£¶à ̧ßÖÊÁ¿μÄ21¶¡ÁË£¬ÒÔÖÁÓÚÏÖÓÐμÄÌá1⁄2»ÈËoÜÄÑ ×ばつ࣬2¢ÇÒÎÒÃÇÏàÐÅËûÃÇ + Ìá 1⁄2»μÄ21¶¡¶1⁄4ÊÇ ̧ßÖÊÁ¿μÄ¡£ 1.13) ÎÒÓ¦ ̧ÃÔõÑùÌá1⁄2»Ò» ̧öBUG± ̈ ̧棿 Çë·ÃÎÊ + http://www.PostgreSQL.org/bugs/bugs.php μÄ PostgreSQL BugTool Ò3 Ãæ, + ÄÇÀï ̧ø3öÁËÈçoÎÌá1⁄2»Ò» ̧öBUG± ̈ ̧æμÄÖ ̧ÄÏ¡£ ͬÑùÒ2Òa¿ ́¿ ́ÎÒÃÇμÄ ftp Õ3⁄4μã + ftp://ftp.postgreSQL.org/pub ftp.postgresql.org/pub>£¬¿ ́ÓÐûÓÐ ̧üÐÂμÄ + PostgreSQL °æ±3⁄4»ò21¶¡¡£ 1.14) PostgreSQL oÍÆäËû DBMS ±ÈÆðÀ ́ÈçoΣ¿ + ÆÀ1⁄4ÛÈí1⁄4þÓÐoÃ1⁄4 ̧ÖÖ·1⁄2· ̈£oÌØÐÔ£¬ÐÔÄÜ£¬¿É¿¿ÐÔ£¬Ö§3ÖoÍ1⁄4Û ̧ñ¡£ *ÌØÐÔ* + PostgreSQL ÓμÓÐ ́óÐÍÉÌÓà DBMS Àï ×ばつÓ2éÑ ̄£¬ ́\·¢ + Æ÷£¬ÊÓÍ1⁄4£¬Íâ1⁄4ü2ο1⁄4ÍêÕûÐÔoÍ ̧ ́ÔÓμÄËøμÈ¡£ÎÒÃÇ»1ÓÐһЩËüÃÇûÓÐμÄÌØÐÔ£¬Èç + Óû§¶ ̈ÒåÀàÐÍ£¬1⁄4Ì3У¬1æÔòoÍ¶à°æ±3⁄42¢ÐпØÖÆÒÔ1⁄4õÉÙËøμÄÕùÓÃμÈ¡£ *ÐÔÄÜ* + PostgreSQL oÍÆäËûÉÌÓÃoÍ¿aÔ ́μÄÊý3⁄4Ý¿â3⁄4ßÓÐÀàËÆμÄÐÔÄÜ¡£¶ÔÄ3Щ ́¦ÀíËü±È1⁄2Ï + ¿ì£¬¶ÔÆäËûһЩ ́¦ÀíËü±È1⁄2ÏÂý¡£Óë MySQL »ò ̧üÇá±ãμÄÊý3⁄4Ý¿âÏμÍ3±È1⁄2Ï£¬ÎÒÃÇ ÔÚ + insert/update ʱÂý£¬ÒòÎaÎÒÃÇÓÐÊÂÎñ ́¦Àí¡£μ±È» MySQL 2»3⁄4ßÓÐÎÒÃÇÔÚÉÏ + ÃæμÄ/ÌØÐÔ /¶ÎÀï ̧ø3öμÄÈÎoÎÌØÐÔ¡£ÎÒÃÇμÄÖ÷Òa·1⁄2ÏòÊǿɿ¿ÐÔoÍÌØÐÔ£¬3⁄4¡1ÜÎÒ + ÃÇÔÚÿ ́η21ドル⁄4ʱ2»¶ÏμØ ̧Ä1⁄2øÐÔÄÜ¡£ÓÐÒ» ̧öoÜÓÐȤμÄÍøÒ3±È1⁄2ÏÁË PostgreSQL oÍ + MySQL http://openacs.org/why-not-mysql.html¡£ *¿É¿¿ÐÔ* ÎÒÃÇÖaμÀ DBMS + ×ばつöμ1⁄2·21ドル⁄43⁄4­ + 1ýÈÏÕæ2âÊÔμÄ£¬Îȶ ×ばつîÉÙμÄ ́úÂ롣ÿ ̧ö°æ±3⁄4ÖÁÉÙÓÐÒ» ̧öÔÂμÄ beta 2â + ÊÔ£¬2¢ÇÒÎÒÃÇμÄ·21ドル⁄4ÀúÊ·ÏÔÊ3⁄4ÎÒÃÇ¿ÉÒÔÌá1©Îȶ ̈μÄ£¬ÀÎ1ÌμÄ£¬¿ÉÓÃÓÚÉú2úÊ1Óà + μİæ±3⁄4¡£ÎÒÃÇÏàÐÅÔÚÕâ·1⁄2ÃæÎÒÃÇÓëÆäËûμÄÊý3⁄4Ý¿âÈí1⁄4þÊÇÏàμ±μÄ¡£ *Ö§3Ö* + ÎÒÃÇμÄÓÊ1⁄4þÁбíÌá1©Ò» ̧ö·Ç3£ ́óμÄ¿a×ばつéÒÔ°ïÖú1⁄2â3⁄4öËùÅöμ1⁄2μÄÈÎ + oÎÎÊÌâ¡£ÎÒÃÇ2»Äܱ£Ö¤¿Ï¶ ̈ÄÜ1⁄2â3⁄4öÎÊÌ⣬Ïà±È֮ϣ¬ÉÌÓà DBMS ×ばつÜÄÜ + 1»Ìá1©1⁄2â3⁄4ö·1⁄2· ̈¡£Ö±1⁄2ÓÓë¿a·¢ÈËÔ±£¬Óû§Èo£¬ÊÖ2áoÍÔ ́3ÌÐò1⁄2Ó ́\Áî PostgreSQL + μÄÖ§3Ö±ÈÆäËû DBMS »1Òa×ばつ°μÄÖ§3Ö£¬ + ¿ÉÒÔ ̧øÌá1© ̧øÄÇЩÐèÒaμÄÈË¡££ ̈2ÎÔÄÖ§3Ö FAQ Ìõ¿î 1.6 С1⁄2Ú¡££© *1⁄4Û ̧ñ* + ÎÒÃǶÔÈÎoÎÓÃÍ3⁄4¶1⁄4Ãâ·Ñ£¬°üÀ ̈ÉÌÓÃoÍ·ÇÉÌÓÃÄ¿μÄ¡£Äã¿ÉÒÔ2»1⁄4ÓÏÞÖÆμØÏòÄãμÄ2ú + Æ·Àï1⁄4ÓÈëÎÒÃÇμÄ ́úÂ룬3ýÁËÄÇЩÎÒÃÇÔÚÉÏÃæμİæÈ ̈ÉùÃ÷ÀïÉùÃ÷μÄ BSD ·ç ̧ñμÄ + °æÈ ̈Íâ¡£ 1.15) ÎÒÓ¦ ̧ÃÔõÑùÔÞÖú PostgreSQL £¿ ×ばつÔ ́Ó1996Äê¿aÊ1⁄4£¬PostgreSQL + ÒÑ3⁄4ÓÐÁËÒ» ×ばつéÖ ̄¡£ÕâЩӦ ̧Ã1é1¦ÓÚ Marc + Fournier£¬ÊÇËû ́ ́1⁄2 ̈ÁË2¢ÔÚÕâЩÄêÒ»Ö±1ÜÀíÕâ ×ばつéÖ ̄¡£ + ¶ÔÓÚÒ» ̧ö¿aÔ ́ÏîÄ¿À ́Ë죬ÖÊÁ¿»ù ́¡ÉèÊ©ÊÇ·Ç3£ÖØÒaμÄ¡£ËüÄÜ·ÀÖ13öÏÖÑÏÖØÑÓ3ÙÏî + Ä¿ ǰ1⁄2øμÄ»ìÂÒ¡£ + ÏÔÈ»£¬Õâ ×ばつéÖ ×ばつa3ɱ3⁄42»·Æ¡£Î¬3ÖÆäǰ1⁄2øÓÐ ̧÷ÖÖÔ¶ÈμÄ¡¢Ò» ́ÎÐÔμÄ¿aÖ§¡£Èç + 1û Äã»òÕßÄãμÄ1«Ë3⁄4ÄÜ1⁄2øÐÐ3⁄4èÔùÒÔÖ§3ÖÕâÏîÊÂÒ죬Çë·ÃÎÊ + http://store.pgsql.com/shopping/ store.pgsql.com/shopping/> 1⁄2øÐÐ + 3⁄4èÔù¡£ ËäÈ» ̧ÃÍøÒ3Ìá1⁄4°ÁË PostgreSQL 1«Ë3⁄4£¬ÕâЩ3⁄4èÔù1⁄2«1⁄2öÓÃÓÚÖ§3Ö + PostgreSQL ÏîÄ¿£¬ + ×ばつÊÖúû ̧öÌØ¶ ̈μÄ1«Ë3⁄4¡£Èç1ûÄãÔ ̧Ò⣬Ò2¿ÉÒÔÓÊ1⁄4Ä֧Ʊμ1⁄2ÁaÏμμØÖ·¡£ + ---------------------------------------------------------------------- + -- Óû§¿Í»§¶ËÎÊÌâ 2.1) ÓÐ PostgreSQL μÄ ODBC Çý¶ ̄à ́£¿ ÓÐÁ1⁄2 ̧ö ODBC + Çý¶ ̄¿ÉÒÔ»ñμã¬PsqlODBC oÍ OpenLink ODBC. + ¿ÉÒÔÔÚhttp://gborg.postgresql.org/project/psqlodbc/projdisplay.php + ÏÂÔØ PsqlODBC ¡£ OpenLink ODBC ¿ÉÒÔ ́Ó http://www.openlinksw.com/ + ×ばつ1⁄4 ODBC + ¿Í»§¶ËÈí1⁄4þ1⁄4æÈÝ£¬Òò¶øÄã¿ÉÒÔÔÚÈÎoÎËûÃÇÖ§3ÖμĿͻ§¶ËÆ1⁄2Ì ̈£ ̈Win, Mac, Unix, + VMS£©ÉÏÊ1Óà PostgreSQL ODBC¡£ + ËûÃÇ¿ÉÄÜ1⁄2«Õâ ̧ö2úÆ·ÏúÊÛ ̧øÄÇЩÐèÒa×ばつÜÊÇÓÐÒ» ̧ö + freeware £ ×ばつÔÓÉÈí1⁄4þ£©μİæ±3⁄4¿ÉÒÔμÃμ1⁄2¡£ÇëÑ ̄ÎÊ postgres95@openlink.co.uk + ¡£ 2.2) ÓÐÊ2à ́1¤3⁄4ß¿ÉÒÔ°Ñ PostgreSQL ÓÃÓÚ Web Ò3Ãæ£¿ + Ò» ̧ö1⁄2éÉÜÒÔÊý3⁄4Ý¿âÎaoóÌ ̈μÄͦ2» ́íμÄ Õ3⁄4μãÊÇ£ohttp://www.webreview.com ¡£ + ¶ÔÓÚ Web 1⁄4 ̄3É£¬PHP ÊÇÒ» ̧ö1⁄4«oÃμÄ1⁄2Ó¿Ú¡£ËüÔÚ£ohttp://www.php.net/ ¡£ + ¶ÔÓÚ ̧ ́ÔÓμÄÈÎÎñ£¬oܶàÈË2ÉÓà Perl 1⁄2Ó¿ÚoÍ CGI.pm »ò mod_perl ¡£ 2.3) + PostgreSQL ÓμÓÐÍ1⁄4ÐÎÓû§1⁄2çÃæÂ𣿠ÊÇμÄ¡£ÓÐ1⁄4 ̧ ̧öÊÊÓÃÓÚ PostgreSQL + μÄÍ1⁄4ÐÎ1⁄2Ó¿Ú¡£°üÀ ̈PgAccess£ ̈http: //www.pgaccess.com)£¬PgAdmin II + £ ̈http://www.pgadmin.org£¬1⁄2öÊÊÓÃÓÚ Win32£©£¬ RHDB Admin + (http://sources.redhat.com/rhdb/£© ÒÔ1⁄4° Rekall + £ ̈http://www.thekompany.com/products/rekall/£¬ + ×ばつ ̈ÓÐμÄ/proprietary)¡£»1ÓÐ PHPPgAdmin + £ ̈http://phppgadmin.sourceforge.net/£© phppgadmin.sourceforge.net/> + £¬Ò» ̧ö»ùÓÚ web μÄ PostgreSQL ·ÃÎÊ1⁄2Ó ¿Ú¡£ + ÎÒÃÇÓÐÒ» ̧ö2» ́íμÄÍ1⁄4ÐÎÓû§1⁄2çÃæ£¬3ÆÎa PgAccess + ×ばつ÷± ̈±íÉú3ÉÆ÷¡£Íø Ò3ÊÇ http://www.pgaccess.org/¡£ 2.4) + ÎÒÃÇ¿ÉÒÔÓÃÊ2à ́ÓïÑÔoÍ PostgreSQL ́ò1⁄2»μÀ£¿ ́ó¶àÊýÁ÷ÐÐμıà3ÌÓïÑÔ¶1⁄4ÓзÃÎÊ + PostgreSQL μÄ1⁄2Ó¿Ú¡£Çë1⁄4ì2é±à3ÌÓïÑÔμÄÀ©Õ1Ä£¿é ÁÐ±í¡£ PostgreSQL + ·21ドル⁄4°üÖаüo¬ÁËÒÔÏÂ1⁄2Ó¿Ú£o * C (libpq) * Embedded C (ecpg) * Java (jdbc) + * Python (PyGreSQL) * TCL (libpgtcl) ÆäËûμÄ1⁄2Ó¿ÚÔÚ + http://gborg.postgresql.org ÉÏμÄ /Drivers/Interfaces/ С1⁄2Ú¡£ + ---------------------------------------------------------------------- + -- ÏμÍ31ÜÀíÎÊÌâ 3.1) ÎÒÔõÑùÄÜ°Ñ PostgreSQL ×ばつ°ÔÚ /usr/local/pgsql + ÒÔÍâμÄμØ·1⁄2£¿ ÔÚÔËÐÐ configure ʱ1⁄4ÓÉÏ --prefix Ñ¡Ïî¡£ 3.2) μ±ÎÒÔËÐÐ + postmaster ʱ£¬3öÏÖ/ Bad System Call/£ ̈ÏμÍ3μ÷Óà ́í£©»ò Core Dumped + ́íÎó¡£ÎaÊ2à ́£¿ ×ばつ÷ÏμÍ3oËÐÄÊÇ·ñÖ§3Ö + System V À©Õ1¡£ PostgreSQL ÐèÒaÄÚoËÖ§3Ö12ÏíÄÚ ́æoÍÐÅoÅμÆ¡£ 3.3) + μ±ÎÒÊÔÍ1⁄4ÔËÐÐ postmaster ʱ£¬3öÏÖ /IpcMemoryCreate/ ́íÎó¡£Îa Ê2à ́£¿ + ÄãÒaà ́ÊÇûÓÐÔÚÄÚoËÀïÕýÈ·ÅäÖÃ12ÏíÄÚ ́棬Òaà ́ÊÇÄãÐèÒaÀ© ́óÄãμÄÄÚoËμÄ¿ÉÓÃ12 + Ïí ÄÚ ́æ¡£ÐèÒaμÄ12ÏíÄÚ ́æ3⁄4ßÌåμÄÊýÁ¿È¡3⁄4öÓÚÄãμÄÌåÏμ1⁄2á11oÍÄãÅäÖÃÄãμÄ + postmaster + ÔËÐÐʱÊ1ÓÃμÄ»o3åÇøoÍoó¶Ë1⁄2ø3ÌÊýÄ¿¡£¶Ô ́ó¶àÊýÏμÍ3£¬Ê1ÓÃȱʡ»o3åÇøoÍ1⁄2ø3ÌÊý + Ä¿ ×ばつîÉÙÐèÒa~1MB¡£ÓÐ1Ø12ÏíÄÚ ́æoÍÐÅoÅμÆμÄÏêÏ ̧ÐÅÏ¢Çë2ο1⁄4 PostgreSQL + Administrator's Guide + www.postgresql.org/idocs/index.php?kernel-resources.html> ¡£ 3.4) + μ±ÎÒÊÔÍ1⁄4ÔËÐÐ postmaster ʱ£¬3öÏÖ /IpcSemaphoreCreate/ ́í Îó¡£ÎaÊ2à ́£¿ + Èç1û ́íÎóÐÅÏ¢ÊÇ /IpcSemaphoreCreate: semget failed (No space left on + device)/£¬ÄÇà ×ばつÊÔ ́¡£Postgres μÄÿ ̧öDZ + ÔÚμÄoóÌ ̈1⁄2ø3̶1⁄4ÐèÒaÒ» ̧öÐÅoÅμÆ¡£Ò» ̧öÁÙʱμÄ1⁄2â3⁄4ö·1⁄2· ̈ÊÇÒÔ±È1⁄2ÏÉÙμÄoóÌ ̈1⁄2ø3ÌÊý + £ ̈2ÎÊý£©Æô¶ ̄ postmaster¡£Ê1Óÿa1Ø /-N/ ́øÒ» ̧öÉÙÓÚȱʡÖμ 32 μÄ2ÎÊýÔËÐÐ + postmaster¡£ ̧ü3¤3⁄4ÃμÄ1⁄2â3⁄4ö·1⁄2· ̈ÊÇ1⁄4Ó ́óÄãμÄÄÚoËμÄ SEMMNS oÍ SEMMNI 2ÎÊý¡£ + ÔÚÊý3⁄4Ý¿â·ÃÎÊÁ¿oÜ ́óʱ£¬ÐÅoÅμÆ2»¿ÉÓÿÉÄÜμ1⁄4ÖÂÏμÍ3±ÀÀ£¡£ + Èç1û ́íÎóÐÅÏ¢ÊÇÆäËûμÄÊ2à ́¶«Î÷£¬Äã¿ÉÄÜ3⁄4Í ̧ù±3⁄4ûÓÐÔÚÄÚoËÀïÃæÅäÖÃÐÅoÅμÆÖ§3Ö + ¡£ ÓÐ1Ø12ÏíÄÚ ́æoÍÐÅoÅμÆμÄÏêÏ ̧ÐÅÏ¢Çë2ο1⁄4 PostgreSQL Administrator's + Guide www.postgresql.org/idocs/index.php?kernel-resources.html> ¡£ + 3.5) ÎÒÈçoοØÖÆÀ ×ばつÔÆäËûÖ÷»úμÄÁ¬1⁄2Ó£¿ ȱʡʱ£¬PostgreSQL Ö»ÔÊÐíÍ ̈1ý unix + ×ばつÖÀ ×ばつÔ±3⁄4»úμÄÁ¬1⁄2Ó¡3ドルý·ÇÄãÊ1Óà /-i/ ¿a1ØÆô¶ ̄ + /postmaster/£¬*2¢ÇÒ*Í ̈1ý¶ÔÓ¦μıà1⁄4 /$PGDATA/pg_hba.conf/ + ÎÄ1⁄4þ ́ò¿aÁËÖ÷»úÎa»ù ́¡£ ̈ host-based + £©μÄÈÏÖ¤£¬·ñÔòÆäËû»úÆ÷ÊÇ2»ÄÜÓëÄãμÄ»úÆ÷ Á¬1⁄2ÓμÄ¡£ÕâÑù1⁄2«ÔÊÐí TCP/IP + Á¬1⁄2Ó¡£ 3.6) ÎÒÔõÑùμ÷ÕûÊý3⁄4Ý¿âÒýÇæÒÔ»ñμà ̧üoÃμÄÐÔÄÜ£¿ + μ±È»£¬Ë÷Òý¿ÉÒÔ1⁄4ÓËÙ2éÑ ̄¡£EXPLAIN ÃüÁîÔÊÐíÄã1Û2ì PostgreSQL + ÈçoÎ1⁄2âÊÍÄãμÄ2é Ñ ̄£¬ÒÔ1⁄4°Ê1ÓÃÁËÄÄЩË÷Òý¡£ Èç1ûÄãÕý ́¦ÀíÒ»¶Ñ + INSERT£¬¿1⁄4ÂÇÊ1Óà COPY ÃüÁîÒÔ ×ばつö±È μ\¶ÀμÄÒ» ̧ö ̧ö + INSERT ¿ìμöࡣÆä ́Σ¬Ã»ÓÐ ́¦ÓÚ BEGIN WORK/COMMIT ÊÂÎñ¿éÖ®1⁄4ä + μÄÓï3⁄4ä±»ÈÏÎaÊôÓÚͬһ ×ばつÅÔÚÒ» ̧öÊÂÎñ¿éÀïÃæ ́¦Àí ̧ü¶àμÄÓï3⁄4ä¡£ÕâÑù¿É + ÒÔ + 1⁄4õÉÙÊÂÎñ ́øÀ ́μĶîÍâ¿a×ばつö ́óÁ¿μÄÊý3⁄4Ý ̧ıäʱ¿1⁄4ÂÇÉ3⁄43ýoÍÖØ1⁄2 ̈Ë÷Òý¡£ + »1ÓÐ1⁄4 ̧ ̧öμ÷1⁄2ÚμÄÑ¡Ïî¿ÉÒÔÊ1Óá£Äã¿ÉÒÔÍ ̈1ý ́ø /-o -F/ Ñ¡ÏîÆô¶ ̄ postmaster + À ́ 1⁄2ûÖ1 fsync()¡£ÕâÑù1⁄2«±ÜÃâÿ ́ÎÊÂÎñoóμ÷Óà /fsync() / + °ÑÊý3⁄4ÝË¢ÐÂμ1⁄2 ́ÅÅÌÉÏ¡£ Äã»1¿ÉÒÔÊ1Óà postmaster -B + Ñ¡ÏîÔö1⁄4Óoó¶Ë1⁄2ø3ÌÊ1ÓÃμÄ12ÏíÄÚ ́æ»o3åμÄÊýÄ¿¡£Èç + 1ûÄã°ÑÕâ ̧ö2ÎÊýÉèÖÃμÃÌ« ́ó£¬postmaster ¿ÉÄÜÎÞ· ̈Æô¶ ̄£¬ÒòÎaÄãÒÑ3⁄43¬1ýÁËÄãμÄ + ÄÚoËÔÚ12ÏíÄÚ ́æ¿Õ1⁄4äÉÏμÄÏÞÖÆ¡£Ã¿ ̧ö»o3åÇøÊÇ 8K 2¢ÇÒȱʡ 64 ̧ö»o3åÇø¡£ + Äã»1¿ÉÒÔÊ1ÓÃoóÌ ̈1⁄2ø3ÌμÄ -S + Ñ¡ÏîÀ ́Ôö1⁄4Óÿ ̧öoóÌ ×ばつî ́óÄÚ ́æ ÊýÁ¿¡£-S + ×ばつÖ1⁄2Ú1⁄4ÆμÄ£¬È±Ê¡ÊÇ 512 £ ̈Ò23⁄4ÍÊÇË죬512K£©¡£ Äã»1¿ÉÒÔÊ1Óà CLUSTER + ÃüÁîÀ ́°Ñ±íÀïμÄÊý3⁄4ݰ ́ÕÕÄ3 ̧öË÷Òý1⁄2øÐÐ3⁄4Û1⁄4 ̄ ́æ·Å¡2ドルÎÔÄ CLUSTER + μÄÊÖ2áÒ3»ñÈ¡ ̧ü¶àÏ ̧1⁄2Ú¡£ 3.7) PostgreSQL Àï¿ÉÒÔ»ñμÃÊ2à ́ÑùμÄμ÷ÊÔÌØÐÔ£¿ + PostgreSQL + ÓÐ1⁄4 ̧ ̧öÌØÐÔÓÃÓÚ± ̈ ×ばつ ̬́ÐÅÏ¢£¬ÕâЩÐÅÏ¢¿ÉÄܶÔμ÷ÊÔÓÃÍ3⁄4oÜÓаïÖú¡£ + ×ばつÏÈ£¬Í ̈1ý ̧1⁄2 ́ø --enable-cassert Ñ¡ÏîÔËÐÐ configure£¬ÓÐoܶà /assert()/ + 1⁄4à ¿ØoóÌ ̈1⁄2ø3ÌoÍÔÚ·¢ÉúÄ3ЩΠ́ÔøÔ¤ÁÏμÄÏÖÏóʱͣÖ13ÌÐòÔËÐС£ postmaster oÍ + postgres ×ばつÏÈ£¬μ±ÄãÆô¶ ̄ postmaster + ×ばつ1⁄4 ́íÎóÊä3ö¶ ̈Ïòμ1⁄2ÁËÒ» ̧öÈÕÖ3⁄4ÎÄ1⁄4þÀïÈ\ÁË£¬Ïó£o cd + /usr/local/pgsql ./bin/postmaster>server.log 2>&1 & ÕâÑù1⁄2«ÔÚ + PostgreSQL ¶1円⁄4¶Ä¿Â1⁄4ÏÂÊä3öÒ» ̧ö server.log ÎÄ1⁄4þ¡£Õâ ̧öÎÄ1⁄4þ°üo¬·þÎñ + Æ÷Åöμ1⁄2μÄÎÊÌâoÍ ́íÎóμÄÓÐÓÃÐÅÏ¢¡£postmaster ÓÐÒ» ̧ö -d + Ñ¡Ï ̧ÃÑ¡ÏîÔÊÐíÎÒÃÇ »ñμà ̧ü¶àμÄÏ ̧1⁄2ڻ㱠̈¡£-d + Ñ¡Ïî1⁄2ÓÊÜÒ» ×ばつÖ±êÃ÷μ÷ÊÔ1⁄4¶±ð¡£ÐèÒa3⁄4 ̄ ̧æμÄÊÇ ̧ßμÄμ÷ + ÊÔ1⁄4¶±ð¿ÉÄÜ»áÉú3É3⁄4Þ ́óμÄÈÕÖ3⁄4ÎÄ1⁄4þ¡£ Èç1û postmaster + ûÓÐÔËÐУ¬Äã¿ÉÒÔÖ±1⁄2ÓÔÚÃüÁîÐÐÉÏÆô¶ ̄ postgres oóÌ ̈1⁄2ø3Ì£¬È» oóÖ±1⁄2Ó1⁄4üÈë + SQL Óï3⁄4ä¡£ÎÒÃÇ*Ö»* ÍÆ1⁄4öÔÚμ÷ÊÔμÄʱoòÕâà ́ ×ばつ¢ÒâÕâʱÓû»ÐÐÜÞ + ¶ø2»ÊÇ·ÖoűíÊ3⁄4Óï3⁄4ä1⁄2áÎ2¡£Èç1ûÄã ×ばつÅμ÷ÊÔ·ûoűàÒ룬Äã¿ÉÒÔÊ1ÓÃÒ» ̧öμ÷ÊÔÆ÷1Û + ¿ ́ ·¢ÉúÁËÊ2à ́ÊÂÇé¡£ÒòÎaoóÌ ̈1⁄2ø3ÌûÓÐÓÉ postmaster + Æô¶ ̄μÄ£¬Ëü2»ÊÇoÍÊμ1⁄4ÊμÄÔËÐÐ + »·3⁄43Ò»Ö£¬¶øÇÒËø¶ ̈/oóÌ ̈1⁄2»»\ÎÊÌâ¿ÉÄÜ2»ÄÜÖØÏÖ¡£ Èç1û postmaster ÒÑ3⁄4­ + ÔËÐУ¬¿ÉÔÚÒ» ̧ö ́°¿ÚÖÐÆô¶ ̄ /psql/£¬È»oóÕÒ3ö /psql/ ¶Ô Ó¦μÄ /postgres/ + 1⁄2ø3ÌμÄ PID¡£Ê1ÓÃÒ» ̧öμ÷ÊÔÆ÷ ×ばつÅÔÚÕâ ̧ö /postgres /PID ÉÏ¡£ + Äã¿ÉÒÔÔÚμ÷ÊÔÆ÷ÀïÉèÖöÏμã2¢ÇÒ ́Ó /psql/ ÀïÖ ́ÐÐ2éÑ ̄¡£Èç1ûÄãÔÚμ÷ÊÔ + /postgres/ μÄÆô¶ ̄£¬Äã¿ÉÒÔÉèÖà PGOPTIONS="-W n"£¬È»oóÆô¶ ̄ + /psql/¡£ÕâÑù1⁄2« μ1⁄4ÖÂÆô¶ ̄ÑÓ3Ù /n/ + Ã룬ÕâÑùÄã3⁄4Í¿ÉÒÔ ̧1⁄21⁄4ÓÒ» ̧öμ÷ÊÔÆ÷2¢ÇÒ ×ばつÙÆô¶ ̄Ë3ÐòμÄ1ý3Ì¡£ postgres 3ÌÐòÓÐ + -s£¬-A£¬oÍ -t Ñ¡Ïî¿ÉÄÜÔÚμ÷ÊÔoÍÐÔÄÜ2âÁ¿μÄʱoò·Ç3£ÓÐÓᣠÄã»1¿ÉÒÔ ́ø + profiling Ö§3Ö±àÒëoóÌ ̈£¬ÒÔ±ã1Û2ìÄÄЩo ̄ÊýÕ1⁄4ÓÃμÄÖ ́ÐÐʱ1⁄4ä1⁄2϶ࡣ profile + ÎÄ1⁄4þ1⁄2«·ÅÔÚ pgsql/data/base/dbname Ä¿Â1⁄4Ï¡£¿Í»§¶Ë profile ÎÄ1⁄4þ1⁄2« + ·ÅÔÚ¿Í»§¶Ëμ±Ç°Ä¿Â1⁄4Ï¡£ÔÚ Linux ÏÂÖ§3Ö profiling ÒaÔÚ±àÒëʱ1⁄4ÓÉÏ/- + DLINUX_PROFILE / ¡£ 3.8) ÎaÊ2à ́ÔÚÊÔÍ1⁄4Á¬1⁄2ÓμÇÂ1⁄4ʱÊÕμ1⁄2¡°Sorry, too many + clients¡±ÏûÏ¢£¿ ÄãÐèÒaÔö ́ó postmaster Æô¶ ̄ʱ֧3ÖμÄ2¢·¢oóÌ ̈1⁄2ø3ÌÊý¡£ + ȱʡÏÞÖÆÊÇ 32 1⁄2ø3Ì¡£Äã¿ÉÒÔÍ ̈1ý ×ばつÅÊÊμ±μÄ /-N/ Öμ¿a1ØÆô¶ ̄ postmaster + Ôö1⁄4Ó Õâ ̧öÊýÄ¿¡£»òÕßÐÞ ̧Ä /postgresql.conf/ ÎÄ1⁄4þ¡£ Òa×ばつ¢ÒâÈç1ûÄã°Ñ /-N/ + ÉèÖÃÎa ́óÓÚ 32£¬Äã±ØÐëͬÑùÔö ́ó /-B/£¬3¬1ýËüȱʡμÄ 64£»-B ×ばつîÉÙÊÇ -N + μÄÁ1⁄2±¶£¬¶øÇÒÎaÁË ̧üoÃμÄÐÔÄÜ¿ÉÄÜÒa±ÈÄÇ ×ばつÖÒa ́ó¡£¶Ô + ÓÚ ́óÊýÄ¿μÄoó¶Ë1⁄2ø3Ì£¬Äã¿ÉÄÜ»1»á·¢ÏÖÄã»1ÐèÒaÔö1⁄4ÓÐí¶à Unix + ÄÚoËÅäÖÃ2ÎÊýÖμ¡£ + Òa1⁄4ì2éμĶ«Î÷°üÀ ̈12ÏíÄÚ ×ばつî ́ó3ß ×ばつî ́óÊýÄ¿£¬SEMMNS + oÍ + ×ばつî ×ばつî ́ó1⁄2ø3ÌÊý£¬MAXUPRC£¬ÒÔ1⁄4° ́ò¿aÎÄ1⁄4þ + ×ばつî ́óÊýÄ¿£¬NFILE oÍ NINODE ¡£Postgres ¶ÔÔÊÐíμÄoóÌ ̈1⁄2ø3ÌÊýÓÐÏÞÖÆμÄÔÒòÊÇ + Îa×ばつÊÔ ́¡£ ÔÚ Postgres ÔçÓÚ 6.5 + ×ばつî ́óoóÌ ̈1⁄2ø3ÌÊýȱʡÊÇ 64£¬2¢ÇÒ¶ÔËüμÄÐÞ ×ばつÏÈ ÐèÒaÐÞ ̧Ä + /include/storage/sinvaladt.h/ ÀïμÄ MaxBackendId 3£Á¿£¬È»oóÖØÐ BUILD¡£ + 3.9) pgsql_tmp Ä¿Â1⁄4Àï¶1⁄4ÓÐЩÊ2à ́£¿ + ̧ÃÄ¿Â1⁄4ϱ£ ́æÁË2éÑ ̄Ö ́ÐÐÆ÷Éú3ÉμÄÁÙʱÎÄ1⁄4þ¡£ÀýÈ磬Èç1ûÐèÒaÎa×ばつã ORDER BY + Ìõ ×ばつöÅÅÐò£¬2¢ÇÒÅÅÐòÐèÒa±ÈoóÌ ̈μÄ -S + 2ÎÊý ̧ø3öμÄ ̧ü¶àμÄ¿Õ1⁄4䣬ÄÇà ́3⁄4Í»á ́ ́1⁄2 ̈Ò» ̧ö ÁÙʱÎÄ1⁄4þ±£ ́æ¶à3öÀ ́μÄÊý3⁄4Ý¡£ + ÁÙʱÎÄ1⁄4þÓ¦ ×ばつÔ¶ ̄É3⁄43ý£¬2»1ýÈç1ûÔÚÅÅÐò1ý3ÌÖÐoóÌ ̈±ÀÀ£ÁË3⁄4Í¿ÉÄÜÁôÏÂÀ ́¡£Í£Ö1 + 2¢ ÖØÆð postmaster 1⁄2«»áÉ3⁄43ýÕâЩÎÄ1⁄4þ¡£ 3.10) ÎaÊ2à ́ÒaÔÚÉý1⁄4¶ PostgreSQL + ×ばつö dump oÍ restore £¿ PostgreSQL + ¿a×ばつé¶Ôÿ ×ばつöÁË1⁄2ÏÉÙμÄÐÞ ̧Ä,Òò ́Ë ́Ó 7.2 Éý1⁄4¶μ1⁄2 7.2.1 2»ÐèÒa + dump oÍ restore¡£μ«ÊÇÖ÷ÒaμÄÉý1⁄4¶£ ̈ÀýÈç ́Ó 7.2 μ1⁄2 7.3£©Í ̈3£»áÐÞ ̧ÄÏμ + Í3±íoÍÊý3⁄4ݱíμÄÄÚ2¿ ̧ñÊ1⁄2¡£ÕâЩ±ä» ̄Ò»°ã±È1⁄2Ï ̧ ́ÔÓ£¬Òò ́ËÎÒÃÇ2»Î¬Êý3⁄4ÝÎÄ1⁄4þμÄÏò + oó 1⁄4æÈÝ¡£dump + 1⁄2«Êý3⁄4ݰ ́ÕÕÍ ̈ÓÃμÄ ̧ñÊ1⁄2Êä3ö£¬Ëæoó¿ÉÒÔ±»ÖØÐÂ1⁄4ÓÔØ2¢Ê1ÓÃÐÂμÄÄÚ2¿ ̧ñÊ1⁄2¡£ + ́ÅÅÌÎÄ1⁄4þ ̧ñÊ1⁄2ûÓÐ±ä» ̄μÄÉý1⁄4¶£¬¿ÉÒÔÓà /pg_upgrade/ 1⁄2ű3⁄4£¬¶ø2»ÐèÒa×ばつö dump + oÍ restor¡£·21ドル⁄4ËμÃ÷script »áÖ ̧Ã÷ /pg_upgrade/ ¶Ô ̧à ́ÎÉý1⁄4¶ÊÇ·ñ¿ÉÓᣠ+ ---------------------------------------------------------------------- + -- ×ばつ÷ÎÊÌâ 4.1) ¶þ1⁄2øÖÆÓαêoÍÆÕÍ ̈ÓαêÖ®1⁄4äμÄÇø±ðÊÇÊ2à ́£¿ 2ÎÔÄ DECLARE + ÊÖ2áÒ3»ñÈ¡ÐÅÏ¢¡£ 4.2)ÈçoÎÖ» SELECT Ò» ̧ö2éÑ ̄1⁄2á1ûμÄÍ·1⁄4 ̧ÐУ¿ 2ÎÔÄ FETCH + ÊÖ2áÒ3£¬»òÕßÊ1Óà SELECT ... LIMIT.... + 1⁄4 ́Ê1ÄãÖ»ÐèÒa¿aÍ·μÄ1⁄4 ̧ÐУ¬Ò2»áÉæ1⁄4°μ1⁄2Õû ̧ö2éÑ ×ばつÅÊ1Óà ́øÓÐ ORDER BY μÄ2é + Ñ ̄¡£Èç1ûÓÐÒ» ̧öË÷ÒýÓë ORDER BY Æ\Å䣬PostgreSQL + ¿ÉÄÜ3⁄4ÍÖ» ́¦ÀíÒaÇóμÄÍ·1⁄4 ̧Ìõ + 1⁄4ÇÂ1⁄4£¬·ñÔò1⁄2«¶ÔÕû ̧ö2éÑ ̄1⁄2øÐÐ ́¦ÀíÖ±μ1⁄2Éú3ÉÐèÒaμÄÐС£ 4.3) + ÎÒÈçoλñȡһ ̧ö±íμÄÁÐ±í£¬»òÕßÊÇÆäËûÎÒÄÜÔÚ /psql/ Àï¿ ́μ1⁄2μĶ«Î÷£¿ + Äã¿ÉÒÔÔĶÁ /psql/ μÄÔ ́ ́úÂëÎÄ1⁄4þ/pgsql/src/bin/psql/describe.c/ + ¡£Ëü°üÀ ̈Îa Éú3É psql μÄ· ́б ̧ÜÃüÁîμÄÊä3öμÄ SQL ÃüÁî¡£Äã»1¿ÉÒÔ ́ø /-E/ + Ñ¡ÏîÆô¶ ̄ /psql/£¬ÕâÑùËü1⁄2« ́òÓ¡3öÖ ́ÐÐÄã ̧ø3öμÄÃüÁîËùÓÃμÄ2éÑ ̄¡£ 4.4) + ÔõÑù ́Ó±íÀïÃæÉ3⁄43ýÒ»ÁУ¿ 7.3 ÀïÔö1⁄4ÓÁË ALTER TABLE DROP + COLUMN£¬ÒÔÖ§3Ö ́ËÏî1¦ÄÜ¡£ÔÚÒÔǰμİæ±3⁄4ÖУ¬¿É ×ばつö£o BEGIN; LOCK + TABLE old_table; SELECT ... -- select all columns but the one you want + to remove INTO TABLE new_table FROM old_table; DROP TABLE old_table; + ALTER TABLE new_table RENAME TO old_table; COMMIT; 4.5) + Ò»ÐУ¬Ò» ̧ö±í£¬Ò» ×ばつî ́ó3ß ́çÊǶàÉÙ£¿ ÏÂÃæÊÇһЩÏÞÖÆ£o + Ò» ×ばつî ́ó3ß ́磿 ÎÞÏÞÖÆ£ ̈ ́æÔÚ 1TB μÄÊý3⁄4ݿ⣩ Ò» ×ばつî ́ó3ß ́磿 + 16TB ×ばつî ́ó3ß ́磿 1.6TB Ò» ×ばつî ́ó3ß ́ç? 1GB Ò» ×ばつî ́óÐÐÊý£¿ + ÎÞÏÞÖÆ Ò» ×ばつî ́óÁÐÊý£¿ ̧úÁÐÀàÐÍÓÐ1Ø,250-1600 + Ò» ×ばつî ́óË÷ÒýÊýÁ¿£¿ÎÞÏÞÖÆ + μ±È»£¬Êμ1⁄4ÊÉÏûÓÐÕæÕýμÄÎÞÏÞÖÆ£¬»1ÊÇÒaÊÜ¿ÉÓà ́ÅÅÌ¿Õ1⁄4ä¡¢¿ÉÓÃÄÚ ́æ/1⁄2»»»ÇøμÄÖ + ÆÔ1⁄4¡£ ×ばつî ́ó3ß ́ç 16 TB 2»ÐèÒa×ばつ÷ÏμÍ3¶Ô ́óÎÄ1⁄4þμÄÖ§3Ö¡£ ́ó±íÓöà ̧ö 1 GB + μÄÎÄ1⁄4þ ́æ ́¢£¬Òò ́ËÎÄ1⁄4þÏμÍ33ß ́çμÄÏÞÖÆÊÇ2»ÖØÒaμÄ¡£ Èç1ûȱʡμÄ¿é ́óСÔö3¤μ1⁄2 + 32K ×ばつî ́óμıí3ß ×ばつî ́óÁÐÊý¿ÉÒÔÔö1⁄4Ó¡£ + 4.6) ́æ ́¢Ò» ̧öμäÐÍμÄÆ1⁄2ÃæÎÄ1⁄4þÀïμÄÊý3⁄4ÝÐèÒa¶àÉÙ ́ÅÅÌ¿Õ1⁄4䣿 Ò» ̧ö Postgres + ×ばつî¶à¿ÉÄÜÐèÒaÏàμ±ÓÚÔÚÒ» ̧öÆ1⁄2ÃæÎÄ1⁄4þÀï ́æ ́¢ÏàͬÊý3⁄4ÝμÄ5±¶ μÄ ́ÅÅÌ¿Õ1⁄4ä¡£ + ÀýÈ磬1⁄4ÙÉèÓÐÒ» ̧ö 100,000 + ÐÐμÄÎÄ1⁄4þ£¬Ã¿ÐÐÓÐÒ» ̧öÕûÊýoÍÒ» ̧öÎı3⁄4ÃèÊö¡1ドル⁄4ÙÉèÎÄ + ±3⁄4 ×ばつÖ1⁄2Ú¡£Æ1⁄2ÃæÎÄ1⁄4þÕ1⁄4Óà 2.8 MB¡£ ́æ·ÅÕâЩÊý3⁄4ÝμÄ PostgreSQL + Êý3⁄4Ý¿âÎÄ1⁄4þ ́óÔ1⁄4ÊÇ 6.4 MB: 36 ×ばつÖ1⁄2Ú: ÿÐÐμÄÍ·£ ̈1À1⁄4ÆÖ죩 24 ×ばつÖ1⁄2Ú: + Ò» ̧öin×ばつÖ¶ÎoÍÒ» ×ばつÖ¶Î + 4 ×ばつÖ1⁄2Ú: Ò3ÃæÄÚÖ ̧ÏòÔa×ばつéμÄÖ ̧Õë + ---------------------------------------- 64 ×ばつÖ1⁄2ÚÿÐÐ PostgreSQL + Êý3⁄4ÝÒ3μÄ ́óСÊÇ 8192 ×ばつÖ1⁄2Ú (8 KB)£¬Ôò£o 8192 ×ばつÖ1⁄2ÚÿÒ3 +たす -ひく-ひく-ひく-ひく-ひく-ひく-ひく-ひく-ひく-ひく-ひく-ひく-ひく-ひく-ひく-ひく-ひく-ひく-ひく = 128 ÐÐ/Êý3⁄4ÝÒ3£ ̈ÏòÏÂÈ¡Õû£© 64 ×ばつÖ1⁄2ÚÿÐÐ 100000 + Êý3⁄4ÝÐÐ -------------------- = 782 Êý3⁄4ÝÒ3£ ̈ÏòÉÏÈ¡Õû£© 128 ÐÐÿÒ3 782 + Êý3⁄4ÝÒ3 * 8192 ×ばつÖ1⁄2Ú/Ò3 = 6,406,144 ×ばつÖ1⁄2Ú£ ̈6.4 MB£© + Ë÷Òý2»ÐèÒaÕâà ́¶àμĶîÍâÏûoÄ£¬μ«Ò2È·Êμ°üÀ ̈±»Ë÷ÒýμÄÊý3⁄4Ý£¬Òò ́ËËüÃÇÒ2¿ÉÄÜoÜ + ́ó¡£ ¿ÕÖμ ́æ·ÅÔÚλÍ1⁄4ÖУ¬Òò ́ËÕ1⁄4ÓÃoÜÉÙμÄ¿Õ1⁄4ä¡£ 4.7) + ÈçoÎ2é¿ ́±í¡¢Ë÷Òý¡¢Êý3⁄4Ý¿âÒÔ1⁄4°Óû§μĶ ̈Ò壿 / psql/ + ÓÐÐí¶à· ́б ̧ÜÃüÁîÓÃÓÚÏÔÊ3⁄4ÕâЩÐÅÏ¢¡£Óà \? ¿ ́¿ ́¶1⁄4ÓÐÄÄЩ¡£ÒÔ pg_ ́ò + Í·μÄÏμÍ3±íÒ2ÃèÊöÁËÕâЩÐÅÏ¢¡£ psql -l ¿ÉÒÔÁÐ3öËùÓÐμÄÊý3⁄4ݿ⡣ + Ò2¿ÉÒÔÊÔÊÔÎÄ1⁄4þ + /pgsql/src/tutorial/syscat.source/¡£ËüÑÝÊ3⁄4ÁËÐí¶à ́ÓÊý3⁄4Ý¿â + ÏμÍ3±íÀï»ñÈ¡ÐÅÏ¢ÐèÒaμÄ SELECT¡£ 4.8) + ÎÒμÄ2éÑ ̄oÜÂý»òÕßûÓÐÀûÓÃË÷Òý¡£ÎaÊ2à ́£¿ + 2¢·Çÿ ̧ö2éÑ ×ばつÔ¶ ̄Ê1ÓÃË÷Òý¡£Ö»ÓÐÔÚ±íμÄ ́óС3¬1ýÒ» ×ばつîСÖ죬2¢ÇÒ2éÑ ̄Ö» + Ñ¡ + Ôñ±íÖÐ1⁄2ÏС±ÈÀýμÄÐÐʱ2ÉÓÃÊ1ÓÃË÷Òý¡£ÕâÊÇÒòÎaË÷ÒýÉ ̈ÃèÒýÆðμÄËæ1⁄4 ́ ́ÅÅÌ ́æÈ¡¿É + ÄÜ ±ÈÖ±1⁄2ÓμØ¶ÁÈ¡±í£ ̈Ë3ÐòÉ ̈Ã裩 ̧üÂý¡£ÎaÁËÅжÏÊÇ·ñÊ1ÓÃË÷Òý£¬PostgreSQL + ±ØÐë»ñ μÃÓÐ1رíμÄÍ31⁄4ÆÖμ¡£ÕâЩÍ31⁄4ÆÖμ¿ÉÒÔÊ1Óà VACUUM ANALYZE£¬»ò ANALYZE + »ñμá£Ê1 + ÓÃÍ31⁄4ÆÖ죬ÓÅ» ̄Æ÷ÖaμÀ±íÖÐÓжàÉÙÐУ¬3⁄4ÍÄÜ1» ̧üoÃμØÅжÏÊÇ·ñÀûÓÃË÷Òý¡£Í31⁄4ÆÖμ + ¶Ô + È·¶ ̈ÓÅ» ̄μÄÁ¬1⁄2ÓË3ÐòoÍÁ¬1⁄2Ó·1⁄2· ̈Ò2oÜÓÐÓá£ÔÚ±íμÄÄÚÈÝ·¢Éú±ä» ̄ʱ£¬Ó¦¶ ̈ÆÚ1⁄2øÐÐ + Í3 1⁄4ÆÖμμÄ»ñÈ¡¡£ Ë÷ÒýÍ ̈32ドル»ÓÃÓÚ ORDER BY + »òÖ ́ÐÐÁ¬1⁄2Ó¡£¶ÔÒ» ̧ö ́ó±íμÄÒ» ́ÎË3ÐòÉ ×ばつöÒ» ̧öÏÔ + Ê1⁄2μÄÅÅÐòÍ ̈3£±ÈË÷ÒýÉ ̈ÃèÒa¿ì¡£ μ«ÊÇ£¬ÔÚ LIMIT oÍ ORDER BY 1⁄2áoÏÊ1ÓÃʱ3⁄4­ + 3£»áÊ1ÓÃË÷Òý£¬ÒòÎaÖ»»á·μ»Ø±íμÄÒ» С2¿·Ö¡£Êμ1⁄4ÊÉÏ£¬ËäÈ» MAX() oÍ MIN() + 22ドル»Ê1ÓÃË÷Òý£¬Í ̈1ý¶Ô ORDER BY oÍ LLIMIT + ×ばつî ×ばつîСÖμÒ2ÊÇ¿ÉÒÔμÄ£o SELECT col FROM tab ORDER BY + col [ DESC ] LIMIT 1; μ±Ê1ÓÃÍ ×ばつ÷£¬ÀýÈç LIKE »ò ~ + ʱ£¬Ë÷ÒýÖ»ÄÜÔÚÌØ¶ ̈μÄÇé¿öÏÂÊ1Óão * + ×ばつÖ·û ́®μÄ¿aÊ1⁄42¿·Ö±ØÐëÊÇÆÕÍ ×ばつÖ·û ́®£¬Ò23⁄4ÍÊÇËμ£o o LIKE Ä£Ê1⁄22»ÄÜÒÔ % + ́òÍ·¡£ o ~ £ ̈ÕýÔò±í ́ïÊ1⁄2£©Ä£Ê1⁄2±ØÐëÒÔ ^ ́òÍ·¡£ * + ×ばつÖ·û ́®2»ÄÜÒÔÆ\Åä¶à ×ばつÖ·ûμÄÄ£Ê1⁄2Àà ́òÍ·£¬ÀýÈç [a-e]¡£ * + ́óСР́ÎÞ1ØμÄ2éÕÒ£¬Èç ILIKE oÍ ~* μÈ2»Ê1ÓÃË÷Òý¡£μ«¿ÉÒÔÓà 4.12 1⁄2ÚÃè + ÊöμÄo ̄ÊýË÷Òý¡£ * ×ばつö initdb ʱ±ØÐë2ÉÓÃȱʡμı3⁄4μØÉèÖà C locale¡£ 4.9) + ÎÒÈçoÎ2ÅÄÜ¿ ́μ1⁄22éÑ ̄ÓÅ» ̄Æ÷ÊÇÔõÑù ́¦ÀíÎÒμÄ2éÑ ̄μÄ£¿ 2ο1⁄4 EXPLAIN ÊÖ2áÒ3¡£ + 4.10) R-tree Ë÷ÒýÊÇÊ2à ́£¿ R-tree + Ë÷ÒýÓÃÓÚË÷Òý¿Õ1⁄4äÊý3⁄4Ý¡£Ò» ̧ö1þÏ£Ë÷ÒýÎÞ· ̈ ́¦Àí·¶Î§ËÑË÷¡£¶ø B-tree Ë÷ + ÒýÖ»ÄÜ ́¦ÀíһάμÄ·¶Î§ËÑË÷¡£R-tree + Ë÷Òý¿ÉÒÔ ́¦Àí¶àάÊý3⁄4Ý¡£ÀýÈ磬Èç1û¿ÉÒÔÔÚ Ò» ̧öÀàÐÍÎa point + ×ばつÖ¶ÎÉÏ1⁄2 ̈Á¢Ò» ̧ö R-tree Ë÷Òý£¬ÄÇà ́ÏμÍ3ÄÜ ̧ü ̧ßÐ§μØ»Ø ́ðÀà ËÆ + ¡°Ñ¡ÔñÔÚÒ» ̧ö3¤·1⁄2Ðη¶Î§ÄÚμÄËùÓÐμ㡱¡£ ×ばつî3õμÄ R-Tree + Éè1⁄4ÆμÄÕýÊ1⁄2ÂÛÎÄÊÇ£o Guttman, A. "R-Trees: A Dynamic Index Structure for + Spatial Searching." Proc of the 1984 ACM SIGMOD Int'l Conf on Mgmt of + Data, 45-57. Äã»1¿ÉÒÔÔÚ Stonebraker μÄ¡°Readings in Database + Systems¡±ÀïÕÒμ1⁄2ÕâÆaÎÄÕ¡£ ÏμÍ3ÄÚÖÃμÄ R-Tree + ¿ÉÒÔ ́¦Àí¶à±ßÐÎoÍ·1⁄2ÐΡ£ÀíÂÛÉÏË죬R-tree ¿ÉÒÔÀ©Õ1Îa ́¦Àí + ̧ü¶àάÊý¡2ドル»1ýÔÚÊμ1⁄4ùÉÏ£¬À©Õ1 R-trees + ÐèÒaÒ»¶ ×ばつ÷Á¿£¬¶øÎÒÃÇĿǰûÓÐÈç ×ばつöμÄÎÄμμ¡£ 4.11) + Ê2à ́ÊÇ»ùÒò2éÑ ̄ÓÅ» ̄£ ̈Genetic Query Optimization£©£¿ GEQO + Ä£¿é2ÉÓûùÒòËã· ̈£ ̈Genetic Algorithm£¬GA£©1⁄4Ó¿ì¶à±íÁ¬1⁄2ÓμÄ2éÑ ̄ÓÅ» ̄¡£Ëü + ÔÊÐíÍ ̈1ý·ÇÇî3⁄4ÙËÑË÷ ́¦Àí ́óμÄÁ¬1⁄2Ó2éÑ ̄¡£ 4.12) + ×ばつöÕýÔò±í ́ïÊ1⁄2ËÑË÷oÍ ́óСР́ÎÞ1ØμÄÕýÔò±í ́ïÊ1⁄2ËÑË÷£¿ÔõÑùÀû + ÓÃË÷Òý1⁄2øÐÐ ́óСР́ÎÞ1ØËÑË÷£¿ ×ばつ÷·û ~ ́¦ÀíÕýÔò±í ́ïÊ1⁄2Æ\Å䣬¶ø ~* + ́¦Àí ́óСР́ÎÞ1ØμÄÕýÔò±í ́ïÊ1⁄2Æ\Åä¡£ ́óÐ ́ ЩÎÞ1ØμÄ LIKE ±äÖÖ3ÉÎa ILIKE¡£ + ́óСР́ÎÞ1ØμÄμÈÊ1⁄2±È1⁄2ÏÍ ̈3£Ð ×ばつö£o SELECT * FROM tab WHERE lower(col) = + 'abc'; ×ばつ1⁄4μÄË÷Òý¡£μ«ÊÇ¿ÉÒÔ ́ ́1⁄2 ̈Ò» ̧ö¿É±»ÀûÓÃμÄo ̄ÊýË÷Òý: + CREATE INDEX tabindex ON tab (lower(col)); 4.13) + ÔÚÒ» ̧ö2éÑ ̄ÀÎÒÔõÑù1⁄4ì2âÒ» ×ばつÖ¶ÎÊÇ·ñÎa NULL£¿ Óà IS NULL oÍ IS NOT + NULL 2âÊÔÕâ ×ばつֶΡ£ 4.14) ×ばつÖ·ûÀàÐÍÖ®1⁄4äÓÐÊ2à ́2»Í¬£¿ ÀàÐÍ ÄÚ2¿Ãû3Æ + ËμÃ÷ -------------------------------------------------- "char" char + 1 ×ばつÖ·û character CHAR(#) bpchar + ¶ ×ばつÖ·û ×ばつã¶ ̈Òå3¤¶Èʱ£¬ÒÔ¿Õ ̧ñ21Æë VARCHAR(#) varchar + Ö ̧¶ ×ばつî ×ばつÖ·û ×ばつã¶ ̈Òå3¤¶ÈμÄ2¿·Ö 2»21Æë TEXT text + ×ばつî ́ó3¤¶ÈÏÞÖÆ BYTEA bytea + ×ばつÖ1⁄2ÚÐòÁУ ̈±ä3¤μĶþ1⁄2øÖÆÊý3⁄4Ý£© + ÔÚÏμÍ3±íoÍÔÚһЩ ́íÎóÐÅÏ¢ÀïÄã1⁄2«¿ ́μ1⁄2ÄÚ2¿Ãû3Æ¡£ + ×ばつîoóËÄÖÖÀàÐÍÊÇ"varlena"£ ̈±ä3¤£©ÀàÐÍ£ ̈Ò23⁄4ÍÊÇË죬¿aÍ·μÄËÄ ×ばつÖ1⁄2ÚÊÇ3¤ + ¶È£¬oóÃæ2ÅÊÇÊý3⁄4Ý£©¡£ÓÚÊÇÊμ1⁄4ÊÕ1⁄4ÓÃμÄ¿Õ1⁄4ä±ÈÉùÃ÷μÄ ́óСÒa¶àһЩ¡£È»¶øÕâЩÀà + ÐÍ ¶1⁄4¿ÉÒÔ±»Ñ1Ëõ ́æ ́¢£¬Ò2¿ÉÒÔÓà TOAST + ÍÑ»ú ́æ ́¢£¬Òò ́Ë ́ÅÅÌ¿Õ1⁄4äÒ2¿ÉÄܱÈÔ¤ÏëμÄÒaÉÙ¡£ CHAR(n) + ×ばつîÊÊoÏÓÚ ́æ ×ばつÖ·û ́®¡£VARCHAR(n) ÔÚ ́æ ×ばつî ́ó + ×ばつÖ·û ×ばつîoÃμÄ¡£TEXT ÊÊÓÃÓÚ ́æ ×ばつÖ·û ×ばつî ́ó¿É ́ï + 1G¡£BYTEA ÓÃÓÚ ́æ ́¢¶þ1⁄2øÖÆÊý3⁄4Ý£¬ÓÈÆäÊǰüo¬ NULL + ×ばつÖ1⁄2Ú£ ̈¶þ1⁄2øÖÆμÄ0£©μÄÖμ¡£Õâ ЩÀàÐÍ3⁄4ßÓÐÀàÐÍμÄÐÔÄÜ¡£ 4.15.1) + ÎÒÔõÑù ́ ́1⁄2 ̈Ò» ×ばつÔ¶ ×ばつֶΣ¿ PostgreSQL Ö§3Ö SERIAL + ×ばつÔ¶ ̄ ́ ́1⁄2 ̈Ò» ̧öÐòÁÐoÍË÷Òý¡£ÀýÈ磬 CREATE TABLE person + ( id SERIAL, name TEXT ); ×ばつÔ¶ ×ばつa»»Îa£o CREATE SEQUENCE + person_id_seq; CREATE TABLE person ( id INT4 NOT NULL DEFAULT + nextval('person_id_seq'), name TEXT ); CREATE UNIQUE INDEX + person_id_key ON person ( id ); 2ο1⁄4 create_sequence + ÊÖ2áÒ3»ñÈ¡1ØÓÚÐòÁÐμÄ ̧ü¶àÐÅÏ¢¡£Äã»1¿ÉÒÔÓÃÿÐÐμÄ oid + ×ばつ÷ÎaÒ» ̧öÎ ̈Ò»Öμ¡2ドル»1ý£¬Èç1ûÄãÐèÒaÇãμ1oÍÖØÔØÊý3⁄4ݿ⣬ÄãÐèÒaÊ1Óà + pg_dump μÄ -o Ñ¡Ïî»òÕß COPY WITH OIDS Ñ¡ÏîÒÔ±£Áô OID¡£ 4.15.2) + ÎÒÈçoλñμÃÒ» ̧ö2åÈëμÄÐòÁÐoÅμÄÖμ£¿ Ò»ÖÖ·1⁄2· ̈ÊÇÔÚ2åÈë֮ǰÏÈÓÃo ̄Êý + nextval() ́ÓÐòÁжÔÏóÀï1⁄4ìË÷3öÏÂÒ» ̧ö SERIAL Öμ£¬È»oóÔÙÏÔÊ1⁄22åÈë¡£Ê1Óà + 4.15.1 <#4.15.1> ÀïμÄÀý±í£¬¿ÉÓÃαÂëÕâÑùÃèÊö£o new_id = execute("SELECT + nextval('person_id_seq')"); execute("INSERT INTO person (id, name) + VALUES (new_id, 'Blaise Pascal')"); ÕâÑù»1ÄÜÔÚÆäËû2éÑ ̄ÖÐÊ1Óà ́æ·ÅÔÚ + new_id ÀïμÄÐÂÖμ£ ×ばつ÷Îa person ±íμÄÍâ ×ばつÔ¶ ̄ ́ ́1⁄2 ̈μÄ + SEQUENCE ¶ÔÏóμÄÃû3Æ1⁄2«»áÊÇ + + __seq£¬ÕâÀï table oÍ serialcolumn ·Ö±ðÊÇÄãμıíμÄÃû 3ÆoÍÄãμÄ SERIAL + ×ばつÖ¶ÎμÄÃû3Æ¡£ ÀàËÆμÄ£¬ÔÚ SERIAL ¶ÔÏóȱʡ2åÈëoóÄã¿ÉÒÔÓÃo ̄Êý currval() + 1⁄4ìË÷ ̧Õ ̧3ÖμμÄ SERIAL Ö죬ÀýÈ磬 execute("INSERT INTO person (name) + VALUES ('Blaise Pascal')"); new_id = execute("SELECT + currval('person_id_seq')"); ×ばつîoó£¬Äã¿ÉÒÔÊ1Óà ́Ó INSERT Óï3⁄4ä·μ»ØμÄ OID + <4.16> 2éÕÒȱʡÖ죬3⁄4¡1ÜÕâ¿ÉÄÜÊÇ ×ばつîȱ·¦ÒÆÖ2ÐÔμÄ·1⁄2· ̈¡£ÔÚ Perl + ÀÊ1Óà ́øÓÐ Edmund Mergl μÄ DBD::Pg Ä£¿éμÄ DBI£¬oid Öμ¿ÉÒÔÍ ̈1ý + $sth->execute() oóμÄ $sth->{pg_oid_status} »ñμᣠ4.15.3) Ê1Óà + currval() oÍ nextval() »áμ1⁄4ÖÂÒ» ̧öÓëÆäËûÓû§Ö®1⁄4äμÄÎÉ ÂÒÇé¿öÂ𣿠+ 2»»á¡£currval() ·μ»ØoóÌ ̈1⁄2ø3̶ø2»ÊÇËùÓÐÓû§ ̧3ÓèμÄμ±Ç°Öμ¡£ 4.15.4) + ÎaÊ2à ́2»ÔÚÊÂÎñÒì3£ÖÐÖ1oóÖØÓÃÐòÁÐoÅÄØ£¿ÎaÊ2à ×ばつÖ¶Î + μÄÈ¡ÖμÖÐ ́æÔÚ1⁄4ä¶ÏÄØ£¿ + ÎaÁËÌá ̧ß2¢·¢ÐÔ£¬ÐòÁÐoÅÔÚÐèÒaμÄʱoò ̧3ÓèÕýÔÚÔËÐÐμÄÊÂÎñ£¬2¢ÇÒÖ»ÔÚÊÂÎñ1⁄2áÊø + Ö® ǰ2»·âËø¡£Õâ3⁄4Í»áμ1⁄4ÖÂØ2ÕÛÊÂÎñoóμÄÐòÁÐoÅ3öÏÖ1⁄4ä ̧ô¡£ 4.16) Ê2à ́ÊÇ + OID£¿Ê2à ́ÊÇ TID£¿ OID ÊÇ PostgreSQL ÖÐÐÐμÄÎ ̈Ò»±êʶ¡£PostgreSQL + Àï ́ ́1⁄2 ̈μÄÿһÐж1⁄4»ñμÃÒ» ̧öÎ ̈ Ò»μÄ OID¡£ËùÓÐÔÚ initdb 1ý3ÌÖÐ ́ ́1⁄2 ̈μÄ OID + ¶1⁄4СÓÚ 16384 £ ̈2Î1⁄4û include/access/transam.h£©¡£ËùÓÐÓû§ ́ ́1⁄2 ̈μÄ OID + ¶1⁄4 ́óÓÚ»òμÈÓÚÕâ ̧öÖμ¡£È±Ê¡ ʱ£¬ËùÓÐÕâЩ OID + 2»1⁄2öÔÚÒ» ̧ö±í»òÒ» ̧öÊý3⁄4Ý¿âÀïÃæÎ ̈Ò»£¬¶øÇÒÔÚÕû ̧ö PostgreSQL + ×ばつ°ÀïÒ2ÊÇÎ ̈Ò»μÄ¡£ PostgreSQL ÔÚËüμÄÄÚ2¿ÏμÍ3±íÀïÊ1Óà OID + ÔÚ±íÖ®1⁄4ä1⁄2 ̈Á¢ÁaÏμ¡£ÕâЩ OID ¿ÉÒÔÓà + ÓÚ±êÊ¶ÌØ¶ ̈μÄÓû§ÐÐÒÔ1⁄4°ÓÃÔÚÁ¬1⁄2ÓÀï¡1ドル⁄2 ×ばつÖ¶ÎÀàÐÍ OID ́æ ́¢ OID + Öμ¡£¿ÉÒÔ ÔÚ OID ×ばつÖ¶ÎÉÏ ́ ́1⁄2 ̈Ò» ̧öË÷ÒýÒÔ¿ìËÙ·ÃÎÊ¡£ OID + ́ÓÒ» ̧ö±»ËùÓÐÊý3⁄4Ý¿âÊ1ÓÃμÄÖÐÐÄÇøÓòÀï ̧3Öμ ̧øËùÓÐÐÂÐС£Èç1ûÄãÏë°Ñ OID ̧Ä + ×ばつöÒ»·Ý±íμÄ ́øÔÊ1⁄4 OID μÄ¿1⁄2± ×ばつöμ1⁄2£o CREATE TABLE + new(old_oid oid, mycol int); SELECT old_oid, mycol INTO new FROM old; + COPY new TO '/tmp/pgtable'; DELETE FROM new; COPY new WITH OIDS FROM + '/tmp/pgtable'; OID + ×ばつÖ1⁄2ÚμÄÕûÊý±£ ́棬ÔÚ3¬1ý40ÒÚʱ1⁄2«Òç3ö¡£Ã»ÓÐÈ˱ ̈ ̧æ3öÏÖ1ýÒç3ö£¬¶øÎÒÃÇ + ́òËãÔÚÓÐÈ˱ ̈ ̧æÖ®Ç°Ïû3ýÕâ ̧öÏÞÖÆ¡£ TID + ÓÃÓÚ±êʶ ×ばつÅÊý3⁄4Ý¿é£ ̈μØÖ·£©oÍ£ ̈¿éÄÚ£©Æ«ÒÆμÄÌØ¶ ̈μÄÎïÀíÐС£TID ÔÚÐб» ̧ü + ̧Ä»òÖØÔØoó·¢Éú ̧ı䡣Ë÷ÒýÈë¿ÚÊ1ÓÃËüÃÇÖ ̧ÏòÎïÀíÐС£ 4.17) PostgreSQL + Ê1ÓÃμÄһЩÊõÓïμÄo¬ÒåÊÇÊ2à ́£¿ + Ò»Ð©Ô ́ ́úÂëoÍһЩ3⁄4ÉÒ»μãμÄÎÄμμÊ1ÓÃһЩÓÐ ̧ü3£ÓÃÓ÷ ̈μÄÊõÓï¡£ÏÂÃæÊÇÆäÖÐÒ»2¿ + ·Ö£o table, relation, class row, record, tuple column, field, + attribute retrieve, select replace, update append, insert OID, serial + value portal, cursor range variable, table name, table alias + ÓÐÒ» ̧öÍ ̈ÓÃÊý3⁄4Ý¿âÊõÓïμÄÁбí£ohttp://hea- + www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.h + tml ¡£ 4.18) ÎaÊ2à ́ÎÒÊÕμ1⁄2 ́íÎó¡°/ERROR: Memory exhausted in + AllocSetAlloc()/¡±£¿ + ÕâoÜ¿ÉÄÜÊÇÏμÍ3μÄÐéÄâÄÚ ×ばつÊÔ ́ÓÐ1⁄2ÏμÍμÄÏÞÖÆÖμ¡£ÔÚÆô + ¶ ̄ postmaster ֮ǰÊÔÊÔÏÂÃæμÄÃüÁî£o ulimit -d 262144 limit datasize + 256m È¡3⁄4öÓÚÄãÓÃμÄ + shell£¬ÉÏÃæÃüÁîÖ»ÓÐÒ»ÌõÄÜ3É1¦£¬μ«ÊÇËü1⁄2«°ÑÄãμÄ1⁄2ø3ÌÊý3⁄4ݶÎÏÞÖÆ + ÉèμñÈ1⁄2Ï ̧ߣ¬Òò¶øÒ2ÐíÄÜÈÃ2éÑ ̄Íê3É¡£ÕâÌõÃüÁîÓ¦ÓÃÓÚμ±Ç°1⁄2ø3Ì£¬ÒÔ1⁄4°ËùÓÐÔÚÕâ + Ìõ + ÃüÁîÔËÐÐoó ́ ́1⁄2 ×ばつÓ1⁄2ø3Ì¡£Èç1ûÄãÊÇÔÚÔËÐÐSQL¿Í»§¶ËʱÒòÎaoóÌ ̈·μ»ØÁËÌ«¶àμÄÊ + ý 3⁄4ݶø3öÏÖÎÊÌ⣬ÇëÔÚÔËÐпͻ§¶ËÖ®Ç°Ö ́ÐÐÉÏÊöÃüÁî¡£ 4.19) + ÎÒÈçoÎ2ÅÄÜÖaμÀËùÔËÐÐμÄ PostgreSQL μİæ±3⁄4£¿ ́Ó psql À1⁄4üÈë SELECT + version()£» 4.20) ÎaÊ2à ́ÎÒμÄ ×ばつ÷μ1⁄4Ö ́íÎó¡°/invalid large obj + descriptor¡±£ ̈·Ç· ̈μÄ ́ó¶ÔÏóÃèÊö·û£©/£¿ + ÄãÐèÒaÔÚÊ1ÓÃÈÎoÎ ́ó¶ÔÏó3⁄4ä±úμÄǰoó·ÅÉÏ BEGIN WORK oÍ + COMMIT£¬Ò23⁄4ÍÊÇË죬°ü Χ lo_open ... lo_close¡£ Ŀǰ PostgreSQL + Ç¿ÖÆÊμÊ©ÕâÌõ1æÔò£oÔÚÊÂÎñÌá1⁄2»Ê±1Ø±Õ ́ó¶ÔÏó3⁄4ä±ú£¬ÕâÑù£¬£ ̈û + ×ばつ ́Î¶Ô ×ばつöÈÎoÎÊÂÇéμÄÆóÍ1⁄4¶1⁄4»áμ1⁄4ÖÂÒ» ̧ö invalid + large obj + descriptor¡£ËùÒÔ£¬Èç1ûÄãûÓÐÊ1ÓÃÒ» ×ばつ÷μÄ ́úÂë£ ̈ÖÁ + ÉÙÊÇ ́ó¶àÊýʱ1⁄4䣩1⁄2«»áÉú3ÉÕâà ́Ò» ̧ö ́íÎóÐÅÏ¢¡£ Èç1ûÄãÊ1Óÿͻ§¶Ë1⁄2Ó¿Ú£¬Èç + ODBC£¬Äã¿ÉÄÜÐèÒa set auto-commit off¡£ 4.21) + ÎÒÈçoÎ ́ ́1⁄2 ̈Ò» ×ばつֶΣ¿ Ê1Óà CURRENT_TIMESTAMP£o CREATE + TABLE test(x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP); 4.22) + ÎaÊ2à ́Ê1Óà IN ×ばつÓ2éÑ ̄Õâà ́Âý£¿ + Ŀǰ£¬ÎÒÃÇÍ ̈1ýÎaÍâ2éÑ ̄μÄÿһÐÐË3ÐòÉ ×ばつÓ2éÑ ̄μÄ1⁄2á1ûÀ ×ばつÓ2éÑ ̄oÍÍâ2éÑ ̄ + ¡£ ×ばつÓ2éÑ ̄·μ»ØÉÙÊý1⁄4 ̧ÐУ¬¶øÍâ2éÑ ̄·μ»ØoܶàÐУ¬IN + Ö ́ÐÐμÃoܿ졣ÎaÁË1⁄4Ó¿ìÆäËû IN 2éÑ ̄μÄÖ ́ÐУ¬¿ÉÒÔÓà EXISTS Ìæ»» IN£o SELECT + * FROM tab WHERE col IN (SELECT subcol FROM subtab); ̧ÄÎa£o SELECT * + FROM tab WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col); + oóÕßÒaÏëÖ ́ÐÐμà ̧ü¿ì£¬subcol + Ó¦ ̧ÃÊÇÒ» ̧öË÷ÒýÁС£ÎÒÃÇÏ£ÍûÔÚÎ ́À ́μÄ·21ドル⁄4°æ±3⁄4ÖÐ ÐÞ21Õâ ̧öÏÞÖÆ¡£ 4.23) + ÎÒÔõÑù1⁄2øÐÐ outer join £ ̈ÍâÁ¬1⁄2Ó£©£¿ PostgreSQL ×ばつ1⁄4μÄ SQL + Óï· ̈Ö§3ÖÍâÁ¬1⁄2Ó¡£ÕâÀïÊÇÁ1⁄2 ×ばつÓ£o SELECT * FROM t1 LEFT OUTER JOIN t2 + ON (t1.col = t2.col); »ò SELECT * FROM t1 LEFT OUTER JOIN t2 USING + (col); ÕâÁ1⁄2 ̧öμÈ1⁄4ÛμÄ2éÑ ̄ÔÚ t1.col oÍ t2.col ×ばつöÁ¬1⁄2Ó£¬2¢ÇÒ·μâ»?t1 + ÖÐËùÓÐÎ ́Á¬1⁄2ÓμÄ ÐУ ̈ÄÇЩÔÚ t2 ÖÐûÓÐÆ\ÅäμÄÐУ©¡£ÓÒ[Íâ]Á¬1⁄2Ó(RIGHT OUTER + JOIN)1⁄2«·μ»Ø t2 ÖÐ Î ́Á¬1⁄2ÓμÄÐС£ÍêÈ«ÍâÁ¬1⁄2Ó£ ̈FULL OUTER JOIN£©1⁄2«·μ»Ø t1 + oÍ t2 ÖÐÎ ́Á¬1⁄2ÓμÄÐС£ ×ばつÖ OUTER + ×ばつó[Íâ]Á¬1⁄2Ó¡¢ÓÒ[Íâ]Á¬1⁄2ÓoÍÍêÈ«[Íâ]Á¬1⁄2ÓÖÐÊÇ¿ÉÑ¡μÄ£¬ÆÕÍ ̈Á¬1⁄2Ó + ±»3ÉÎaÄÚÁ¬1⁄2Ó£ ̈INNER JOIN£©¡£ ÔÚ ́Ëǰμİæ±3⁄4ÖУ¬ÍâÁ¬1⁄2Ó¿ÉÒÔÓà UNION oÍ NOT + IN À ×ばつÓÔÚ ±í tab1 oÍ tab2 ×ばつöÍâÁ¬1⁄2Ó£o SELECT + tab1.col1, tab2.col2 FROM tab1, tab2 WHERE tab1.col1 = tab2.col1 UNION + ALL SELECT tab1.col1, NULL FROM tab1 WHERE tab1.col1 NOT IN (SELECT + tab2.col1 FROM tab2) ORDER BY col1 4.24) + ÈçoÎÊ1ÓÃÉæ1⁄4°¶à ̧öÊý3⁄4Ý¿âμÄ2éÑ ̄£¿ + ûÓÐ°ì· ̈2éÑ ̄μ±Ç°Êý3⁄4Ý¿âÖ®ÍâμÄÊý3⁄4ݿ⡣ÒòÎa PostgreSQL + 1⁄4ÓÔØÊý3⁄4Ý¿âÏà1ØμÄÏμÍ3 Ä¿Â1⁄4£ ̈ÏμÍ3±í£©£¬¿çÊý3⁄4Ý¿âμÄ2éÑ ̄ÈçoÎÖ ́ÐÐÒ2Î ́Ã÷È·¡£ + contrib/dblink + ÔÊÐí2ÉÓÃo ̄Êýμ÷ÓÃÊμÏÖ¿ç¿â2éÑ ̄¡£μ±È»¿ÉÒÔͬʱÁ¬1⁄2Óμ1⁄22»Í¬μÄÊý + 3⁄4Ý¿â2¢ÔÚ¿Í»§¶ËoÏ21ドル⁄2á1û¡£ 4.25) ÈçoÎÈÃo ̄Êý·μ»Ø¶àÐлò¶àÁУ¿ ¿ÉÒÔÔÚ + PL/pgSQL o ̄ÊýÖÐÊ1Óà refcursors ·μ»Ø1⁄2á1û1⁄4 ̄¡2ドルο ́ + http://www.PostgreSQL.org/idocs/index.php?plpgsql-cursors.html + www.PostgreSQL.org/idocs/index.php?plpgsql-cursors.html>, 23.7.3.31⁄2Ú¡£ + 4.26) ÎaÊ2à ́ÔÚ PL/PgSQL o ̄ÊýÖÐ2»Äܿɿ¿μØ ́ ́1⁄2 ̈»òÉ3⁄43ýÁÙʱ±í£¿ PL/PgSQL + »o ́æo ̄ÊýμÄÄÚÈÝ£¬ÓÉ ́Ë ́øÀ ́μÄÒ» ̧ö2»oÃμÄ ×ばつ÷ÓÃÊÇÈôÒ» ̧ö PL/PgSQL o ̄ + Êý·ÃÎÊÁËÒ» ̧öÁÙʱ±í£¬È»oó ̧Ã±í±»É3⁄43ý2¢ÖØ1⁄2 ̈ÁË£¬ÔòÔÙ ́Îμ÷Óà ̧Ão ̄Êý1⁄2«Ê§°Ü£¬Òò + Îa »o ́æμÄo ̄ÊýÄÚÈÝÈÔÈ»Ö ̧Ïò3⁄4ÉμÄÁÙʱ±í¡1ドル⁄2â3⁄4öμÄ·1⁄2· ̈ÊÇÔÚ PL/PgSQL ÖÐÓà + EXECUTE ¶ÔÁÙʱ±í1⁄2øÐзÃÎÊ¡£ÕâÑù»á±£Ö¤2éÑ ̄ÔÚÖ ×ばつÜÊÇÖØÐ·ÖÎö¡£ 4.27) + ÓÐÄÄЩÊý3⁄4Ý ̧ ́ÖÆÑ¡Ï + ÓÐ1⁄4 ̧ÖÖÖ÷/ ́Ó·1⁄2Ê1⁄2μÄ ̧ ́ÖÆÑ¡Ïî¡£ÕâЩѡÏîÖ»ÔÊÐíÖ÷Êý3⁄4Ý¿â1⁄2øÐÐ ̧üУ¬ ́ÓÊý3⁄4Ý¿âÖ»Ä + Ü 1⁄2øÐжÁ¡£ÍøÒ3 + http://gborg.PostgreSQL.org/genpage?replication_research + ×ばつîoóÁÐ3öÁËÕâЩѡÏî¡£ÔÚ + http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php + gborg.PostgreSQL.org/project/pgreplication/projdisplay.php> ÕýÔÚ + 1⁄2øÐÐÒ» ̧ö¶àÖ÷±3⁄4 ̧ ́ÖÆμÄ1⁄2â3⁄4ö·1⁄2° ̧¡£ 4.28) ÓÐÄÄЩÊý3⁄4Ý1⁄4ÓÃÜÑ¡Ï + contrib/pgcrypto °üo¬ÁËoܶàÔÚ SQL + 2éÑ ̄ÖÐÊ1ÓÃμÄ1⁄4ÓÃÜo ̄Êý¡1ドル⁄4ÓÃܿͻ§¶Ëμ1⁄2·þÎñ Æ÷¶Ë ́«ÊäÊý3⁄4ÝμÄÎ ̈Ò»·1⁄2· ̈ÊÇÔÚ + pg_hba.conf ÖÐ2ÉÓà hostss ¡£ 7.3 + ×ばつÔ¶ ̄¶ÔÊý3⁄4Ý¿âÓû§ÃÜÂë1⁄2øÐÐ1⁄4ÓÃÜ¡£ÔÚÒÔǰμİæ±3⁄4ÖУ¬±ØÐëÔÚ + postgresql.conf ÖÐ ́ò¿a PASSWORD_ENCRYPTION + Ñ¡Ïî¡£·þÎñÆ÷¿ÉÒÔÔËÐÐÔÚ1⁄4ÓÃÜμÄ ÎÄ1⁄4þÏμÍ3ÉÏ£ ̈ÒÔ ́ïμ1⁄21⁄4ÓÃÜμÄÄ¿μÄ£©¡£ + ---------------------------------------------------------------------- + ---------- À©Õ1 PostgreSQL 5.1) ÎÒÐ ́ÁËÒ» ̧öÓû§¶ ̈Òåo ̄Êý¡£μ±ÎÒÔÚ psql + ÀïÔËÐÐʱ£¬ÎaÊ2à ́»áμ1⁄4Ö core dump£¿ 2úÉúÕâ ̧öÎÊÌâμÄÔ­ + ÒòoܶࡣÇëÏÈÔÚÒ» ×ばつÔ¶ ̈Òåo ̄Êý¡£ 5.2) ÎÒÈçoÎÄÜ ̧ø + PostgreSQL ×ばつһЩͦ2» ́íμÄÐÂÀàÐÍoÍo ̄Êý£¿ 1⁄2«ÄãμÄÀ©Õ1·¢ËÍμ1⁄2 + pgsql-hackers ×ばつîÖջᱻ·Åμ1⁄2 contrib/ ×ばつÓÄ¿Â1⁄4¡£ 5.3) + ÎÒÔõÑùÐ ́Ò» ̧ö·μ»ØÒ»ÌõÔa×ばつéμÄ C o ̄Êý£¿ ÔÚ PostgreSQL 7.3 ÒÔoóμİæ±3⁄4ÖУ¬C, + PL/PgSQL oÍ SQL Íêȫ֧3Ö·μ»ØÖμÎa±íμÄ o ̄Êý¡£ ̧ü¶àÐÅÏ¢Çë2ο1⁄4 + 3ÌÐòÔ±Ö ̧ÄÏ£ ̈the Programmer's Guide£©¡£ÔÚ contrib/tablefunc + ÖÐÓÐÒ» ×ばつÓÊÇÓà C Ð ́μÄ·μ»ØÖμÎa±íμÄo ̄Êý¡£ 5.4) + ÎÒÐÞ ̧ÄÁËÒ» ̧öÔ ́ÎÄ1⁄4þ£¬ÎaÊ2à ́ÖØÐ±àÒëoóûÓп ́μ1⁄2 ̧ı䣿 Makefiles + ×ばつömake clean£¬ ×ばつöÒ» ́Î make + ¡£Èç1ûÄúÊ1ÓÃμÄÊÇ GCC £¬Ôò¿ÉÒÔ2ÉÓÃÑ¡Ïî --enable-depend ×ばつÔ¶ ̄ + Éú3ÉÍ·ÎÄ1⁄4þμÄÒÀÀμ1ØÏμ¡£ diff --git a/doc/src/FAQ/FAQ_chinese.html b/doc/src/FAQ/FAQ_chinese.html new file mode 100644 index 00000000000..be96a4c0afd --- /dev/null +++ b/doc/src/FAQ/FAQ_chinese.html @@ -0,0 +1,1095 @@ + + PostgreSQL 31ドル⁄4ûÎÊÌ⣠×ばつî1⁄2ü ̧üУo2003 Äê 01 Ô 06 ÈÕ ÐÇÆÚÒ» 22:27:35 CST + +Ŀǰά»¤ÈËÔ±£oBruce Momjian (pgman@candle.pha.pa.us +) +ÖÐÎİæÎ¬»¤ÈËÔ±£ooÎΰÆ1⁄2 £ ̈laser@pgsqldb.com ×ばつîаæ±3⁄4¿ÉÒÔÔÚhttp: +//www.postgresql.org/files/documentation/faqs/FAQ.html 2é¿ ×ばつ÷ÏμÍ3Æ1⁄2Ì ̈Ïà1ØμÄÎÊÌâÔÚhttp://www.postgresql.org/docs/faq/Àï»Ø ́ð¡£ + +------------------------------------------------------------------------ + + + 31ドル⁄4ûÎÊÌâ + +1.1 <#1.1>) PostgreSQL ÊÇÊ2à ́£¿ ̧ÃÔõà ́·¢Òô£¿ +1.2 <#1.2>) PostgreSQL μİæÈ ̈ÊÇÊ2à ́? +1.3 <#1.3>) PostgreSQL ÔËÐÐÔÚÊ2à ́ Unix Æ1⁄2Ì ̈ÉÏ£¿ +1.4 <#1.4>) ¿ÉÓÃμÄ·Ç Unix Æ1⁄2Ì ̈ÓÐÄÇЩ£¿ +1.5 <#1.5>) ÎÒ ́ÓÄÄÀïÄÜμÃμ1⁄2 PostgreSQL£¿ +1.6 <#1.6>) ÎÒ ́ÓÄÄÀïÄÜμÃμ1⁄2¶Ô PostgreSQL μÄÖ§3Ö£¿ +1.7 <#1.7>) PostgreSQL ×ばつîÐÂμİæ±3⁄4ÊÇÊ2à ́£¿ +1.8 <#1.8>) ÓÐÄÄЩ¿ÉÓÃμÄ PostgreSQL μÄÎÄμμ£¿ +1.9 <#1.9>) ÎÒÈçoÎÁË1⁄2âÒÑÖaμÄ BUG »òȱʧμÄÌØÐÔ£¿ +1.10 <#1.10>) ÎÒÓ¦ ̧ÃÔõÑùѧϰ SQL £¿ +1.11 <#1.11>) PostgreSQL ÊÇ Y2K 1⁄4æÈÝμÄÂ𣿠+1.12 <#1.12>) ÎÒÓ¦ ̧ÃÔõÑù1⁄4ÓÈë¿a·¢¶ÓÎ飿 +1.13 <#1.13>) ÎÒÓ¦ ̧ÃÔõÑùÌá1⁄2»Ò» ̧ö BUG ± ̈ ̧棿 +1.14 <#1.14>) PostgreSQL oÍÆäËû DBMS ±ÈÆðÀ ́ÈçoΣ¿ +1.15 <#1.15>) ÎÒÓ¦ ̧ÃÔõÑùÔÞÖú PostgreSQL £¿ + + + Óû§¿Í»§¶ËÎÊÌâ + +2.1 <#2.1>) ÓÐ PostgreSQL μÄ ODBC Çý¶ ̄3ÌÐòà ́£¿ +2.2 <#2.2>) ÓÐÊ2à ́1¤3⁄4ß¿ÉÒÔ°Ñ PostgreSQL ÓÃÓÚ Web Ò3Ãæ£¿ +2.3 <#2.3>) PostgreSQL ÓμÓÐÍ1⁄4ÐÎÓû§1⁄2çÃæÂ𣿠+2.4 <#2.4>) ÎÒÃÇ¿ÉÒÔÓÃÊ2à ́ÓïÑÔoÍ PostgreSQL ́ò1⁄2»μÀ£¿ + + + ÏμÍ31ÜÀíÎÊÌâ + +3.1 <#3.1>) ÎÒÔõÑùÄÜ°Ñ PostgreSQL ×ばつ°ÔÚ /usr/local/pgsql ÒÔÍâμÄμØ·1⁄2£¿ +3.2 <#3.2>) μ±ÎÒÔËÐÐ postmaster ʱ£¬3öÏÖ/ Bad System Call/£ ̈ÏμÍ3μ÷Óà ́í£© +»ò Core Dumped ́íÎó¡£ÎaÊ2à ́£¿ +3.3 <#3.3>) μ±ÎÒÊÔÍ1⁄4ÔËÐÐ postmaster ʱ£¬3öÏÖ /IpcMemoryCreate/ ́íÎó¡£Îa +Ê2à ́£¿ +3.4 <#3.4>) μ±ÎÒÊÔÍ1⁄4ÔËÐÐ postmaster ʱ£¬3öÏÖ /IpcSemaphoreCreate/ ́íÎó¡£ +ÎaÊ2à ́£¿ +3.5 <#3.5>) ÎÒÈçoοØÖÆÀ ×ばつÔÆäËûÖ÷»úμÄÁ¬1⁄2Ó£¿ +3.6 <#3.6>) ÎÒÔõÑùμ÷ÕûÊý3⁄4Ý¿âÒýÇæÒÔ»ñμà ̧üoÃμÄÐÔÄÜ£¿ +3.7 <#3.7>) PostgreSQL Àï¿ÉÒÔ»ñμÃÊ2à ́ÑùμÄμ÷ÊÔÌØÐÔ£¿ +3.8 <#3.8>) ÎaÊ2à ́ÔÚÊÔÍ1⁄4Á¬1⁄2ÓμÇÂ1⁄4ʱÊÕμ1⁄2¡°Sorry, too many clients¡± ÏûÏ¢£¿ +3.9 <#3.9>) pgsql_tmp Ä¿Â1⁄4Àï¶1⁄4ÓÐЩÊ2à ́£¿ +3.10 <#3.10>) ÎaÊ2à ́ÒaÔÚÉý1⁄4¶ PostgreSQL ×ばつö dump oÍ restore £¿ + + + ×ばつ÷ÎÊÌâ + +4.1 <#4.1>) ¶þ1⁄2øÖÆÓαêoÍÆÕÍ ̈ÓαêÖ®1⁄4äμÄÇø±ðÊÇÊ2à ́£¿ +4.2 <#4.2>) ÈçoÎֻѡÔñÒ» ̧ö2éÑ ̄1⁄2á1ûμÄÍ·1⁄4 ̧ÐУ¿ +4.3 <#4.3>) ÎÒÈçoλñȡһ ̧öÊý3⁄4Ý¿âÖбíμÄÁÐ±í£¬»òÕßÊÇÆäËûÎÒÄÜÔÚ /psql /Àï¿ ́ +μ1⁄2μĶ«Î÷£¿ +4.4 <#4.4>) ÔõÑù ́Ó±íÀïÃæÉ3⁄43ýÒ»ÁУ¿ +4.5 <#4.5>) Ò»ÐУ¬Ò» ̧ö±í£¬Ò» ×ばつî ́ó3ß ́çÊǶàÉÙ£¿ +4.6 <#4.6>) ́æ ́¢Ò» ̧öμäÐÍμÄÎı3⁄4ÎÄ1⁄4þÀïμÄÊý3⁄4ÝÐèÒa¶àÉÙ ́ÅÅÌ¿Õ1⁄4䣿 +4.7 <#4.7>) ÈçoÎ2é¿ ́±í¡¢Ë÷Òý¡¢Êý3⁄4Ý¿âÒÔ1⁄4°Óû§μĶ ̈Ò壿 +4.8 <#4.8>) ÎÒμÄ2éÑ ̄oÜÂý»òÕßûÓÐÀûÓÃË÷Òý¡£ÎaÊ2à ́£¿ +4.9 <#4.9>) ÎÒÈçoÎ2ÅÄÜ¿ ́μ1⁄22éÑ ̄ÓÅ» ̄Æ÷ÊÇÔõÑù ́¦ÀíÎÒμÄ2éÑ ̄μÄ£¿ +4.10 <#4.10>) R-tree Ë÷ÒýÊÇÊ2à ́£¿ +4.11 <#4.11>) Ê2à ́ÊÇ»ùÒò2éÑ ̄ÓÅ» ̄£ ̈Genetic Query Optimization£©£¿ +4.12 <#4.12>) ×ばつöÕýÔò±í ́ïÊ1⁄2ËÑË÷oÍ ́óСР́ÎÞ1ØμÄÕýÔò±í ́ïÊ1⁄22éÕÒ£¿ÔõÑùÀû +ÓÃË÷Òý1⁄2øÐÐ ́óСР́ÎÞ1Ø2éÕÒ£¿ +4.13 <#4.13>) ÔÚÒ» ̧ö2éÑ ̄ÀÎÒÔõÑù1⁄4ì2âÒ» ×ばつÖ¶ÎÊÇ·ñÎa NULL£¿ +4.14 <#4.14>) ×ばつÖ·ûÀàÐÍÖ®1⁄4äÓÐÊ2à ́2»Í¬£¿ +4.15.1 <#4.15.1>) ÎÒÔõÑù ́ ́1⁄2 ̈Ò» ×ばつÔ¶ ×ばつֶΣ¿ +4.15.2 <#4.15.2>) ÎÒÈçoλñμÃÒ» ̧ö2åÈëμÄÐòÁÐoÅμÄÖμ£¿ +4.15.3 <#4.15.3>) Ê1Óà currval() oÍ nextval() »áμ1⁄4ÖÂoÍÆäËûÓû§μÄÎÉÂÒÇé¿ö +£ ̈race condition£©Â𣿠+4.15.4 <#4.15.4>) ÎaÊ2à ́2»ÔÚÊÂÎñÒì3£ÖÐÖ1oóÖØÓÃÐòÁÐoÅÄØ£¿ÎaÊ2à ×ばつÖ +¶ÎμÄÈ¡ÖμÖÐ ́æÔÚ1⁄4ä¶ÏÄØ£¿ +4.16 <#4.16>) Ê2à ́ÊÇ OID£¿Ê2à ́ÊÇ TID £¿ +4.17 <#4.17>) PostgreSQL Ê1ÓÃμÄһЩÊõÓïμÄo¬ÒåÊÇÊ2à ́£¿ +4.18 <#4.18>) ÎaÊ2à ́ÎÒÊÕμ1⁄2 ́íÎó¡°/ERROR: Memory exhausted in +AllocSetAlloc()/¡±£¿ +4.19 <#4.19>) ÎÒÈçoÎ2ÅÄÜÖaμÀËùÔËÐÐμÄ PostgreSQL μİæ±3⁄4£¿ +4.20 <#4.20>) ÎaÊ2à ́ÎÒμÄ ×ばつ÷μ1⁄4Ö ́íÎó¡°/invalid large obj +descriptor¡±£ ̈·Ç· ̈μÄ ́ó¶ÔÏóÃèÊö·û£©/£¿ +4.21 <#4.21>) ÎÒÈçoÎ ́ ́1⁄2 ̈Ò» ×ばつֶΣ¿ +4.22 <#4.22>) ÎaÊ2à ́Ê1Óà IN ×ばつÓ2éÑ ̄Õâà ́Âý£¿ +4.23 <#4.23>) ÈçoÎ1⁄2øÐÐ outer join £ ̈ÍâÁ¬1⁄2Ó£©£¿ +4.24 <#4.24>) ÈçoÎÊ1ÓÃÉæ1⁄4°¶à ̧öÊý3⁄4Ý¿âμÄ2éÑ ̄£¿ + +4.25 <#4.25>) ÈçoÎÈÃo ̄Êý·μ»Ø¶àÐлò¶àÁУ¿ + +4.26 <#4.26>) ÎaÊ2à ́ÔÚ PL/PgSQL o ̄ÊýÖÐ2»Äܿɿ¿μØ ́ ́1⁄2 ̈»òÉ3⁄43ýÁÙʱ±í£¿ + +4.27 <#4.27>) ÓÐÄÄЩÊý3⁄4Ý ̧ ́ÖÆÑ¡Ï +4.28 <#4.28>) ÓÐÄÄЩÊý3⁄4Ý1⁄4ÓÃÜÑ¡Ï + + + À©Õ1 PostgreSQL + +5.1 <#5.1>) ÎÒÐ ́ÁËÒ» ̧öÓû§¶ ̈Òåo ̄Êý¡£μ±ÎÒÔÚ/ psql/ ÀïÔËÐÐʱ£¬ÎaÊ2à ́»áμ1⁄4Ö +core dump£¿ +5.2 <#5.2>) ÎÒÈçoÎÄÜ ̧ø PostgreSQL ×ばつһЩͦ2» ́íμÄÐÂÀàÐÍoÍo ̄Êý£¿ +5.3 <#5.3>) ÎÒÔõÑùÐ ́Ò» ̧ö·μ»ØÒ»Ìõ1⁄4ÇÂ1⁄4μÄ C o ̄Êý£¿ +5.4 <#5.4>) ÎÒÐÞ ̧ÄÁËÒ» ̧öÔ ́ÎÄ1⁄4þ£¬ÎaÊ2à ́ÖØÐ±àÒëoóûÓп ́μ1⁄2 ̧ı䣿 +------------------------------------------------------------------------ + + + 31ドル⁄4ûÎÊÌâ + + + 1.1) PostgreSQL ÊÇÊ2à ́£¿ ̧ÃÔõà ́·¢Òô£¿ + +PostgreSQL ×ばつ÷ /Post-Gres-Q-L// ¡£/ + +PostgreSQL ÊÇÏÂÒ» ́ú DBMS μÄÑÐ3⁄4¿Ô­ÐÍ POSTGRES Êý3⁄4Ý¿â1ÜÀíÏμÍ3μÄÔöÇ¿°æ¡£ +PostgreSQL ÔÚ±3ドルÖ POSTGRES μÄÇ¿ ́óμÄÊý3⁄4ÝÄ£ÐÍoÍ·á ̧»μÄÊý3⁄4ÝÀàÐÍμÄ»ù ́¡ÉÏ£¬Óà +Ò» ̧öÀ©Õ1ÁËμÄ SQL ×ばつÓ1⁄4 ̄È¡ ́úÁËÔ­ÏÈμÄ PostQuel 2éÑ ̄ÓïÑÔ¡£PostgreSQL ×ばつÔÓÉμÄ +2¢ÇÒËùÓÐÔ ́ ́úÂë¶1⁄4¿ÉÒÔ»ñμᣠ+ +PostgreSQL μÄ¿a·¢ÓÉ2Î1⁄4Ó PostgreSQL ¿a·¢ÓÊ1⁄4þÁбíμÄÒ» ̧ö¿a×ばつé1⁄2øÐС£ +ĿǰμÄЭμ÷ÈËÊÇ Marc G. Fournier £ ̈scrappy@postgreSQL.org + £©¡££ ̈1ØÓÚÈçoÎ1⁄4ÓÈë2Î1⁄4û1.61⁄2Ú£©¡£Õâ ̧ö¶ÓÎé +ÏÖÔÚ ̧oÔð PostgreSQL μÄËùÓпa·¢¡£ + +PostgreSQL 1.01 ×ばつ÷ÕßÊÇ Andrew Yu oÍ Jolly Chen¡£»1ÓÐÐí¶àÆäËûÈËÎaÒÆÖ2£¬ +2âÊÔ£¬μ÷ÊÔoÍÔöÇ¿ ×ばつöÁË ×ばつ¡£PostgreSQL ×ばつî3õÆðÔ ́ Postgres£¬ÊÇÔÚ1⁄4Ó +ÖÝ ́óѧ2®¿ËÀû·ÖУμÄ Michael Stonebraker 1⁄2ÌÊÚμÄÖ ̧μ1⁄4Ï£¬ÓÉÐí¶àÑÐ3⁄4¿Éú£¬±3⁄4¿Æ +Éúoͱà3ÌÖ°Ô±Íê3ÉμÄ¡£ + +Õâ ×ばつÖÊÇ Postgres¡£ÔÚ 1995 Ä꣬μ±Ôö1⁄4ÓÁË SQL ×ばつÖ ̧Ä3É Postgres95¡£ÔÚ 1996ÄêÄ©£¬2Å ̧ÄÃûÎa PostgreSQL¡£ + + + 1.2) PostgreSQL μİæÈ ̈ÊÇÊ2à ́? + +PostgreSQL ÊÜÏÂÃæμİæÈ ̈Ô1⁄4Êø¡£ + +PostgreSQL Êý3⁄4Ý¿â1ÜÀíÏμÍ3 + +£ ̈PostgreSQL Data Base Management System£© + +2¿·Ö°æÈ ̈£ ̈c£©1996-2002£¬PostgreSQL È«Çò¿a×ばつé +2¿·Ö°æÈ ̈£ ̈c£©1994-6 1⁄4ÓÖÝ ́óѧ¶­Ê + +£ ̈Portions copyright (c) 1996-2002, PostgreSQL Global Development Group + Portions Copyright (c) 1994-6 Regents of the University of California£© + +ÔÊÐíÎaÈÎoÎÄ¿μÄÊ1Ó㬿1⁄2± ́£¬ÐÞ ̧ÄoÍ·Ö·¢Õâ ̧öÈí1⁄4þoÍËüμÄÎÄμμ¶ø2»ÊÕÈ¡ÈÎoηÑÓ㬠+2¢ÇÒÎÞÐëÇ©ÊðÒò ́˶ø2úÉúμÄÖ¤Ã÷£¬Ç°ÌáÊÇÉÏÃæμİæÈ ×ばつÖ +3öÏÖÔÚËùÓп1⁄2± ́ÖС£ + +£ ̈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.£© + +ÔÚÈÎoÎÇé¿öÏ£¬1⁄4ÓÖÝ ́óѧ¶1⁄42»3Ðμ£ÒòÊ1Óà ́ËÈí1⁄4þ1⁄4°ÆäÎÄμμ¶øμ1⁄4ÖÂμĶÔÈÎoÎμ±ÊÂÈËμÄ +Ö±1⁄2ÓμÄ£¬1⁄4ä1⁄2ÓμÄ£¬ÌØÊâμÄ£¬ ̧1⁄21⁄4ÓμÄ»òÕßÏà°é¶øÉúμÄËð»μ£¬°üÀ ̈ÀûÒæËðʧμÄÔðÈΣ¬1⁄4 ́ +Ê11⁄4ÓÖÝ ́óѧÒÑ3⁄4­1⁄2 ̈ÒéÁËÕâЩËðʧμÄ¿ÉÄÜÐÔʱÒ2ÊÇÈç ́Ë¡£ + +£ ̈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.£© + +1⁄4ÓÖÝ ́óѧÃ÷È··ÅÆúÈÎoα£Ö¤£¬°üÀ ̈μ«2»3⁄4ÖÏÞÓÚÄ3Ò»ÌØ¶ ×ばつ÷ÊÇ¡±μÄ»ù ́¡μÄ£¬Òò¶ø1⁄4ÓÖÝ ́óѧûÓÐÔðÈÎÌá1©Î¬ +»¤£¬Ö§3Ö£¬ ̧üУ¬ÔöÇ¿»òÕßÐÞ ̧ÄμÄ·þÎñ¡£ + +£ ̈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.£© + +ÉÏÃæ3⁄4ÍÊÇ BSD °æÈ ̈ÉùÃ÷£¬Ò» ̧ö3⁄4­μäμÄ¿aÔ ́°æÈ ̈ÉùÃ÷¡£Ëü¶ÔÔ ́ ́úÂëμÄÊ1ÓÃÎ ×ばつ÷ÈÎoÎ +ÏÞÖÆ¡£ÎÒÃÇÏ2»¶Ëü2¢ÇÒ2» ́òËã ̧ıäËü¡£ + + + 1.3) PostgreSQL ÔËÐÐÔÚÊ2à ́ Unix Æ1⁄2Ì ̈ÉÏ£¿ + +Ò»°ãËμÀ ́£¬Ò» ̧öÏÖ ́úμÄ UNIX 1⁄4æÈÝμÄÆ1⁄2Ì ̈¶1⁄4ÄÜÔËÐÐ PostgreSQL ×ばつ°Ö ̧ÄÏÀïÁÐ +3öÁË·21ドル⁄4ʱ3⁄4­1ýÃ÷È·2âÊÔμÄÆ1⁄2Ì ̈¡£ + + + 1.4) ¿ÉÓÃμÄ·Ç Unix Æ1⁄2Ì ̈ÓÐÄÄЩ£¿ + +¿Í»§¶Ë + +°Ñ libpq C ¿â£¬psql£¬ÆäËû1⁄2Ó¿ÚoͿͻ§¶ËÓ¦ÓÃ3ÌÐò±àÒë3É¿ÉÒÔÔÚ MS Windows Æ1⁄2 +Ì ̈ÉÏÔËÐÐÊÇ¿ÉÄÜμÄ¡£ÕâÖÖÇé¿öÏ£¬¿Í»§¶ËÔÚ MS Windows ÉÏÔËÐУ¬2¢ÇÒÍ ̈1ý +TCP/IP ÓëÒ» ̧öÔËÐÐÔÚÎÒÃÇÖ§3ÖμÄ Unix Æ1⁄2Ì ̈ÉÏμÄ·þÎñÆ÷1⁄2øÐÐÍ ̈Ѷ¡£·21ドル⁄4°æ±3⁄4Öаü +o¬Ò» ̧öÎÄ1⁄4þ win32.mak ÓÃÓÚÉú3É Win32 libpq ¿âoÍ psql ¡£PostgreSQL Ò2¿ÉÒÔ +oÍ ODBC ¿Í»§¶ËÍ ̈Ѷ¡£ + +·þÎñÆ÷ + +Êý3⁄4Ý¿â·þÎñÆ÷ÏÖÔÚ¿ÉÒÔÍ ̈1ý Cygwin £¬Cygnus μÄ Unix/NT ÒÆÖ2¿âÔÚ Windows NT +oÍ Win2k ÉÏÔËÐС2ドルÎÔÄ·21ドル⁄4°æ±3⁄4ÀïμÄ See /pgsql/doc/FAQ_MSWIN/ ÎÄ1⁄4þ»ò +http://www.PostgreSQL.org/docs/faq-mswin.html ¡£ + +ÒÆÖ2μ1⁄2 MS Win NT/2000/XP ×ばつ÷ÕýÔÚ1⁄2øÐС£ + + + 1.5) ÎÒ ́ÓÄÄÀïÄÜμÃμ1⁄2 PostgreSQL£¿ + +PostgreSQL μÄÖ÷ÄäÃûFTPÕ3⁄4μãÊÇ ftp://ftp.PostgreSQL.org/pub£¬3⁄4μÏñÕ3⁄4μã¿ÉÒÔ +2ο1⁄4ÎÒÃÇÍøÕ3⁄4μÄÖ÷Ò3¡£ + + + 1.6) ÎÒ ́ÓÄÄÀïÄÜμÃμ1⁄2¶Ô PostgreSQL μÄÖ§3Ö£¿ + +Ö÷ÒaμÄÓÊ1⁄4þÁбíÊÇ£opgsql-general@postgreSQL.org +¡£¿ÉÒÔÔÚÄÇÀïÌÖÂÛÓÐ1Ø PostgreSQL μÄ +ÎÊÌâ¡£Òa1⁄4ÓÈëÁÐ±í£¬·¢Ò»·âÓÊ1⁄4þÄÚÈÝ£ ̈2»ÊÇÖ÷ÌâÐУ©Îa + + subscribe + end + +μÄÓÊ1⁄4þμ1⁄2 pgsql-general-request@postgreSQL.org + ¡£ + +»1¿ÉÒÔ»ñÈ¡ÕaÒaÁÐ±í¡£Òa1⁄4ÓÈëÕâ ̧öÁÐ±í£¬·¢ÓÊ1⁄4þμ1⁄2£opgsql-general-digest- +request@postgreSQL.org +£¬ÆäÄÚÈÝÎa£o + + subscribe + end + +ÿμ±Ö÷Áбí ́ïμ1⁄2 ́óÔ1⁄4 30k μÄÏûÏ¢ÄÚÈÝʱ£¬ÕaÒa3⁄4Í·¢ËÍ ̧øÕâ ̧öÁбíμÄ3ÉÔ±¡£ + +»1¿ÉÒÔ2Î1⁄4Ó3ô3æÓÊ1⁄4þÁÐ±í¡£Òa1⁄4ÓÈëÕâ ̧öÁÐ±í£¬·¢ËÍÒ» ̧öÓÊ1⁄4þμ1⁄2 +bugs-request@postgreSQL.org £¬ÄÚÈÝÎa£o + + subscribe + end + +»1¿ÉÒÔ2Î1⁄4Ó¿a·¢ÈËÔ±ÓÊ1⁄4þÁÐ±í¡£Òa1⁄4ÓÈëÕâ ̧öÁÐ±í£¬·¢ËÍÒ» ̧öÓÊ1⁄4þμ1⁄2 +hackers-request@postgreSQL.org £¬ +ÄÚÈÝÎa£o + + subscribe + end + +ÆäËûμÄ1ØÓÚ PostgreSQL ÓÊ1⁄4þÁбíoÍÆäËûÐÅÏ¢¿ÉÒÔÔÚ PostgreSQL μÄ WWW Ö÷Ò3ÕÒμ1⁄2£o + + http://postgresql.org/ + +ÔÚ EFNet Àï»1ÓÐÒ» ̧ö IRC ÆμμÀ£¬ÆμμÀ #PostgreSQL¡£ÎÒÓà unix ÃüÁîirc -c +'#PostgreSQL' "$USER" irc.phoenix.net + +ÉÌÒμÖ§3Ö1«Ë3⁄4μÄÁбíÔÚ +http://www.PostgreSQL.org/users-lounge/commercial-support.html ¡£ + + + 1.7) PostgreSQL ×ばつîÐÂμİæ±3⁄4ÊÇÊ2à ́£¿ + +PostgreSQL ×ばつîÐÂμİæ±3⁄4Êǰæ±3⁄4 7.2.3¡££ ×ばつ¢£oÏÖÔÚÓ¦ ̧ÃÊÇ 7.3.1 ÁË¡££© + +ÎÒÃÇ1⁄4Æ»®Ã¿ËÄ ̧öÔ·21ドル⁄4Ò» ̧öÖ÷Òa°æ±3⁄4¡£ + + + 1.8) ÓÐÄÄЩ¿ÉÓÃμÄ PostgreSQL ×ばつÓ¡2ドルÎ1⁄4û /doc Ä¿Â1⁄4¡££ ×ばつ¢£o +Ó¦Îa $PGHOME/doc£©¡£Äã»1¿ÉÒÔÔÚÏßä ̄ÀÀ PostgreSQL μÄÊÖ2ᣬÔÚ +http://www.PostgreSQL.org/users-lounge/docs/ ¡£ + +ÓÐÁ1⁄2±3⁄41ØÓÚ PostgreSQL μÄÊéÔÚÏßÌá1©£¬ÔÚ +http://www.PostgreSQL.org/docs/awbook.html + oÍ +http://www.commandprompt.com/ppbook/ + ¡£ÔÚ +http://www.ca.PostgreSQL.org/books/ + ÉÏÓÐ1ØÓÚ PostgreSQL μÄ¿É1oÊé1⁄4®μÄÁÐ +±í¡£ÔÚ http://techdocs.PostgreSQL.org/ +ÉÏÊÕ1⁄4 ̄ÁËÓÐ1Ø PostgreSQL μÄ1⁄41⁄4ÊõÎÄÕ¡£ + +/psql/ ÓÐһЩ2» ́íμÄ \d ×ばつ÷·û£¬o ̄Êý£¬3⁄4Û1⁄4 ̄μÈμÄÐÅÏ¢¡£ + +ÎÒÃÇμÄ web Õ3⁄4μã°üo¬ ̧ü¶àμÄÎÄμμ£® + + + 1.9) ÎÒÈçoÎÁË1⁄2âÒÑÖaμÄ BUG oÍȱʧμÄÌØÐÔ£¿ + +PostgreSQL Ö§3ÖÒ» ̧öÀ©Õ1ÁËμÄ SQL-92 ×ばつÓ1⁄4 ̄¡2ドルÎÔÄÎÒÃÇμÄ TODO + +ÁÐ±í£¬»ñȡһ ̧öÒÑÖa3ô3æ£¬È±Ê§ÌØ +ÐÔoÍÎ ́À ́1⁄4Æ»®¡£ + + + 1.10) ÎÒÓ¦ ̧ÃÔõÑùѧϰ SQL£¿ + +ÔÚ http://www.postgresql.org/docs/awbook.html μÄ1ØÓÚ PostgreSQL μÄÊé1⁄2ÌÊÚ +SQL¡££ ×ばつ¢£oÎÒÏÂÔØμ1⁄2±3⁄4μØÁË¡££©ÔÚ http://www.commandprompt.com/ppbook + ÓÐÁíÍâÒ»±3⁄41ØÓÚ PostgreSQL μÄÊé¡£ +ÔÚhttp://www.intermedia.net/support/sql/sqltut.shtm£¬http: +//ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM + +oÍ http://sqlcourse.com ÓÐÒ» ̧ö2» ́íμÄÈëÃÅ1⁄2Ì3Ì¡£ + +ÁíÒ» ̧öÊÇ "Teach Yourself SQL in 21 Days, Second Edition"£ ̈21Ììѧ»áSQL£¬ +μÚ¶þ°æ£©£¬ÔÚ http://members.tripod.com/er4ebus/sql/index.htm + + +ÎÒÃÇμÄÐí¶àÓû§Ï2»¶ /The Practical SQL Handbook, Bowman, Judith S., et +al., Addison-Wesley ¡£ / ÆäËûμÄÓÐ/ The Complete Reference SQL, Groff et +al., McGraw-Hill ¡£/ + + + 1.11) PostgreSQL ÊÇ Y2K ×ばつ¿ØÖÆ 2000 AD Ö®oóoÍ 2000 BC ֮ǰμÄÈÕÆÚ¡£ + + + 1.12) ÎÒÓ¦ ̧ÃÔõÑù1⁄4ÓÈë¿a×ばつîÐÂμÄÔ ́ ́úÂë2¢ÔĶÁÎÒÃÇ web Õ3⁄4μã»ò·21ドル⁄4°üÖÐμÄ PostgreSQL ¿a·¢Õß +ÎÄμμ¡£Æä ́Σ¬1⁄4ÓÈë pgsql-hackers oÍ pgsql-patches ÓÊ1⁄4þÁÐ±í¡£μÚÈý£¬Ïò +pgsql-patches Ìá1⁄2» ̧ßÖÊÁ¿μÄ21¶¡3ÌÐò¡£ + +ÏÖÔÚ ́ó ̧ÅÓÐÊ®1⁄4 ̧ ̧öÈËÓÐ PostgreSQL CVS 1éμμ COMMIT μÄÈ ̈ÏÞ¡£ËûÃǶ1⁄4ÒÑ3⁄4­Ìá1⁄2»ÁË +·Ç3£¶à ̧ßÖÊÁ¿μÄ21¶¡ÁË£¬ÒÔÖÁÓÚÏÖÓÐμÄÌá1⁄2»ÈËoÜÄÑ ×ばつ࣬2¢ÇÒÎÒÃÇÏàÐÅËûÃÇÌá +1⁄2»μÄ21¶¡¶1⁄4ÊÇ ̧ßÖÊÁ¿μÄ¡£ + + + 1.13) ÎÒÓ¦ ̧ÃÔõÑùÌá1⁄2»Ò» ̧öBUG± ̈ ̧棿 + +Çë·ÃÎÊ http://www.PostgreSQL.org/bugs/bugs.php μÄ PostgreSQL BugTool Ò3 +Ãæ, ÄÇÀï ̧ø3öÁËÈçoÎÌá1⁄2»Ò» ̧öBUG± ̈ ̧æμÄÖ ̧ÄÏ¡£ + +ͬÑùÒ2Òa¿ ́¿ ́ÎÒÃÇμÄ ftp Õ3⁄4μã ftp://ftp.postgreSQL.org/pub +£¬¿ ́ÓÐûÓÐ ̧üÐÂμÄ PostgreSQL °æ±3⁄4»ò21¶¡¡£ + + + 1.14) PostgreSQL oÍÆäËû DBMS ±ÈÆðÀ ́ÈçoΣ¿ + +ÆÀ1⁄4ÛÈí1⁄4þÓÐoÃ1⁄4 ̧ÖÖ·1⁄2· ̈£oÌØÐÔ£¬ÐÔÄÜ£¬¿É¿¿ÐÔ£¬Ö§3ÖoÍ1⁄4Û ̧ñ¡£ + +*ÌØÐÔ* + PostgreSQL ÓμÓÐ ́óÐÍÉÌÓà DBMS Àï ×ばつÓ2éÑ ̄£¬ ́\·¢ + Æ÷£¬ÊÓÍ1⁄4£¬Íâ1⁄4ü2ο1⁄4ÍêÕûÐÔoÍ ̧ ́ÔÓμÄËøμÈ¡£ÎÒÃÇ»1ÓÐһЩËüÃÇûÓÐμÄÌØÐÔ£¬Èç + Óû§¶ ̈ÒåÀàÐÍ£¬1⁄4Ì3У¬1æÔòoÍ¶à°æ±3⁄42¢ÐпØÖÆÒÔ1⁄4õÉÙËøμÄÕùÓÃμÈ¡£ + +*ÐÔÄÜ* + PostgreSQL oÍÆäËûÉÌÓÃoÍ¿aÔ ́μÄÊý3⁄4Ý¿â3⁄4ßÓÐÀàËÆμÄÐÔÄÜ¡£¶ÔÄ3Щ ́¦ÀíËü±È1⁄2Ï + ¿ì£¬¶ÔÆäËûһЩ ́¦ÀíËü±È1⁄2ÏÂý¡£Óë MySQL »ò ̧üÇá±ãμÄÊý3⁄4Ý¿âÏμÍ3±È1⁄2Ï£¬ÎÒÃÇ + ÔÚ insert/update ʱÂý£¬ÒòÎaÎÒÃÇÓÐÊÂÎñ ́¦Àí¡£μ±È» MySQL 2»3⁄4ßÓÐÎÒÃÇÔÚÉÏ + ÃæμÄ/ÌØÐÔ /¶ÎÀï ̧ø3öμÄÈÎoÎÌØÐÔ¡£ÎÒÃÇμÄÖ÷Òa·1⁄2ÏòÊǿɿ¿ÐÔoÍÌØÐÔ£¬3⁄4¡1ÜÎÒ + ÃÇÔÚÿ ́η21ドル⁄4ʱ2»¶ÏμØ ̧Ä1⁄2øÐÔÄÜ¡£ÓÐÒ» ̧öoÜÓÐȤμÄÍøÒ3±È1⁄2ÏÁË PostgreSQL oÍ + MySQL http://openacs.org/why-not-mysql.html¡£ +*¿É¿¿ÐÔ* + ÎÒÃÇÖaμÀ DBMS ×ばつöμ1⁄2·21ドル⁄43⁄4­ + 1ýÈÏÕæ2âÊÔμÄ£¬Îȶ ×ばつîÉÙμÄ ́úÂ롣ÿ ̧ö°æ±3⁄4ÖÁÉÙÓÐÒ» ̧öÔÂμÄ beta 2â + ÊÔ£¬2¢ÇÒÎÒÃÇμÄ·21ドル⁄4ÀúÊ·ÏÔÊ3⁄4ÎÒÃÇ¿ÉÒÔÌá1©Îȶ ̈μÄ£¬ÀÎ1ÌμÄ£¬¿ÉÓÃÓÚÉú2úÊ1Óà + μİæ±3⁄4¡£ÎÒÃÇÏàÐÅÔÚÕâ·1⁄2ÃæÎÒÃÇÓëÆäËûμÄÊý3⁄4Ý¿âÈí1⁄4þÊÇÏàμ±μÄ¡£ + +*Ö§3Ö* + ÎÒÃÇμÄÓÊ1⁄4þÁбíÌá1©Ò» ̧ö·Ç3£ ́óμÄ¿a×ばつéÒÔ°ïÖú1⁄2â3⁄4öËùÅöμ1⁄2μÄÈÎ + oÎÎÊÌâ¡£ÎÒÃÇ2»Äܱ£Ö¤¿Ï¶ ̈ÄÜ1⁄2â3⁄4öÎÊÌ⣬Ïà±È֮ϣ¬ÉÌÓà DBMS ×ばつÜÄÜ + 1»Ìá1©1⁄2â3⁄4ö·1⁄2· ̈¡£Ö±1⁄2ÓÓë¿a·¢ÈËÔ±£¬Óû§Èo£¬ÊÖ2áoÍÔ ́3ÌÐò1⁄2Ó ́\Áî + PostgreSQL μÄÖ§3Ö±ÈÆäËû DBMS »1Òa×ばつ°μÄÖ§3Ö£¬ + ¿ÉÒÔ ̧øÌá1© ̧øÄÇЩÐèÒaμÄÈË¡££ ̈2ÎÔÄÖ§3Ö FAQ Ìõ¿î 1.6 С1⁄2Ú¡££© + +*1⁄4Û ̧ñ* + ÎÒÃǶÔÈÎoÎÓÃÍ3⁄4¶1⁄4Ãâ·Ñ£¬°üÀ ̈ÉÌÓÃoÍ·ÇÉÌÓÃÄ¿μÄ¡£Äã¿ÉÒÔ2»1⁄4ÓÏÞÖÆμØÏòÄãμÄ2ú + Æ·Àï1⁄4ÓÈëÎÒÃÇμÄ ́úÂ룬3ýÁËÄÇЩÎÒÃÇÔÚÉÏÃæμİæÈ ̈ÉùÃ÷ÀïÉùÃ÷μÄ BSD ·ç ̧ñμÄ + °æÈ ̈Íâ¡£ + + + 1.15) ÎÒÓ¦ ̧ÃÔõÑùÔÞÖú PostgreSQL ×ばつÔ ́Ó1996Äê¿aÊ1⁄4£¬PostgreSQL ÒÑ3⁄4­ÓÐÁËÒ» ×ばつéÖ ̄¡£ÕâЩӦ ̧Ã1é1¦ÓÚ Marc +Fournier£¬ÊÇËû ́ ́1⁄2 ̈ÁË2¢ÔÚÕâЩÄêÒ»Ö±1ÜÀíÕâ ×ばつéÖ ̄¡£ + +¶ÔÓÚÒ» ̧ö¿aÔ ́ÏîÄ¿À ́Ë죬ÖÊÁ¿»ù ́¡ÉèÊ©ÊÇ·Ç3£ÖØÒaμÄ¡£ËüÄÜ·ÀÖ13öÏÖÑÏÖØÑÓ3ÙÏîÄ¿ +ǰ1⁄2øμÄ»ìÂÒ¡£ + +ÏÔÈ»£¬Õâ ×ばつéÖ ×ばつa3ɱ3⁄42»·Æ¡£Î¬3ÖÆäǰ1⁄2øÓÐ ̧÷ÖÖÔ¶ÈμÄ¡¢Ò» ́ÎÐÔμÄ¿aÖ§¡£Èç1û +Äã»òÕßÄãμÄ1«Ë3⁄4ÄÜ1⁄2øÐÐ3⁄4èÔùÒÔÖ§3ÖÕâÏîÊÂÒ죬Çë·ÃÎÊ +http://store.pgsql.com/shopping/ 1⁄2øÐÐ +3⁄4èÔù¡£ + +ËäÈ» ̧ÃÍøÒ3Ìá1⁄4°ÁË PostgreSQL 1«Ë3⁄4£¬ÕâЩ3⁄4èÔù1⁄2«1⁄2öÓÃÓÚÖ§3Ö PostgreSQL ×ばつÊÖúû ̧öÌØ¶ ̈μÄ1«Ë3⁄4¡£Èç1ûÄãÔ ̧Ò⣬Ò2¿ÉÒÔÓÊ1⁄4Ä֧Ʊμ1⁄2ÁaÏμμØÖ·¡£ + +------------------------------------------------------------------------ + + + Óû§¿Í»§¶ËÎÊÌâ + + + 2.1) ÓÐ PostgreSQL μÄ ODBC Çý¶ ̄à ́£¿ + +ÓÐÁ1⁄2 ̧ö ODBC Çý¶ ̄¿ÉÒÔ»ñμã¬PsqlODBC oÍ OpenLink ODBC. + +¿ÉÒÔÔÚhttp://gborg.postgresql.org/project/psqlodbc/projdisplay.php ÏÂÔØ +PsqlODBC ¡£ + +OpenLink ODBC ¿ÉÒÔ ́Ó http://www.openlinksw.com/ ×ばつ1⁄4 +ODBC ¿Í»§¶ËÈí1⁄4þ1⁄4æÈÝ£¬Òò¶øÄã¿ÉÒÔÔÚÈÎoÎËûÃÇÖ§3ÖμĿͻ§¶ËÆ1⁄2Ì ̈£ ̈Win, Mac, +Unix, VMS£©ÉÏÊ1Óà PostgreSQL ODBC¡£ + +ËûÃÇ¿ÉÄÜ1⁄2«Õâ ̧ö2úÆ·ÏúÊÛ ̧øÄÇЩÐèÒa×ばつÜÊÇÓÐÒ» ̧ö freeware +£ ×ばつÔÓÉÈí1⁄4þ£©μİæ±3⁄4¿ÉÒÔμÃμ1⁄2¡£ÇëÑ ̄ÎÊ postgres95@openlink.co.uk +¡£ + + + 2.2) ÓÐÊ2à ́1¤3⁄4ß¿ÉÒÔ°Ñ PostgreSQL ÓÃÓÚ Web Ò3Ãæ£¿ + +Ò» ̧ö1⁄2éÉÜÒÔÊý3⁄4Ý¿âÎaoóÌ ̈μÄͦ2» ́íμÄ Õ3⁄4μãÊÇ£ohttp://www.webreview.com ¡£ + +¶ÔÓÚ Web 1⁄4 ̄3É£¬PHP ÊÇÒ» ̧ö1⁄4«oÃμÄ1⁄2Ó¿Ú¡£ËüÔÚ£ohttp://www.php.net/ ¡£ + +¶ÔÓÚ ̧ ́ÔÓμÄÈÎÎñ£¬oܶàÈË2ÉÓà Perl 1⁄2Ó¿ÚoÍ CGI.pm »ò mod_perl ¡£ + + + 2.3) PostgreSQL ÓμÓÐÍ1⁄4ÐÎÓû§1⁄2çÃæÂ𣿠+ +ÊÇμÄ¡£ÓÐ1⁄4 ̧ ̧öÊÊÓÃÓÚ PostgreSQL μÄÍ1⁄4ÐÎ1⁄2Ó¿Ú¡£°üÀ ̈PgAccess£ ̈http: +//www.pgaccess.com)£¬PgAdmin II £ ̈http://www.pgadmin.org£¬1⁄2öÊÊÓÃÓÚ +Win32£©£¬ RHDB Admin (http://sources.redhat.com/rhdb/£© ÒÔ1⁄4° Rekall +£ ̈http://www.thekompany.com/products/rekall/£¬ ×ばつ ̈ÓÐμÄ/proprietary)¡£»1ÓÐ +PHPPgAdmin £ ̈http://phppgadmin.sourceforge.net/£© + £¬Ò» ̧ö»ùÓÚ web μÄ PostgreSQL ·ÃÎÊ1⁄2Ó +¿Ú¡£ + +ÎÒÃÇÓÐÒ» ̧ö2» ́íμÄÍ1⁄4ÐÎÓû§1⁄2çÃæ£¬3ÆÎa PgAccess ×ばつ÷± ̈±íÉú3ÉÆ÷¡£Íø +Ò3ÊÇ http://www.pgaccess.org/¡£ + + + 2.4) ÎÒÃÇ¿ÉÒÔÓÃÊ2à ́ÓïÑÔoÍ PostgreSQL ́ò1⁄2»μÀ£¿ + + ́ó¶àÊýÁ÷ÐÐμıà3ÌÓïÑÔ¶1⁄4ÓзÃÎÊ PostgreSQL μÄ1⁄2Ó¿Ú¡£Çë1⁄4ì2é±à3ÌÓïÑÔμÄÀ©Õ1Ä£¿é +ÁÐ±í¡£ + +PostgreSQL ·21ドル⁄4°üÖаüo¬ÁËÒÔÏÂ1⁄2Ó¿Ú£o + + * C (libpq) + * Embedded C (ecpg) + * Java (jdbc) + * Python (PyGreSQL) + * TCL (libpgtcl) + +ÆäËûμÄ1⁄2Ó¿ÚÔÚ http://gborg.postgresql.org ÉÏμÄ /Drivers/Interfaces/ С1⁄2Ú¡£ + +------------------------------------------------------------------------ + + + ÏμÍ31ÜÀíÎÊÌâ + + + 3.1) ÎÒÔõÑùÄÜ°Ñ PostgreSQL ×ばつ°ÔÚ /usr/local/pgsql ÒÔÍâμÄμØ·1⁄2£¿ + +ÔÚÔËÐÐ configure ʱ1⁄4ÓÉÏ --prefix Ñ¡Ïî¡£ + + + 3.2) μ±ÎÒÔËÐÐ postmaster ʱ£¬3öÏÖ/ Bad System Call/£ ̈ÏμÍ3μ÷Óà + ́í£©»ò Core Dumped ́íÎó¡£ÎaÊ2à ×ばつ÷ÏμÍ3oËÐÄÊÇ·ñÖ§3Ö System V À©Õ1¡£ +PostgreSQL ÐèÒaÄÚoËÖ§3Ö12ÏíÄÚ ́æoÍÐÅoÅμÆ¡£ + + + 3.3) μ±ÎÒÊÔÍ1⁄4ÔËÐÐ postmaster ʱ£¬3öÏÖ /IpcMemoryCreate/ ́íÎó¡£Îa + Ê2à ́£¿ + +ÄãÒaà ́ÊÇûÓÐÔÚÄÚoËÀïÕýÈ·ÅäÖÃ12ÏíÄÚ ́棬Òaà ́ÊÇÄãÐèÒaÀ© ́óÄãμÄÄÚoËμÄ¿ÉÓÃ12Ïí +ÄÚ ́æ¡£ÐèÒaμÄ12ÏíÄÚ ́æ3⁄4ßÌåμÄÊýÁ¿È¡3⁄4öÓÚÄãμÄÌåÏμ1⁄2á11oÍÄãÅäÖÃÄãμÄ postmaster +ÔËÐÐʱÊ1ÓÃμÄ»o3åÇøoÍoó¶Ë1⁄2ø3ÌÊýÄ¿¡£¶Ô ×ばつîÉÙÐèÒa~1MB¡£ÓÐ1Ø12ÏíÄÚ ́æoÍÐÅoÅμÆμÄÏêÏ ̧ÐÅÏ¢Çë2ο1⁄4 PostgreSQL +Administrator's Guide + ¡£ + + + 3.4) μ±ÎÒÊÔÍ1⁄4ÔËÐÐ postmaster ʱ£¬3öÏÖ /IpcSemaphoreCreate/ ́í + Îó¡£ÎaÊ2à ́£¿ + +Èç1û ́íÎóÐÅÏ¢ÊÇ /IpcSemaphoreCreate: semget failed (No space left on +device)/£¬ÄÇà ×ばつÊÔ ́¡£Postgres μÄÿ ̧öDZ +ÔÚμÄoóÌ ̈1⁄2ø3̶1⁄4ÐèÒaÒ» ̧öÐÅoÅμÆ¡£Ò» ̧öÁÙʱμÄ1⁄2â3⁄4ö·1⁄2· ̈ÊÇÒÔ±È1⁄2ÏÉÙμÄoóÌ ̈1⁄2ø3ÌÊý +£ ̈2ÎÊý£©Æô¶ ̄ postmaster¡£Ê1Óÿa1Ø /-N/ ́øÒ» ̧öÉÙÓÚȱʡÖμ 32 μÄ2ÎÊýÔËÐÐ +postmaster¡£ ̧ü3¤3⁄4ÃμÄ1⁄2â3⁄4ö·1⁄2· ̈ÊÇ1⁄4Ó ́óÄãμÄÄÚoËμÄ SEMMNS oÍ SEMMNI 2ÎÊý¡£ + +ÔÚÊý3⁄4Ý¿â·ÃÎÊÁ¿oÜ ́óʱ£¬ÐÅoÅμÆ2»¿ÉÓÿÉÄÜμ1⁄4ÖÂÏμÍ3±ÀÀ£¡£ + +Èç1û ́íÎóÐÅÏ¢ÊÇÆäËûμÄÊ2à ́¶«Î÷£¬Äã¿ÉÄÜ3⁄4Í ̧ù±3⁄4ûÓÐÔÚÄÚoËÀïÃæÅäÖÃÐÅoÅμÆÖ§3Ö¡£ +ÓÐ1Ø12ÏíÄÚ ́æoÍÐÅoÅμÆμÄÏêÏ ̧ÐÅÏ¢Çë2ο1⁄4 PostgreSQL Administrator's Guide + ¡£ + + + 3.5) ÎÒÈçoοØÖÆÀ ×ばつÔÆäËûÖ÷»úμÄÁ¬1⁄2Ó£¿ + +ȱʡʱ£¬PostgreSQL Ö»ÔÊÐíÍ ̈1ý unix ×ばつÖÀ ×ばつÔ±3⁄4»úμÄÁ¬1⁄2Ó¡3ドルý·ÇÄãÊ1Óà +/-i/ ¿a1ØÆô¶ ̄ /postmaster/£¬*2¢ÇÒ*Í ̈1ý¶ÔÓ¦μıà1⁄4­ /$PGDATA/pg_hba.conf/ +ÎÄ1⁄4þ ́ò¿aÁËÖ÷»úÎa»ù ́¡£ ̈ host-based £©μÄÈÏÖ¤£¬·ñÔòÆäËû»úÆ÷ÊÇ2»ÄÜÓëÄãμÄ»úÆ÷ +Á¬1⁄2ÓμÄ¡£ÕâÑù1⁄2«ÔÊÐí TCP/IP Á¬1⁄2Ó¡£ + + + 3.6) ÎÒÔõÑùμ÷ÕûÊý3⁄4Ý¿âÒýÇæÒÔ»ñμà ̧üoÃμÄÐÔÄÜ£¿ + +μ±È»£¬Ë÷Òý¿ÉÒÔ1⁄4ÓËÙ2éÑ ̄¡£EXPLAIN ÃüÁîÔÊÐíÄã1Û2ì PostgreSQL ÈçoÎ1⁄2âÊÍÄãμÄ2é +Ñ ̄£¬ÒÔ1⁄4°Ê1ÓÃÁËÄÄЩË÷Òý¡£ + +Èç1ûÄãÕý ́¦ÀíÒ»¶Ñ INSERT£¬¿1⁄4ÂÇÊ1Óà COPY ÃüÁîÒÔ ×ばつö±È +μ\¶ÀμÄÒ» ̧ö ̧ö INSERT ¿ìμöࡣÆä ́Σ¬Ã»ÓÐ ́¦ÓÚ BEGIN WORK/COMMIT ÊÂÎñ¿éÖ®1⁄4ä +μÄÓï3⁄4ä±»ÈÏÎaÊôÓÚͬһ ×ばつÅÔÚÒ» ̧öÊÂÎñ¿éÀïÃæ ́¦Àí ̧ü¶àμÄÓï3⁄4ä¡£ÕâÑù¿ÉÒÔ +1⁄4õÉÙÊÂÎñ ́øÀ ́μĶîÍâ¿a×ばつö ́óÁ¿μÄÊý3⁄4Ý ̧ıäʱ¿1⁄4ÂÇÉ3⁄43ýoÍÖØ1⁄2 ̈Ë÷Òý¡£ + +»1ÓÐ1⁄4 ̧ ̧öμ÷1⁄2ÚμÄÑ¡Ïî¿ÉÒÔÊ1Óá£Äã¿ÉÒÔÍ ̈1ý ́ø /-o -F/ Ñ¡ÏîÆô¶ ̄ postmaster À ́ +1⁄2ûÖ1 fsync()¡£ÕâÑù1⁄2«±ÜÃâÿ ́ÎÊÂÎñoóμ÷Óà /fsync() / °ÑÊý3⁄4ÝË¢ÐÂμ1⁄2 ́ÅÅÌÉÏ¡£ + +Äã»1¿ÉÒÔÊ1Óà postmaster -B Ñ¡ÏîÔö1⁄4Óoó¶Ë1⁄2ø3ÌÊ1ÓÃμÄ12ÏíÄÚ ́æ»o3åμÄÊýÄ¿¡£Èç +1ûÄã°ÑÕâ ̧ö2ÎÊýÉèÖÃμÃÌ« ́ó£¬postmaster ¿ÉÄÜÎÞ· ̈Æô¶ ̄£¬ÒòÎaÄãÒÑ3⁄4­3¬1ýÁËÄãμÄ +ÄÚoËÔÚ12ÏíÄÚ ́æ¿Õ1⁄4äÉÏμÄÏÞÖÆ¡£Ã¿ ̧ö»o3åÇøÊÇ 8K 2¢ÇÒȱʡ 64 ̧ö»o3åÇø¡£ + +Äã»1¿ÉÒÔÊ1ÓÃoóÌ ̈1⁄2ø3ÌμÄ -S Ñ¡ÏîÀ ́Ôö1⁄4Óÿ ̧öoóÌ ×ばつî ́óÄÚ ́æ +ÊýÁ¿¡£-S ×ばつÖ1⁄2Ú1⁄4ÆμÄ£¬È±Ê¡ÊÇ 512 £ ̈Ò23⁄4ÍÊÇË죬512K£©¡£ + +Äã»1¿ÉÒÔÊ1Óà CLUSTER ÃüÁîÀ ́°Ñ±íÀïμÄÊý3⁄4ݰ ́ÕÕÄ3 ̧öË÷Òý1⁄2øÐÐ3⁄4Û1⁄4 ̄ ́æ·Å¡2ドルÎÔÄ +CLUSTER μÄÊÖ2áÒ3»ñÈ¡ ̧ü¶àÏ ̧1⁄2Ú¡£ + + + 3.7) PostgreSQL Àï¿ÉÒÔ»ñμÃÊ2à ́ÑùμÄμ÷ÊÔÌØÐÔ£¿ + +PostgreSQL ÓÐ1⁄4 ̧ ̧öÌØÐÔÓÃÓÚ± ̈ ×ばつ ×ばつÏÈ£¬Í ̈1ý ̧1⁄2 ́ø --enable-cassert Ñ¡ÏîÔËÐÐ configure£¬ÓÐoܶà /assert()/ 1⁄4à +¿ØoóÌ ̈1⁄2ø3ÌoÍÔÚ·¢ÉúÄ3ЩΠ́ÔøÔ¤ÁÏμÄÏÖÏóʱͣÖ13ÌÐòÔËÐС£ + +postmaster oÍ postgres ×ばつÏÈ£¬μ±ÄãÆô¶ ̄ postmaste×ばつ1⁄4 ́íÎóÊä3ö¶ ̈Ïòμ1⁄2ÁËÒ» ̧öÈÕÖ3⁄4ÎÄ1⁄4þÀïÈ\ÁË£¬Ïó£o + + cd /usr/local/pgsql + ./bin/postmaster>server.log 2>&1 & + +ÕâÑù1⁄2«ÔÚ PostgreSQL ¶1円⁄4¶Ä¿Â1⁄4ÏÂÊä3öÒ» ̧ö server.log ÎÄ1⁄4þ¡£Õâ ̧öÎÄ1⁄4þ°üo¬·þÎñ +Æ÷Åöμ1⁄2μÄÎÊÌâoÍ ́íÎóμÄÓÐÓÃÐÅÏ¢¡£postmaster ÓÐÒ» ̧ö -d Ñ¡Ï ̧ÃÑ¡ÏîÔÊÐíÎÒÃÇ +»ñμà ̧ü¶àμÄÏ ̧1⁄2ڻ㱠̈¡£-d Ñ¡Ïî1⁄2ÓÊÜÒ» ×ばつÖ±êÃ÷μ÷ÊÔ1⁄4¶±ð¡£ÐèÒa3⁄4 ̄ ̧æμÄÊÇ ̧ßμÄμ÷ +ÊÔ1⁄4¶±ð¿ÉÄÜ»áÉú3É3⁄4Þ ́óμÄÈÕÖ3⁄4ÎÄ1⁄4þ¡£ + +Èç1û postmaster ûÓÐÔËÐУ¬Äã¿ÉÒÔÖ±1⁄2ÓÔÚÃüÁîÐÐÉÏÆô¶ ̄ postgres oóÌ ̈1⁄2ø3Ì£¬È» +oóÖ±1⁄2Ó1⁄4üÈë SQL Óï3⁄4ä¡£ÎÒÃÇ*Ö»* ÍÆ1⁄4öÔÚμ÷ÊÔμÄʱoòÕâà ́ ×ばつ¢ÒâÕâʱÓû»ÐÐÜÞ +¶ø2»ÊÇ·ÖoűíÊ3⁄4Óï3⁄4ä1⁄2áÎ2¡£Èç1ûÄã ×ばつÅμ÷ÊÔ·ûoűàÒ룬Äã¿ÉÒÔÊ1ÓÃÒ» ̧öμ÷ÊÔÆ÷1Û¿ ́ +·¢ÉúÁËÊ2à ́ÊÂÇé¡£ÒòÎaoóÌ ̈1⁄2ø3ÌûÓÐÓÉ postmaster Æô¶ ̄μÄ£¬Ëü2»ÊÇoÍÊμ1⁄4ÊμÄÔËÐÐ +»·3⁄43Ò»Ö£¬¶øÇÒËø¶ ̈/oóÌ ̈1⁄2»»\ÎÊÌâ¿ÉÄÜ2»ÄÜÖØÏÖ¡£ + +Èç1û postmaster ÒÑ3⁄4­ÔËÐУ¬¿ÉÔÚÒ» ̧ö ́°¿ÚÖÐÆô¶ ̄ /psql/£¬È»oóÕÒ3ö /psql/ ¶Ô +Ó¦μÄ /postgres/ 1⁄2ø3ÌμÄ PID¡£Ê1ÓÃÒ» ̧öμ÷ÊÔÆ÷ ×ばつÅÔÚÕâ ̧ö /postgres /PID ÉÏ¡£ +Äã¿ÉÒÔÔÚμ÷ÊÔÆ÷ÀïÉèÖöÏμã2¢ÇÒ ́Ó /psql/ ÀïÖ ́ÐÐ2éÑ ̄¡£Èç1ûÄãÔÚμ÷ÊÔ +/postgres/ μÄÆô¶ ̄£¬Äã¿ÉÒÔÉèÖà PGOPTIONS="-W n"£¬È»oóÆô¶ ̄ /psql/¡£ÕâÑù1⁄2« +μ1⁄4ÖÂÆô¶ ̄ÑÓ3Ù /n/ Ã룬ÕâÑùÄã3⁄4Í¿ÉÒÔ ̧1⁄21⁄4ÓÒ» ̧öμ÷ÊÔÆ÷2¢ÇÒ ×ばつÙÆô¶ ̄Ë3ÐòμÄ1ý3Ì¡£ + +postgres 3ÌÐòÓÐ -s£¬-A£¬oÍ -t Ñ¡Ïî¿ÉÄÜÔÚμ÷ÊÔoÍÐÔÄÜ2âÁ¿μÄʱoò·Ç3£ÓÐÓᣠ+ +Äã»1¿ÉÒÔ ́ø profiling Ö§3Ö±àÒëoóÌ ̈£¬ÒÔ±ã1Û2ìÄÄЩo ̄ÊýÕ1⁄4ÓÃμÄÖ ́ÐÐʱ1⁄4ä1⁄2϶ࡣ +profile ÎÄ1⁄4þ1⁄2«·ÅÔÚ pgsql/data/base/dbname Ä¿Â1⁄4Ï¡£¿Í»§¶Ë profile ÎÄ1⁄4þ1⁄2« +·ÅÔÚ¿Í»§¶Ëμ±Ç°Ä¿Â1⁄4Ï¡£ÔÚ Linux ÏÂÖ§3Ö profiling ÒaÔÚ±àÒëʱ1⁄4ÓÉÏ/- +DLINUX_PROFILE / ¡£ + + + 3.8) ÎaÊ2à ́ÔÚÊÔÍ1⁄4Á¬1⁄2ÓμÇÂ1⁄4ʱÊÕμ1⁄2¡°Sorry, too many clients¡±ÏûÏ¢£¿ + +ÄãÐèÒaÔö ́ó postmaster Æô¶ ̄ʱ֧3ÖμÄ2¢·¢oóÌ ̈1⁄2ø3ÌÊý¡£ + +ȱʡÏÞÖÆÊÇ 32 1⁄2ø3Ì¡£Äã¿ÉÒÔÍ ̈1ý ×ばつÅÊÊμ±μÄ /-N/ Öμ¿a1ØÆô¶ ̄ postmaster Ôö1⁄4Ó +Õâ ̧öÊýÄ¿¡£»òÕßÐÞ ̧Ä /postgresql.conf/ ÎÄ1⁄4þ¡£ + +Òa×ばつ¢ÒâÈç1ûÄã°Ñ /-N/ ÉèÖÃÎa ́óÓÚ 32£¬Äã±ØÐëͬÑùÔö ́ó /-B/£¬3¬1ýËüȱʡμÄ +64£»-B ×ばつîÉÙÊÇ -N μÄÁ1⁄2±¶£¬¶øÇÒÎaÁË ̧üoÃμÄÐÔÄÜ¿ÉÄÜÒa±ÈÄÇ ×ばつÖÒa ́ó¡£¶Ô +ÓÚ ́óÊýÄ¿μÄoó¶Ë1⁄2ø3Ì£¬Äã¿ÉÄÜ»1»á·¢ÏÖÄã»1ÐèÒaÔö1⁄4ÓÐí¶à Unix ÄÚoËÅäÖÃ2ÎÊýÖμ¡£ +Òa1⁄4ì2éμĶ«Î÷°üÀ ̈12ÏíÄÚ ×ばつî ́ó3ß ×ばつî ́óÊýÄ¿£¬SEMMNS +oÍ ×ばつî ×ばつî ́ó1⁄2ø3ÌÊý£¬MAXUPRC£¬ÒÔ1⁄4° ́ò¿a×ばつî ́óÊýÄ¿£¬NFILE oÍ NINODE ¡£Postgres ¶ÔÔÊÐíμÄoóÌ ̈1⁄2ø3ÌÊýÓÐÏÞÖÆμÄÔ­ÒòÊÇ +Îa×ばつÊÔ ́¡£ + +ÔÚ Postgres ÔçÓÚ 6.5 ×ばつî ́óoóÌ ̈1⁄2ø3ÌÊýȱʡÊÇ 64£¬2¢ÇÒ¶ÔËüμÄÐÞ ×ばつÏÈ +ÐèÒaÐÞ ̧Ä /include/storage/sinvaladt.h/ ÀïμÄ MaxBackendId 3£Á¿£¬È»oóÖØÐ +BUILD¡£ + + + 3.9) pgsql_tmp Ä¿Â1⁄4Àï¶1⁄4ÓÐЩÊ2à ́£¿ + + ̧ÃÄ¿Â1⁄4ϱ£ ́æÁË2éÑ ̄Ö ́ÐÐÆ÷Éú3ÉμÄÁÙʱÎÄ1⁄4þ¡£ÀýÈ磬Èç1ûÐèÒaÎa×ばつã ORDER BY ×ばつöÅÅÐò£¬2¢ÇÒÅÅÐòÐèÒa±ÈoóÌ ̈μÄ -S 2ÎÊý ̧ø3öμÄ ̧ü¶àμÄ¿Õ1⁄4䣬ÄÇà ́3⁄4Í»á ́ ́1⁄2 ̈Ò» ̧ö +ÁÙʱÎÄ1⁄4þ±£ ́æ¶à3öÀ ́μÄÊý3⁄4Ý¡£ + +ÁÙʱÎÄ1⁄4þÓ¦ ×ばつÔ¶ ̄É3⁄43ý£¬2»1ýÈç1ûÔÚÅÅÐò1ý3ÌÖÐoóÌ ̈±ÀÀ£ÁË3⁄4Í¿ÉÄÜÁôÏÂÀ ́¡£Í£Ö12¢ +ÖØÆð postmaster 1⁄2«»áÉ3⁄43ýÕâЩÎÄ1⁄4þ¡£ + + + 3.10) ÎaÊ2à ́ÒaÔÚÉý1⁄4¶ PostgreSQL ×ばつö dump oÍ restore £¿ + +PostgreSQL ¿a×ばつé¶Ôÿ ×ばつöÁË1⁄2ÏÉÙμÄÐÞ ̧Ä,Òò ́Ë ́Ó 7.2 Éý1⁄4¶μ1⁄2 7.2.1 +2»ÐèÒa dump oÍ restore¡£μ«ÊÇÖ÷ÒaμÄÉý1⁄4¶£ ̈ÀýÈç ́Ó 7.2 μ1⁄2 7.3£©Í ̈3£»áÐÞ ̧ÄÏμ +Í3±íoÍÊý3⁄4ݱíμÄÄÚ2¿ ̧ñÊ1⁄2¡£ÕâЩ±ä» ̄Ò»°ã±È1⁄2Ï ̧ ́ÔÓ£¬Òò ́ËÎÒÃÇ2»Î¬Êý3⁄4ÝÎÄ1⁄4þμÄÏòoó +1⁄4æÈÝ¡£dump 1⁄2«Êý3⁄4ݰ ́ÕÕÍ ̈ÓÃμÄ ̧ñÊ1⁄2Êä3ö£¬Ëæoó¿ÉÒÔ±»ÖØÐÂ1⁄4ÓÔØ2¢Ê1ÓÃÐÂμÄÄÚ2¿ ̧ñÊ1⁄2¡£ + + ́ÅÅÌÎÄ1⁄4þ ̧ñÊ1⁄2ûÓÐ±ä» ̄μÄÉý1⁄4¶£¬¿ÉÒÔÓà /pg_upgrade/ 1⁄2ű3⁄4£¬¶ø2»ÐèÒa×ばつö dump oÍ +restor¡£·21ドル⁄4ËμÃ÷script »áÖ ̧Ã÷ /pg_upgrade/ ¶Ô ̧à ́ÎÉý1⁄4¶ÊÇ·ñ¿ÉÓᣠ+ +------------------------------------------------------------------------ + + + ×ばつ÷ÎÊÌâ + + + 4.1) ¶þ1⁄2øÖÆÓαêoÍÆÕÍ ̈ÓαêÖ®1⁄4äμÄÇø±ðÊÇÊ2à ́£¿ + +2ÎÔÄ DECLARE ÊÖ2áÒ3»ñÈ¡ÐÅÏ¢¡£ + + + 4.2)ÈçoÎÖ» SELECT Ò» ̧ö2éÑ ̄1⁄2á1ûμÄÍ·1⁄4 ̧ÐУ¿ + +2ÎÔÄ FETCH ÊÖ2áÒ3£¬»òÕßÊ1Óà SELECT ... LIMIT.... + +1⁄4 ́Ê1ÄãÖ»ÐèÒa¿aÍ·μÄ1⁄4 ̧ÐУ¬Ò2»áÉæ1⁄4°μ1⁄2Õû ̧ö2éÑ ×ばつÅÊ1Óà ́øÓÐ ORDER BY μÄ2é +Ñ ̄¡£Èç1ûÓÐÒ» ̧öË÷ÒýÓë ORDER BY Æ\Å䣬PostgreSQL ¿ÉÄÜ3⁄4ÍÖ» ́¦ÀíÒaÇóμÄÍ·1⁄4 ̧Ìõ +1⁄4ÇÂ1⁄4£¬·ñÔò1⁄2«¶ÔÕû ̧ö2éÑ ̄1⁄2øÐÐ ́¦ÀíÖ±μ1⁄2Éú3ÉÐèÒaμÄÐС£ + + + 4.3) ÎÒÈçoλñȡһ ̧ö±íμÄÁÐ±í£¬»òÕßÊÇÆäËûÎÒÄÜÔÚ /psql/ Àï¿ ́μ1⁄2μĶ«Î÷£¿ + +Äã¿ÉÒÔÔĶÁ /psql/ μÄÔ ́ ́úÂëÎÄ1⁄4þ/pgsql/src/bin/psql/describe.c/ ¡£Ëü°üÀ ̈Îa +Éú3É psql μÄ· ́б ̧ÜÃüÁîμÄÊä3öμÄ SQL ÃüÁî¡£Äã»1¿ÉÒÔ ́ø /-E/ Ñ¡ÏîÆô¶ ̄ +/psql/£¬ÕâÑùËü1⁄2« ́òÓ¡3öÖ ́ÐÐÄã ̧ø3öμÄÃüÁîËùÓÃμÄ2éÑ ̄¡£ + + + 4.4) ÔõÑù ́Ó±íÀïÃæÉ3⁄43ýÒ»ÁУ¿ + +7.3 ÀïÔö1⁄4ÓÁË ALTER TABLE DROP COLUMN£¬ÒÔÖ§3Ö ×ばつö£o + + BEGIN; + LOCK TABLE old_table; + SELECT ... -- select all columns but the one you want to remove + INTO TABLE new_table + FROM old_table; + DROP TABLE old_table; + ALTER TABLE new_table RENAME TO old_table; + COMMIT; + + + 4.5) Ò»ÐУ¬Ò» ̧ö±í£¬Ò» ×ばつî ́ó3ß ́çÊǶàÉÙ£¿ + +ÏÂÃæÊÇһЩÏÞÖÆ£o + + Ò» ×ばつî ́ó3ß ́磿 ÎÞÏÞÖÆ£ ̈ ́æÔÚ 1TB μÄÊý3⁄4ݿ⣩ + Ò» ×ばつî ́ó3ß ́磿 16TB + ×ばつî ́ó3ß ́磿 1.6TB + Ò» ×ばつî ́ó3ß ́ç? 1GB + Ò» ×ばつî ́óÐÐÊý£¿ ÎÞÏÞÖÆ + Ò» ×ばつî ́óÁÐÊý£¿ ̧úÁÐÀàÐÍÓÐ1Ø,250-1600 + Ò» ×ばつî ́óË÷ÒýÊýÁ¿£¿ÎÞÏÞÖÆ + +μ±È»£¬Êμ1⁄4ÊÉÏûÓÐÕæÕýμÄÎÞÏÞÖÆ£¬»1ÊÇÒaÊÜ¿ÉÓà ́ÅÅÌ¿Õ1⁄4ä¡¢¿ÉÓÃÄÚ ×ばつî ́ó3ß ́ç 16 TB 2»ÐèÒa×ばつ÷ÏμÍ3¶Ô ́óÎÄ1⁄4þμÄÖ§3Ö¡£ ́ó±íÓöà ̧ö 1 GB μÄÎÄ1⁄4þ + ́æ ́¢£¬Òò ́ËÎÄ1⁄4þÏμÍ33ß ́çμÄÏÞÖÆÊÇ2»ÖØÒaμÄ¡£ + +Èç1ûȱʡμÄ¿é ́óСÔö3¤μ1⁄2 32K ×ばつî ́óμıí3ß ×ばつî ́óÁÐÊý¿ÉÒÔÔö1⁄4Ó¡£ + + + 4.6) ́æ ́¢Ò» ̧öμäÐÍμÄÆ1⁄2ÃæÎÄ1⁄4þÀïμÄÊý3⁄4ÝÐèÒa¶àÉÙ ́ÅÅÌ¿Õ1⁄4䣿 + +Ò» ̧ö Postgres ×ばつî¶à¿ÉÄÜÐèÒaÏàμ±ÓÚÔÚÒ» ̧öÆ1⁄2ÃæÎÄ1⁄4þÀï ́æ ́¢ÏàͬÊý3⁄4ÝμÄ5±¶ +μÄ ́ÅÅÌ¿Õ1⁄4ä¡£ + +ÀýÈ磬1⁄4ÙÉèÓÐÒ» ̧ö 100,000 ÐÐμÄÎÄ1⁄4þ£¬Ã¿ÐÐÓÐÒ» ̧öÕûÊýoÍÒ» ̧öÎı3⁄4ÃèÊö¡1ドル⁄4ÙÉèÎÄ +±3⁄4 ×ばつÖ1⁄2Ú¡£Æ1⁄2ÃæÎÄ1⁄4þÕ1⁄4Óà 2.8 MB¡£ ́æ·ÅÕâЩÊý3⁄4ÝμÄ PostgreSQL +Êý3⁄4Ý¿âÎÄ1⁄4þ ́óÔ1⁄4ÊÇ 6.4 MB: + + 36 ×ばつÖ1⁄2Ú: ÿÐÐμÄÍ·£ ̈1À1⁄4ÆÖ죩 + 24 ×ばつÖ1⁄2Ú: Ò» ̧öin×ばつÖ¶ÎoÍÒ» ×ばつÖ¶Î + + 4 ×ばつÖ1⁄2Ú: Ò3ÃæÄÚÖ ̧ÏòÔa×ばつéμÄÖ ̧Õë + ---------------------------------------- + 64 ×ばつÖ1⁄2ÚÿÐÐ + + PostgreSQL Êý3⁄4ÝÒ3μÄ ́óСÊÇ 8192 ×ばつÖ1⁄2Ú (8 KB)£¬Ôò£o + + 8192 ×ばつÖ1⁄2ÚÿÒ3 +たす -ひく-ひく-ひく-ひく-ひく-ひく-ひく-ひく-ひく-ひく-ひく-ひく-ひく-ひく-ひく-ひく-ひく-ひく-ひく = 128 ÐÐ/Êý3⁄4ÝÒ3£ ̈ÏòÏÂÈ¡Õû£© + 64 ×ばつÖ1⁄2ÚÿÐÐ + + 100000 Êý3⁄4ÝÐÐ + -------------------- = 782 Êý3⁄4ÝÒ3£ ̈ÏòÉÏÈ¡Õû£© + 128 ÐÐÿÒ3 + + 782 Êý3⁄4ÝÒ3 * 8192 ×ばつÖ1⁄2Ú/Ò3 = 6,406,144 ×ばつÖ1⁄2Ú£ ̈6.4 MB£© + +Ë÷Òý2»ÐèÒaÕâà ́¶àμĶîÍâÏûoÄ£¬μ«Ò2È·Êμ°üÀ ̈±»Ë÷ÒýμÄÊý3⁄4Ý£¬Òò ́ËËüÃÇÒ2¿ÉÄÜoÜ ́ó¡£ + +¿ÕÖμ ́æ·ÅÔÚλÍ1⁄4ÖУ¬Òò ́ËÕ1⁄4ÓÃoÜÉÙμÄ¿Õ1⁄4ä¡£ + + + 4.7) ÈçoÎ2é¿ ́±í¡¢Ë÷Òý¡¢Êý3⁄4Ý¿âÒÔ1⁄4°Óû§μĶ ̈Ò壿 + +/ psql/ ÓÐÐí¶à· ́б ̧ÜÃüÁîÓÃÓÚÏÔÊ3⁄4ÕâЩÐÅÏ¢¡£Óà \? ¿ ́¿ ́¶1⁄4ÓÐÄÄЩ¡£ÒÔ pg_ ́ò +Í·μÄÏμÍ3±íÒ2ÃèÊöÁËÕâЩÐÅÏ¢¡£ psql -l ¿ÉÒÔÁÐ3öËùÓÐμÄÊý3⁄4ݿ⡣ + +Ò2¿ÉÒÔÊÔÊÔÎÄ1⁄4þ /pgsql/src/tutorial/syscat.source/¡£ËüÑÝÊ3⁄4ÁËÐí¶à ́ÓÊý3⁄4Ý¿â +ÏμÍ3±íÀï»ñÈ¡ÐÅÏ¢ÐèÒaμÄ SELECT¡£ + + + 4.8) ÎÒμÄ2éÑ ̄oÜÂý»òÕßûÓÐÀûÓÃË÷Òý¡£ÎaÊ2à ́£¿ + +2¢·Çÿ ̧ö2éÑ ×ばつÔ¶ ̄Ê1ÓÃË÷Òý¡£Ö»ÓÐÔÚ±íμÄ ́óС3¬1ýÒ» ×ばつîСÖ죬2¢ÇÒ2éÑ ֻ̄ѡ +Ôñ±íÖÐ1⁄2ÏС±ÈÀýμÄÐÐʱ2ÉÓÃÊ1ÓÃË÷Òý¡£ÕâÊÇÒòÎaË÷ÒýÉ ̈ÃèÒýÆðμÄËæ1⁄4 ́ ́ÅÅÌ ́æÈ¡¿ÉÄÜ +±ÈÖ±1⁄2ÓμØ¶ÁÈ¡±í£ ̈Ë3ÐòÉ ̈Ã裩 ̧üÂý¡£ÎaÁËÅжÏÊÇ·ñÊ1ÓÃË÷Òý£¬PostgreSQL ±ØÐë»ñ +μÃÓÐ1رíμÄÍ31⁄4ÆÖμ¡£ÕâЩÍ31⁄4ÆÖμ¿ÉÒÔÊ1Óà VACUUM ANALYZE£¬»ò ANALYZE »ñμá£Ê1 +ÓÃÍ31⁄4ÆÖ죬ÓÅ» ̄Æ÷ÖaμÀ±íÖÐÓжàÉÙÐУ¬3⁄4ÍÄÜ1» ̧üoÃμØÅжÏÊÇ·ñÀûÓÃË÷Òý¡£Í31⁄4ÆÖμ¶Ô +È·¶ ̈ÓÅ» ̄μÄÁ¬1⁄2ÓË3ÐòoÍÁ¬1⁄2Ó·1⁄2· ̈Ò2oÜÓÐÓá£ÔÚ±íμÄÄÚÈÝ·¢Éú±ä» ̄ʱ£¬Ó¦¶ ̈ÆÚ1⁄2øÐÐÍ3 +1⁄4ÆÖμμÄ»ñÈ¡¡£ + +Ë÷ÒýÍ ̈32ドル»ÓÃÓÚ ORDER BY »òÖ ́ÐÐÁ¬1⁄2Ó¡£¶ÔÒ» ̧ö ́ó±íμÄÒ» ́ÎË3ÐòÉ ×ばつöÒ» ̧öÏÔ +Ê1⁄2μÄÅÅÐòÍ ̈3£±ÈË÷ÒýÉ ̈ÃèÒa¿ì¡£ + +μ«ÊÇ£¬ÔÚ LIMIT oÍ ORDER BY 1⁄2áoÏÊ1ÓÃʱ3⁄4­3£»áÊ1ÓÃË÷Òý£¬ÒòÎaÖ»»á·μ»Ø±íμÄÒ» +С2¿·Ö¡£Êμ1⁄4ÊÉÏ£¬ËäÈ» MAX() oÍ MIN() 22ドル»Ê1ÓÃË÷Òý£¬Í ̈1ý¶Ô ORDER BY oÍ +LLIMIT ×ばつî ×ばつîСÖμÒ2ÊÇ¿ÉÒÔμÄ£o + + SELECT col + FROM tab + ORDER BY col [ DESC ] + LIMIT 1; + +μ±Ê1ÓÃÍ ×ばつ÷£¬ÀýÈç LIKE »ò ~ ʱ£¬Ë÷ÒýÖ»ÄÜÔÚÌØ¶ ̈μÄÇé¿öÏÂÊ1Óão + + * ×ばつÖ·û ́®μÄ¿aÊ1⁄42¿·Ö±ØÐëÊÇÆÕÍ ×ばつÖ·û ́®£¬Ò23⁄4ÍÊÇËμ£o + o LIKE Ä£Ê1⁄22»ÄÜÒÔ % ́òÍ·¡£ + o ~ £ ̈ÕýÔò±í ́ïÊ1⁄2£©Ä£Ê1⁄2±ØÐëÒÔ ^ ́òÍ·¡£ + * ×ばつÖ·û ́®2»ÄÜÒÔÆ\Åä¶à ×ばつÖ·ûμÄÄ£Ê1⁄2Àà ́òÍ·£¬ÀýÈç [a-e]¡£ + * ́óСР́ÎÞ1ØμÄ2éÕÒ£¬Èç ILIKE oÍ ~* μÈ2»Ê1ÓÃË÷Òý¡£μ«¿ÉÒÔÓà 4.12 1⁄2ÚÃè + ÊöμÄo ̄ÊýË÷Òý¡£ + * ×ばつö initdb ʱ±ØÐë2ÉÓÃȱʡμı3⁄4μØÉèÖà C locale¡£ + + + 4.9) ÎÒÈçoÎ2ÅÄÜ¿ ́μ1⁄22éÑ ̄ÓÅ» ̄Æ÷ÊÇÔõÑù ́¦ÀíÎÒμÄ2éÑ ̄μÄ£¿ + +2ο1⁄4 EXPLAIN ÊÖ2áÒ3¡£ + + + 4.10) R-tree Ë÷ÒýÊÇÊ2à ́£¿ + +R-tree Ë÷ÒýÓÃÓÚË÷Òý¿Õ1⁄4äÊý3⁄4Ý¡£Ò» ̧ö1þÏ£Ë÷ÒýÎÞ· ̈ ́¦Àí·¶Î§ËÑË÷¡£¶ø B-tree Ë÷ +ÒýÖ»ÄÜ ́¦ÀíһάμÄ·¶Î§ËÑË÷¡£R-tree Ë÷Òý¿ÉÒÔ ́¦Àí¶àάÊý3⁄4Ý¡£ÀýÈ磬Èç1û¿ÉÒÔÔÚ +Ò» ̧öÀàÐÍÎa point ×ばつÖ¶ÎÉÏ1⁄2 ̈Á¢Ò» ̧ö R-tree Ë÷Òý£¬ÄÇà ́ÏμÍ3ÄÜ ̧ü ̧ßÐ§μØ»Ø ́ðÀà +ËÆ ¡°Ñ¡ÔñÔÚÒ» ×ばつî3õμÄ R-Tree Éè1⁄4ÆμÄÕýÊ1⁄2ÂÛÎÄÊÇ£o + +Guttman, A. "R-Trees: A Dynamic Index Structure for Spatial Searching." +Proc of the 1984 ACM SIGMOD Int'l Conf on Mgmt of Data, 45-57. + +Äã»1¿ÉÒÔÔÚ Stonebraker μÄ¡°Readings in Database Systems¡±ÀïÕÒμ1⁄2ÕâÆaÎÄÕ¡£ + +ÏμÍ3ÄÚÖÃμÄ R-Tree ¿ÉÒÔ ́¦Àí¶à±ßÐÎoÍ·1⁄2ÐΡ£ÀíÂÛÉÏË죬R-tree ¿ÉÒÔÀ©Õ1Îa ́¦Àí + ̧ü¶àάÊý¡2ドル»1ýÔÚÊμ1⁄4ùÉÏ£¬À©Õ1 R-trees ÐèÒaÒ»¶ ×ばつöμÄÎÄμμ¡£ + + + 4.11) Ê2à ́ÊÇ»ùÒò2éÑ ̄ÓÅ» ̄£ ̈Genetic Query Optimization£©£¿ + +GEQO Ä£¿é2ÉÓûùÒòËã· ̈£ ̈Genetic Algorithm£¬GA£©1⁄4Ó¿ì¶à±íÁ¬1⁄2ÓμÄ2éÑ ̄ÓÅ» ̄¡£Ëü +ÔÊÐíÍ ̈1ý·ÇÇî3⁄4ÙËÑË÷ ́¦Àí ́óμÄÁ¬1⁄2Ó2éÑ ̄¡£ + + + 4.12) ×ばつöÕýÔò±í ́ïÊ1⁄2ËÑË÷oÍ ́óСР́ÎÞ1ØμÄÕýÔò±í ́ïÊ1⁄2ËÑË÷£¿ÔõÑùÀû + ÓÃË÷Òý1⁄2øÐÐ ́óСР×ばつ÷·û ~ ́¦ÀíÕýÔò±í ́ïÊ1⁄2Æ\Å䣬¶ø ~* ́¦Àí ́óСР́ÎÞ1ØμÄÕýÔò±í ́ïÊ1⁄2Æ\Åä¡£ ́óÐ ́ +ЩÎÞ1ØμÄ LIKE ±äÖÖ3ÉÎa ILIKE¡£ + + ́óСР́ÎÞ1ØμÄμÈÊ1⁄2±È1⁄2ÏÍ ̈3£Ð ×ばつö£o + + SELECT * + FROM tab + WHERE lower(col) = 'abc×ばつ1⁄4μÄË÷Òý¡£μ«ÊÇ¿ÉÒÔ ́ ́1⁄2 ̈Ò» ̧ö¿É±»ÀûÓÃμÄo ̄ÊýË÷Òý: + + CREATE INDEX tabindex ON tab (lower(col)); + + + 4.13) ÔÚÒ» ̧ö2éÑ ̄ÀÎÒÔõÑù1⁄4ì2âÒ» ×ばつÖ¶ÎÊÇ·ñÎa NULL£¿ + +Óà IS NULL oÍ IS NOT NULL 2âÊÔÕâ ×ばつֶΡ£ + + + 4.14) ×ばつÖ·ûÀàÐÍÖ®1⁄4äÓÐÊ2à ́2»Í¬£¿ + + ÀàÐÍ ÄÚ2¿Ãû3Æ ËμÃ÷ + -------------------------------------------------- + "char" char 1 ×ばつÖ·û character + CHAR(#) bpchar ¶ ×ばつÖ·û ×ばつã¶ ̈Òå3¤¶Èʱ£¬ÒÔ¿Õ ̧ñ21Æë + VARCHAR(#) varchar Ö ̧¶ ×ばつî ×ばつÖ·û ×ばつã¶ ̈Òå3¤¶ÈμÄ2¿·Ö +2»21Æë + TEXT text ×ばつî ́ó3¤¶ÈÏÞÖÆ + BYTEA bytea ×ばつÖ1⁄2ÚÐòÁУ ̈±ä3¤μĶþ1⁄2øÖÆÊý3⁄4Ý£© + +ÔÚÏμÍ3±íoÍÔÚһЩ ́íÎóÐÅÏ¢ÀïÄã1⁄2«¿ ́μ1⁄2ÄÚ2¿Ãû3Æ¡£ ×ばつîoóËÄÖÖÀàÐÍÊÇ"varlena"£ ̈±ä3¤£©ÀàÐÍ£ ̈Ò23⁄4ÍÊÇË죬¿aÍ·μÄËÄ ×ばつÖ1⁄2ÚÊÇ3¤ +¶È£¬oóÃæ2ÅÊÇÊý3⁄4Ý£©¡£ÓÚÊÇÊμ1⁄4ÊÕ1⁄4ÓÃμÄ¿Õ1⁄4ä±ÈÉùÃ÷μÄ ́óСÒa¶àһЩ¡£È»¶øÕâЩÀàÐÍ +¶1⁄4¿ÉÒÔ±»Ñ1Ëõ ́æ ́¢£¬Ò2¿ÉÒÔÓà TOAST ÍÑ»ú ́æ ́¢£¬Òò ́Ë ́ÅÅÌ¿Õ1⁄4äÒ2¿ÉÄܱÈÔ¤ÏëμÄÒaÉÙ¡£ + +CHAR(n) ×ばつîÊÊoÏÓÚ ́æ ×ばつÖ·û ́®¡£VARCHAR(n) ÔÚ ́æ ×ばつî ×ばつÖ·û ×ばつîoÃμÄ¡£TEXT ÊÊÓÃÓÚ ́æ ×ばつÖ·û ×ばつî ́ó¿É ́ï +1G¡£BYTEA ÓÃÓÚ ́æ ́¢¶þ1⁄2øÖÆÊý3⁄4Ý£¬ÓÈÆäÊǰüo¬ NULL ×ばつÖ1⁄2Ú£ ̈¶þ1⁄2øÖÆμÄ0£©μÄÖμ¡£Õâ +ЩÀàÐÍ3⁄4ßÓÐÀàÐÍμÄÐÔÄÜ¡£ + + + 4.15.1) ÎÒÔõÑù ́ ́1⁄2 ̈Ò» ×ばつÔ¶ ×ばつֶΣ¿ + +PostgreSQL Ö§3Ö SERIAL ×ばつÔ¶ ̄ ́ ́1⁄2 ̈Ò» ̧öÐòÁÐoÍË÷Òý¡£ÀýÈ磬 + CREATE TABLE person ( + id SERIAL, + name TEXT + )×ばつÔ¶ ×ばつa»»Îa£o + + CREATE SEQUENCE person_id_seq; + CREATE TABLE person ( + id INT4 NOT NULL DEFAULT nextval('person_id_seq'), + name TEXT + ); + CREATE UNIQUE INDEX person_id_key ON person ( id ); + +2ο1⁄4 create_sequence ÊÖ2áÒ3»ñÈ¡1ØÓÚÐòÁÐμÄ ̧ü¶àÐÅÏ¢¡£Äã»1¿ÉÒÔÓÃÿÐÐμÄ oid×ばつ÷ÎaÒ» ̧öÎ ̈Ò»Öμ¡2ドル»1ý£¬Èç1ûÄãÐèÒaÇãμ1oÍÖØÔØÊý3⁄4ݿ⣬ÄãÐèÒaÊ1Óà pg_dump +μÄ -o Ñ¡Ïî»òÕß COPY WITH OIDS Ñ¡ÏîÒÔ±£Áô OID¡£ + + + 4.15.2) ÎÒÈçoλñμÃÒ» ̧ö2åÈëμÄÐòÁÐoÅμÄÖμ£¿ + +Ò»ÖÖ·1⁄2· ̈ÊÇÔÚ2åÈë֮ǰÏÈÓÃo ̄Êý nextval() ́ÓÐòÁжÔÏóÀï1⁄4ìË÷3öÏÂÒ» ̧ö SERIAL +Öμ£¬È»oóÔÙÏÔÊ1⁄22åÈë¡£Ê1Óà 4.15.1 <#4.15.1> ÀïμÄÀý±í£¬¿ÉÓÃαÂëÕâÑùÃèÊö£o + + new_id = execute("SELECT nextval('person_id_seq')"); + execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise +Pascal')"); + +ÕâÑù»1ÄÜÔÚÆäËû2éÑ ̄ÖÐÊ1Óà ́æ·ÅÔÚ new_id ÀïμÄÐÂÖμ£ ×ばつ÷Îa person ×ばつÔ¶ ̄ ́ ́1⁄2 ̈μÄ SEQUENCE ¶ÔÏóμÄÃû3Æ1⁄2«»áÊÇ +__seq£¬ÕâÀï table oÍ serialcolumn ·Ö±ðÊÇÄãμıíμÄÃû +3ÆoÍÄãμÄ SERIAL ×ばつÖ¶ÎμÄÃû3Æ¡£ + +ÀàËÆμÄ£¬ÔÚ SERIAL ¶ÔÏóȱʡ2åÈëoóÄã¿ÉÒÔÓÃo ̄Êý currval() 1⁄4ìË÷ ̧Õ ̧3ÖμμÄ +SERIAL Ö죬ÀýÈ磬 + + execute("INSERT INTO person (name) VALUES ('Blaise Pascal')"); + new_id = execute("SELECT currval('person_id_seq')")×ばつîoó£¬Äã¿ÉÒÔÊ1Óà ́Ó INSERT Óï3⁄4ä·μ»ØμÄ OID <4.16> ×ばつîȱ·¦ÒÆÖ2ÐÔμÄ·1⁄2· ̈¡£ÔÚ Perl ÀÊ1Óà ́øÓÐ Edmund Mergl μÄ DBD::Pg Ä£¿éμÄ +DBI£¬oid Öμ¿ÉÒÔÍ ̈1ý $sth->execute() oóμÄ $sth->{pg_oid_status} »ñμᣠ+ + + 4.15.3) Ê1Óà currval() oÍ nextval() »áμ1⁄4ÖÂÒ» ̧öÓëÆäËûÓû§Ö®1⁄4äμÄÎÉ + ÂÒÇé¿öÂ𣿠+ +2»»á¡£currval() ·μ»ØoóÌ ̈1⁄2ø3̶ø2»ÊÇËùÓÐÓû§ ̧3ÓèμÄμ±Ç°Öμ¡£ + + + 4.15.4) ÎaÊ2à ́2»ÔÚÊÂÎñÒì3£ÖÐÖ1oóÖØÓÃÐòÁÐoÅÄØ£¿ÎaÊ2à ×ばつÖ¶Î + μÄÈ¡ÖμÖÐ ́æÔÚ1⁄4ä¶ÏÄØ£¿ + +ÎaÁËÌá ̧ß2¢·¢ÐÔ£¬ÐòÁÐoÅÔÚÐèÒaμÄʱoò ̧3ÓèÕýÔÚÔËÐÐμÄÊÂÎñ£¬2¢ÇÒÖ»ÔÚÊÂÎñ1⁄2áÊøÖ® +ǰ2»·âËø¡£Õâ3⁄4Í»áμ1⁄4ÖÂØ2ÕÛÊÂÎñoóμÄÐòÁÐoÅ3öÏÖ1⁄4ä ̧ô¡£ + + + + 4.16) Ê2à ́ÊÇ OID£¿Ê2à ́ÊÇ TID£¿ + +OID ÊÇ PostgreSQL ÖÐÐÐμÄÎ ̈Ò»±êʶ¡£PostgreSQL Àï ́ ́1⁄2 ̈μÄÿһÐж1⁄4»ñμÃÒ» ̧öÎ ̈ +Ò»μÄ OID¡£ËùÓÐÔÚ initdb 1ý3ÌÖÐ ́ ́1⁄2 ̈μÄ OID ¶1⁄4СÓÚ 16384 £ ̈2Î1⁄4û +include/access/transam.h£©¡£ËùÓÐÓû§ ́ ́1⁄2 ̈μÄ OID ¶1⁄4 ́óÓÚ»òμÈÓÚÕâ ̧öÖμ¡£È±Ê¡ +ʱ£¬ËùÓÐÕâЩ OID 2»1⁄2öÔÚÒ» ̧ö±í»òÒ» ̧öÊý3⁄4Ý¿âÀïÃæÎ ̈Ò»£¬¶øÇÒÔÚÕû ̧ö Postgre×ばつ°ÀïÒ2ÊÇÎ ̈Ò»μÄ¡£ + +PostgreSQL ÔÚËüμÄÄÚ2¿ÏμÍ3±íÀïÊ1Óà OID ÔÚ±íÖ®1⁄4ä1⁄2 ̈Á¢ÁaÏμ¡£ÕâЩ OID ¿ÉÒÔÓà +ÓÚ±êÊ¶ÌØ¶ ̈μÄÓû§ÐÐÒÔ1⁄4°ÓÃÔÚÁ¬1⁄2ÓÀï¡1ドル⁄2 ×ばつÖ¶ÎÀàÐÍ OID ́æ ́¢ OID Öμ¡£¿ÉÒÔ +ÔÚ OID ×ばつÖ¶ÎÉÏ ́ ́1⁄2 ̈Ò» ̧öË÷ÒýÒÔ¿ìËÙ·ÃÎÊ¡£ + +OID ́ÓÒ» ̧ö±»ËùÓÐÊý3⁄4Ý¿âÊ1ÓÃμÄÖÐÐÄÇøÓòÀï ̧3Öμ ̧øËùÓÐÐÂÐС£Èç1ûÄãÏë°Ñ OID ×ばつöÒ»·Ý±íμÄ ́øÔ­Ê1⁄4 OID μÄ¿1⁄2± ×ばつöμ1⁄2£o + + CREATE TABLE new(old_oid oid, mycol int); + SELECT old_oid, mycol INTO new FROM old; + COPY new TO '/tmp/pgtable'; + DELETE FROM new; + COPY new WITH OIDS FROM '/tmp/pgtable'; + +OID ×ばつÖ1⁄2ÚμÄÕûÊý±£ ́棬ÔÚ3¬1ý40ÒÚʱ1⁄2«Òç3ö¡£Ã»ÓÐÈ˱ ̈ ̧æ3öÏÖ1ýÒç3ö£¬¶øÎÒÃÇ + ́òËãÔÚÓÐÈ˱ ̈ ̧æÖ®Ç°Ïû3ýÕâ ̧öÏÞÖÆ¡£ + +TID ÓÃÓÚ±êʶ ×ばつÅÊý3⁄4Ý¿é£ ̈μØÖ·£©oÍ£ ̈¿éÄÚ£©Æ«ÒÆμÄÌØ¶ ̈μÄÎïÀíÐС£TID ÔÚÐб» ̧ü + ̧Ä»òÖØÔØoó·¢Éú ̧ı䡣Ë÷ÒýÈë¿ÚÊ1ÓÃËüÃÇÖ ̧ÏòÎïÀíÐС£ + + + 4.17) PostgreSQL Ê1ÓÃμÄһЩÊõÓïμÄo¬ÒåÊÇÊ2à ́£¿ + +Ò»Ð©Ô ́ ́úÂëoÍһЩ3⁄4ÉÒ»μãμÄÎÄμμÊ1ÓÃһЩÓÐ ̧ü3£ÓÃÓ÷ ̈μÄÊõÓï¡£ÏÂÃæÊÇÆäÖÐÒ»2¿·Ö£o + table, relation, class + row, record, tuple + column, field, attribute + retrieve, select + replace, update + append, insert + OID, serial value + portal, cursor + range variable, table name, table alias + +ÓÐÒ» ̧öÍ ̈ÓÃÊý3⁄4Ý¿âÊõÓïμÄÁбí£ohttp://hea- +www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html +¡£ + + + 4.18) ÎaÊ2à ́ÎÒÊÕμ1⁄2 ́íÎó¡°/ERROR: Memory exhausted in + AllocSetAlloc()/¡±£¿ + +ÕâoÜ¿ÉÄÜÊÇÏμÍ3μÄÐéÄâÄÚ ×ばつÊÔ ́ÓÐ1⁄2ÏμÍμÄÏÞÖÆÖμ¡£ÔÚÆô¶ ̄ +postmaster ֮ǰÊÔÊÔÏÂÃæμÄÃüÁî£o + + ulimit -d 262144 + limit datasize 256m + +È¡3⁄4öÓÚÄãÓÃμÄ shell£¬ÉÏÃæÃüÁîÖ»ÓÐÒ»ÌõÄÜ3É1¦£¬μ«ÊÇËü1⁄2«°ÑÄãμÄ1⁄2ø3ÌÊý3⁄4ݶÎÏÞÖÆ +ÉèμñÈ1⁄2Ï ̧ߣ¬Òò¶øÒ2ÐíÄÜÈÃ2éÑ ̄Íê3É¡£ÕâÌõÃüÁîÓ¦ÓÃÓÚμ±Ç°1⁄2ø3Ì£¬ÒÔ1⁄4°ËùÓÐÔÚÕâÌõ +ÃüÁîÔËÐÐoó ́ ́1⁄2 ×ばつÓ1⁄2ø3Ì¡£Èç1ûÄãÊÇÔÚÔËÐÐSQL¿Í»§¶ËʱÒòÎaoóÌ ̈·μ»ØÁËÌ«¶àμÄÊý +3⁄4ݶø3öÏÖÎÊÌ⣬ÇëÔÚÔËÐпͻ§¶ËÖ®Ç°Ö ́ÐÐÉÏÊöÃüÁî¡£ + + + 4.19) ÎÒÈçoÎ2ÅÄÜÖaμÀËùÔËÐÐμÄ PostgreSQL μİæ±3⁄4£¿ + + ́Ó psql À1⁄4üÈë SELECT version()£» + + + 4.20) ÎaÊ2à ́ÎÒμÄ ×ばつ÷μ1⁄4Ö ́íÎó¡°/invalid large obj + descriptor¡±£ ̈·Ç· ̈μÄ ́ó¶ÔÏóÃèÊö·û£©/£¿ + +ÄãÐèÒaÔÚÊ1ÓÃÈÎoÎ ́ó¶ÔÏó3⁄4ä±úμÄǰoó·ÅÉÏ BEGIN WORK oÍ COMMIT£¬Ò23⁄4ÍÊÇË죬°ü +Χ lo_open ... lo_close¡£ + +Ŀǰ PostgreSQL Ç¿ÖÆÊμÊ©ÕâÌõ1æÔò£oÔÚÊÂÎñÌá1⁄2»Ê±1Ø±Õ ́ó¶ÔÏó3⁄4ä±ú£¬ÕâÑù£¬£ ×ばつ ́Î¶Ô ×ばつöÈÎoÎÊÂÇéμÄÆóÍ1⁄4¶1⁄4»áμ1⁄4ÖÂÒ» ̧ö invalid +large obj descriptor¡£ËùÒÔ£¬Èç1ûÄãûÓÐÊ1ÓÃÒ» ×ばつ÷μÄ ́úÂë£ ̈ÖÁ +ÉÙÊÇ ́ó¶àÊýʱ1⁄4䣩1⁄2«»áÉú3ÉÕâà ́Ò» ̧ö ́íÎóÐÅÏ¢¡£ + +Èç1ûÄãÊ1Óÿͻ§¶Ë1⁄2Ó¿Ú£¬Èç ODBC£¬Äã¿ÉÄÜÐèÒa set auto-commit off¡£ + + + 4.21) ÎÒÈçoÎ ́ ́1⁄2 ̈Ò» ×ばつֶΣ¿ + +Ê1Óà CURRENT_TIMESTAMP£o + + CREATE TABLE test(x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP); + + + 4.22) ÎaÊ2à ́Ê1Óà IN ×ばつÓ2éÑ ̄Õâà ́Âý£¿ + +Ŀǰ£¬ÎÒÃÇÍ ̈1ýÎaÍâ2éÑ ̄μÄÿһÐÐË3ÐòÉ ×ばつÓ2éÑ ̄μÄ1⁄2á1ûÀ ×ばつÓ2éÑ ̄oÍÍâ2éÑ ×ばつÓ2éÑ ̄·μ»ØÉÙÊý1⁄4 ̧ÐУ¬¶øÍâ2éÑ ̄·μ»ØoܶàÐУ¬IN Ö ́ÐÐμÃoܿ졣ÎaÁË1⁄4Ó¿ìÆäËû +IN 2éÑ ̄μÄÖ ́ÐУ¬¿ÉÒÔÓà EXISTS Ìæ»» IN£o + + SELECT * + FROM tab + WHERE col IN (SELECT subcol FROM subtab); + + ̧ÄÎa£o + + SELECT * + FROM tab + WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col); + +oóÕßÒaÏëÖ ́ÐÐμà ̧ü¿ì£¬subcol Ó¦ ̧ÃÊÇÒ» ̧öË÷ÒýÁС£ÎÒÃÇÏ£ÍûÔÚÎ ́À ́μÄ·21ドル⁄4°æ±3⁄4ÖÐ +ÐÞ21Õâ ̧öÏÞÖÆ¡£ + + + 4.23) ÎÒÔõÑù1⁄2øÐÐ outer join £ ̈ÍâÁ¬1⁄2Ó£©£¿ + +PostgreSQL ×ばつ1⁄4μÄ SQL Óï· ̈Ö§3ÖÍâÁ¬1⁄2Ó¡£ÕâÀïÊÇÁ1⁄2 ×ばつÓ£o + + SELECT * + FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col); + +»ò + SELECT * + FROM t1 LEFT OUTER JOIN t2 USING (col); + +ÕâÁ1⁄2 ̧öμÈ1⁄4ÛμÄ2éÑ ̄ÔÚ t1.col oÍ t2.col ×ばつöÁ¬1⁄2Ó£¬2¢ÇÒ·μâ»?t1 ÖÐËùÓÐÎ ́Á¬1⁄2ÓμÄ +ÐУ ̈ÄÇЩÔÚ t2 ÖÐûÓÐÆ\ÅäμÄÐУ©¡£ÓÒ[Íâ]Á¬1⁄2Ó(RIGHT OUTER JOIN)1⁄2«·μ»Ø t2 ÖÐ +Î ́Á¬1⁄2ÓμÄÐС£ÍêÈ«ÍâÁ¬1⁄2Ó£ ̈FULL OUTER JOIN£©1⁄2«·μ»Ø t1 oÍ t2 ÖÐÎ ×ばつÖ OUTER ×ばつó[Íâ]Á¬1⁄2Ó¡¢ÓÒ[Íâ]Á¬1⁄2ÓoÍÍêÈ«[Íâ]Á¬1⁄2ÓÖÐÊÇ¿ÉÑ¡μÄ£¬ÆÕÍ ̈Á¬1⁄2Ó +±»3ÉÎaÄÚÁ¬1⁄2Ó£ ̈INNER JOIN£©¡£ + +ÔÚ ́Ëǰμİæ±3⁄4ÖУ¬ÍâÁ¬1⁄2Ó¿ÉÒÔÓà UNION oÍ NOT IN À ×ばつÓÔÚ +±í tab1 oÍ tab2 ×ばつöÍâÁ¬1⁄2Ó£o + + SELECT tab1.col1, tab2.col2 + FROM tab1, tab2 + WHERE tab1.col1 = tab2.col1 + + UNION ALL + + SELECT tab1.col1, NULL + FROM tab1 + WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2) + ORDER BY col1 + + + 4.24) ÈçoÎÊ1ÓÃÉæ1⁄4°¶à ̧öÊý3⁄4Ý¿âμÄ2éÑ ̄£¿ + +ûÓÐ°ì· ̈2éÑ ̄μ±Ç°Êý3⁄4Ý¿âÖ®ÍâμÄÊý3⁄4ݿ⡣ÒòÎa PostgreSQL 1⁄4ÓÔØÊý3⁄4Ý¿âÏà1ØμÄÏμÍ3 +Ä¿Â1⁄4£ ̈ÏμÍ3±í£©£¬¿çÊý3⁄4Ý¿âμÄ2éÑ ̄ÈçoÎÖ ́ÐÐÒ2Î ́Ã÷È·¡£ + +contrib/dblink ÔÊÐí2ÉÓÃo ̄Êýμ÷ÓÃÊμÏÖ¿ç¿â2éÑ ̄¡£μ±È»¿ÉÒÔͬʱÁ¬1⁄2Óμ1⁄22»Í¬μÄÊý +3⁄4Ý¿â2¢ÔÚ¿Í»§¶ËoÏ21ドル⁄2á1û¡£ + + + 4.25) ÈçoÎÈÃo ̄Êý·μ»Ø¶àÐлò¶àÁУ¿ + +¿ÉÒÔÔÚ PL/pgSQL o ̄ÊýÖÐÊ1Óà refcursors ·μ»Ø1⁄2á1û1⁄4 ̄¡2ドルο ́ +http://www.PostgreSQL.org/idocs/index.php?plpgsql-cursors.html +, +23.7.3.31⁄2Ú¡£ + + + 4.26) ÎaÊ2à ́ÔÚ PL/PgSQL o ̄ÊýÖÐ2»Äܿɿ¿μØ ́ ́1⁄2 ̈»òÉ3⁄43ýÁÙʱ±í£¿ + +PL/PgSQL »o ́æo ̄ÊýμÄÄÚÈÝ£¬ÓÉ ́Ë ́øÀ ́μÄÒ» ̧ö2»oÃμÄ ×ばつ÷ÓÃÊÇÈôÒ» ̧ö PL/PgSQL o ̄ +Êý·ÃÎÊÁËÒ» ̧öÁÙʱ±í£¬È»oó ̧Ã±í±»É3⁄43ý2¢ÖØ1⁄2 ̈ÁË£¬ÔòÔÙ ́Îμ÷Óà ̧Ão ̄Êý1⁄2«Ê§°Ü£¬ÒòÎa +»o ́æμÄo ̄ÊýÄÚÈÝÈÔÈ»Ö ̧Ïò3⁄4ÉμÄÁÙʱ±í¡1ドル⁄2â3⁄4öμÄ·1⁄2· ̈ÊÇÔÚ PL/PgSQL ÖÐÓà EXECUTE +¶ÔÁÙʱ±í1⁄2øÐзÃÎÊ¡£ÕâÑù»á±£Ö¤2éÑ ̄ÔÚÖ ×ばつÜÊÇÖØÐ·ÖÎö¡£ + + + 4.27) ÓÐÄÄЩÊý3⁄4Ý ̧ ́ÖÆÑ¡Ï + +ÓÐ1⁄4 ̧ÖÖÖ÷/ ́Ó·1⁄2Ê1⁄2μÄ ̧ ́ÖÆÑ¡Ïî¡£ÕâЩѡÏîÖ»ÔÊÐíÖ÷Êý3⁄4Ý¿â1⁄2øÐÐ ̧üУ¬ ́ÓÊý3⁄4Ý¿âÖ»ÄÜ +1⁄2øÐжÁ¡£ÍøÒ3 http://gborg.PostgreSQL.org/genpage?replication_research ×ばつîoóÁÐ3öÁËÕâЩѡÏî¡£ÔÚ +http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php + ÕýÔÚ +1⁄2øÐÐÒ» ̧ö¶àÖ÷±3⁄4 ̧ ́ÖÆμÄ1⁄2â3⁄4ö·1⁄2° ̧¡£ + + + 4.28) ÓÐÄÄЩÊý3⁄4Ý1⁄4ÓÃÜÑ¡Ï + +contrib/pgcrypto °üo¬ÁËoܶàÔÚ SQL 2éÑ ̄ÖÐÊ1ÓÃμÄ1⁄4ÓÃÜo ̄Êý¡1ドル⁄4ÓÃܿͻ§¶Ëμ1⁄2·þÎñ +Æ÷¶Ë ́«ÊäÊý3⁄4ÝμÄÎ ̈Ò»·1⁄2· ̈ÊÇÔÚ pg_hba.conf ÖÐ2ÉÓà hostss ¡£ + +7.3 ×ばつÔ¶ ̄¶ÔÊý3⁄4Ý¿âÓû§ÃÜÂë1⁄2øÐÐ1⁄4ÓÃÜ¡£ÔÚÒÔǰμİæ±3⁄4ÖУ¬±ØÐëÔÚ +postgresql.conf ÖÐ ́ò¿a PASSWORD_ENCRYPTION Ñ¡Ïî¡£·þÎñÆ÷¿ÉÒÔÔËÐÐÔÚ1⁄4ÓÃÜμÄ +ÎÄ1⁄4þÏμÍ3ÉÏ£ ̈ÒÔ ́ïμ1⁄21⁄4ÓÃÜμÄÄ¿μÄ£©¡£ + +-------------------------------------------------------------------------------- + + + À©Õ1 PostgreSQL + + + 5.1) ÎÒÐ ́ÁËÒ» ̧öÓû§¶ ̈Òåo ̄Êý¡£μ±ÎÒÔÚ psql ÀïÔËÐÐʱ£¬ÎaÊ2à ́»áμ1⁄4Ö + core dump£¿ + +2úÉúÕâ ̧öÎÊÌâμÄÔ­ÒòoܶࡣÇëÏÈÔÚÒ» ×ばつÔ¶ ̈Òåo ̄Êý¡£ + + + 5.2) ÎÒÈçoÎÄÜ ̧ø PostgreSQL ×ばつһЩͦ2» ́íμÄÐÂÀàÐÍoÍo ̄Êý£¿ + +1⁄2«ÄãμÄÀ©Õ1·¢ËÍμ1⁄2 pgsql-hackers ×ばつîÖջᱻ·Åμ1⁄2 contrib/ ×ばつÓÄ¿Â1⁄4¡£ + + + 5.3) ÎÒÔõÑùÐ ́Ò» ̧ö·μ»ØÒ»ÌõÔa×ばつéμÄ C o ̄Êý£¿ + +ÔÚ PostgreSQL 7.3 ÒÔoóμİæ±3⁄4ÖУ¬C, PL/PgSQL oÍ SQL Íêȫ֧3Ö·μ»ØÖμÎa±íμÄ +o ̄Êý¡£ ̧ü¶àÐÅÏ¢Çë2ο1⁄4 3ÌÐòÔ±Ö ̧ÄÏ£ ̈the Programmer's Guide£©¡£ÔÚ +contrib/tablefunc ÖÐÓÐÒ» ×ばつÓÊÇÓà C Ð ́μÄ·μ»ØÖμÎa±íμÄo ̄Êý¡£ + + + 5.4) ÎÒÐÞ ̧ÄÁËÒ» ̧öÔ ́ÎÄ1⁄4þ£¬ÎaÊ2à ́ÖØÐ±àÒëoóûÓп ́μ1⁄2 ̧ı䣿 + +Makefiles ×ばつömake clean£¬ ×ばつöÒ» ́Î +make ¡£Èç1ûÄúÊ1ÓÃμÄÊÇ GCC £¬Ôò¿ÉÒÔ2ÉÓÃÑ¡Ïî --enable-depend ×ばつÔ¶ ̄ +Éú3ÉÍ·ÎÄ1⁄4þμÄÒÀÀμ1ØÏμ¡£ + -- 2.39.5

AltStyle によって変換されたページ (->オリジナル) /