diff options
-rw-r--r-- | doc/FAQ_chinese | 1291 | ||||
-rw-r--r-- | doc/src/FAQ/FAQ_chinese.html | 1865 |
2 files changed, 1385 insertions, 1771 deletions
diff --git a/doc/FAQ_chinese b/doc/FAQ_chinese index cae9589bd55..9e0dd9b33fe 100644 --- a/doc/FAQ_chinese +++ b/doc/FAQ_chinese @@ -1,152 +1,118 @@ PostgreSQL ³£¼ûÎÊÌ⣨FAQ£© - ×î½ü¸üУº2003 Äê 01 Ô 06 ÈÕ ÐÇÆÚÒ» 22:27:35 CST + ×î½ü¸üУº2005 Äê 06 Ô 02 ÈÕ ÐÇÆÚÎå 22:27:35 CST Ŀǰά»¤ÈËÔ±£ºBruce Momjian (pgman@candle.pha.pa.us) - ÖÐÎİæÎ¬»¤ÈËÔ±£ººÎΰƽ £¨laser@pgsqldb.com £© + ÖÐÎİæÎ¬»¤ÈËÔ±£ºdoudou586 £¨doudou586_2005@yahoo.com.cn£© - ±¾ÎĵµµÄ×îа汾¿ÉÒÔÔÚhttp://www.postgresql.org/files/documentation/fa - qs/FAQ.html ²é¿´¡£ + ±¾ÎĵµµÄ×îа汾¿ÉÒÔÔÚ + http://www.postgresql.org/files/documentation/faqs/FAQ.html²é¿´¡£ - ²Ù×÷ϵͳƽ̨Ïà¹ØµÄÎÊÌâÔÚhttp://www.postgresql.org/docs/faq/Àï»Ø´ð¡£ + Óë²Ù×÷ϵͳƽ̨Ïà¹ØµÄÎÊÌâÔÚhttp://www.postgresql.org/docs/faq/Àï»Ø´ð¡£ _________________________________________________________________ - ³£¼ûÎÊÌâ - - 1.1) PostgreSQL ÊÇʲô£¿¸ÃÔõô·¢Òô£¿ - 1.2) PostgreSQL µÄ°æÈ¨ÊÇʲô? - 1.3) PostgreSQL ÔËÐÐÔÚʲô Unix ƽ̨ÉÏ£¿ - 1.4) ¿ÉÓÃµÄ·Ç Unix ƽ̨ÓÐÄÇЩ£¿ - 1.5) ÎÒ´ÓÄÄÀïÄܵõ½ PostgreSQL£¿ - 1.6) ÎÒ´ÓÄÄÀïÄܵõ½¶Ô PostgreSQL µÄÖ§³Ö£¿ - 1.7) PostgreSQL ×îеİ汾ÊÇʲô£¿ - 1.8) ÓÐÄÄЩ¿ÉÓÃµÄ PostgreSQL µÄÎĵµ£¿ - 1.9) ÎÒÈçºÎÁ˽âÒÑÖªµÄ BUG »òȱʧµÄÌØÐÔ£¿ - 1.10) ÎÒÓ¦¸ÃÔõÑùѧϰ SQL £¿ - 1.11) PostgreSQL ÊÇ Y2K ¼æÈݵÄÂ𣿠- 1.12) ÎÒÓ¦¸ÃÔõÑù¼ÓÈ뿪·¢¶ÓÎ飿 - 1.13) ÎÒÓ¦¸ÃÔõÑùÌá½»Ò»¸ö BUG ±¨¸æ£¿ - 1.14) PostgreSQL ºÍÆäËû DBMS ±ÈÆðÀ´ÈçºÎ£¿ - 1.15) ÎÒÓ¦¸ÃÔõÑùÔÞÖú PostgreSQL £¿ - - Óû§¿Í»§¶ËÎÊÌâ - - 2.1) ÓÐ PostgreSQL µÄ ODBC Çý¶¯³ÌÐòô£¿ - 2.2) ÓÐʲô¹¤¾ß¿ÉÒÔ°Ñ PostgreSQL ÓÃÓÚ Web Ò³Ãæ£¿ - 2.3) PostgreSQL ÓµÓÐͼÐÎÓû§½çÃæÂ𣿠- 2.4) ÎÒÃÇ¿ÉÒÔÓÃʲôÓïÑÔºÍ PostgreSQL ´ò½»µÀ£¿ - - ϵͳ¹ÜÀíÎÊÌâ - - 3.1) ÎÒÔõÑùÄÜ°Ñ PostgreSQL ×°ÔÚ /usr/local/pgsql ÒÔÍâµÄµØ·½£¿ - 3.2) µ±ÎÒÔËÐÐ postmaster ʱ£¬³öÏÖ Bad System Call£¨ÏµÍ³µ÷ÓÃ´í£©»ò Core - Dumped ´íÎó¡£ÎªÊ²Ã´£¿ - 3.3) µ±ÎÒÊÔͼÔËÐÐ postmaster ʱ£¬³öÏÖ IpcMemoryCreate ´íÎó¡£ÎªÊ²Ã´£¿ - 3.4) µ±ÎÒÊÔͼÔËÐÐ postmaster ʱ£¬³öÏÖ IpcSemaphoreCreate - ´íÎó¡£ÎªÊ²Ã´£¿ - 3.5) ÎÒÈçºÎ¿ØÖÆÀ´×ÔÆäËûÖ÷»úµÄÁ¬½Ó£¿ - 3.6) ÎÒÔõÑùµ÷ÕûÊý¾Ý¿âÒýÇæÒÔ»ñµÃ¸üºÃµÄÐÔÄÜ£¿ - 3.7) PostgreSQL Àï¿ÉÒÔ»ñµÃʲôÑùµÄµ÷ÊÔÌØÐÔ£¿ - 3.8) ΪʲôÔÚÊÔͼÁ¬½ÓµÇ¼ʱÊÕµ½¡°Sorry, too many clients¡± ÏûÏ¢£¿ - 3.9) pgsql_tmp Ŀ¼Àï¶¼ÓÐЩʲô£¿ - 3.10) ΪʲôҪÔÚÉý¼¶ PostgreSQL ·¢²¼°æ±¾Ê±×ö dump ºÍ restore £¿ - - ²Ù×÷ÎÊÌâ - - 4.1) ¶þ½øÖÆÓαêºÍÆÕͨÓαêÖ®¼äµÄÇø±ðÊÇʲô£¿ - 4.2) ÈçºÎֻѡÔñÒ»¸ö²éѯ½á¹ûµÄÍ·¼¸ÐУ¿ - 4.3) ÎÒÈçºÎ»ñȡһ¸öÊý¾Ý¿âÖбíµÄÁÐ±í£¬»òÕßÊÇÆäËûÎÒÄÜÔÚ psql - Àï¿´µ½µÄ¶«Î÷£¿ - 4.4) ÔõÑù´Ó±íÀïÃæÉ¾³ýÒ»ÁУ¿ - 4.5) Ò»ÐУ¬Ò»¸ö±í£¬Ò»¸ö¿âµÄ×î´ó³ß´çÊǶàÉÙ£¿ - 4.6) ´æ´¢Ò»¸öµäÐ͵ÄÎı¾ÎļþÀïµÄÊý¾ÝÐèÒª¶àÉÙ´ÅÅ̿ռ䣿 - 4.7) ÈçºÎ²é¿´±í¡¢Ë÷Òý¡¢Êý¾Ý¿âÒÔ¼°Óû§µÄ¶¨Ò壿 - 4.8) ÎҵIJéѯºÜÂý»òÕßûÓÐÀûÓÃË÷Òý¡£ÎªÊ²Ã´£¿ - 4.9) ÎÒÈçºÎ²ÅÄÜ¿´µ½²éѯÓÅ»¯Æ÷ÊÇÔõÑù´¦ÀíÎҵIJéѯµÄ£¿ - 4.10) R-tree Ë÷ÒýÊÇʲô£¿ - 4.11) ʲôÊÇ»ùÒò²éѯÓÅ»¯£¨Genetic Query Optimization£©£¿ - 4.12) - ÎÒÔõÑù×öÕýÔò±í´ïʽËÑË÷ºÍ´óСдÎ޹صÄÕýÔò±í´ïʽ²éÕÒ£¿ÔõÑùÀûÓÃË÷Òý½øÐдó - СдÎ޹زéÕÒ£¿ - 4.13) ÔÚÒ»¸ö²éѯÀÎÒÔõÑù¼ì²âÒ»¸ö×Ö¶ÎÊÇ·ñΪ NULL£¿ - 4.14) ¸÷ÖÖ×Ö·ûÀàÐÍÖ®¼äÓÐʲô²»Í¬£¿ - 4.15.1) ÎÒÔõÑù´´½¨Ò»¸öÐòÁкÅ/×Ô¶¯µÝÔöµÄ×ֶΣ¿ - 4.15.2) ÎÒÈçºÎ»ñµÃÒ»¸ö²åÈëµÄÐòÁкŵÄÖµ£¿ - 4.15.3) ʹÓà currval() ºÍ nextval() »áµ¼ÖÂºÍÆäËûÓû§µÄÎÉÂÒÇé¿ö£¨race - condition£©Â𣿠- 4.15.4) - Ϊʲô²»ÔÚÊÂÎñÒì³£ÖÐÖ¹ºóÖØÓÃÐòÁкÅÄØ£¿ÎªÊ²Ã´ÔÚÐòÁкÅ×ֶεÄȡֵÖдæÔÚ¼ä - ¶ÏÄØ£¿ - 4.16) ʲôÊÇ OID£¿Ê²Ã´ÊÇ TID £¿ - 4.17) PostgreSQL ʹÓõÄһЩÊõÓïµÄº¬ÒåÊÇʲô£¿ - 4.18) ΪʲôÎÒÊÕµ½´íÎó¡°ERROR: Memory exhausted in AllocSetAlloc()¡±£¿ - 4.19) ÎÒÈçºÎ²ÅÄÜÖªµÀËùÔËÐÐµÄ PostgreSQL µÄ°æ±¾£¿ - 4.20) ΪʲôÎҵĴó¶ÔÏó²Ù×÷µ¼Ö´íÎó¡°invalid large obj - descriptor¡±£¨·Ç·¨µÄ´ó¶ÔÏóÃèÊö·û£©£¿ - 4.21) ÎÒÈçºÎ´´½¨Ò»¸öȱʡֵÊǵ±Ç°Ê±¼äµÄ×ֶΣ¿ - 4.22) ΪʲôʹÓà IN µÄ×Ó²éѯÕâôÂý£¿ - 4.23) ÈçºÎ½øÐÐ outer join £¨ÍâÁ¬½Ó£©£¿ - 4.24) ÈçºÎʹÓÃÉæ¼°¶à¸öÊý¾Ý¿âµÄ²éѯ£¿ - 4.25) ÈçºÎÈú¯Êý·µ»Ø¶àÐлò¶àÁУ¿ - 4.26) ΪʲôÔÚ PL/PgSQL º¯ÊýÖв»Äܿɿ¿µØ´´½¨»òɾ³ýÁÙʱ±í£¿ - 4.27) ÓÐÄÄЩÊý¾Ý¸´ÖÆÑ¡Ï - 4.28) ÓÐÄÄЩÊý¾Ý¼ÓÃÜÑ¡Ï - - À©Õ¹ PostgreSQL - - 5.1) ÎÒдÁËÒ»¸öÓû§¶¨Ò庯Êý¡£µ±ÎÒÔÚ psql ÀïÔËÐÐʱ£¬ÎªÊ²Ã´»áµ¼Ö core - dump£¿ - 5.2) ÎÒÈçºÎÄܸø PostgreSQL ¹±Ï×һЩͦ²»´íµÄÐÂÀàÐͺͺ¯Êý£¿ - 5.3) ÎÒÔõÑùдһ¸ö·µ»ØÒ»Ìõ¼Ç¼µÄ C º¯Êý£¿ - 5.4) ÎÒÐÞ¸ÄÁËÒ»¸öÔ´Îļþ£¬ÎªÊ²Ã´ÖØÐ±àÒëºóûÓп´µ½¸Ä±ä£¿ +³£¼ûÎÊÌâ + + 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 ÊÇʲô£¿¸ÃÔõô·¢Òô£¿ +³£¼ûÎÊÌâ + + 1.1)PostgreSQL ÊÇʲô£¿¸ÃÔõô·¢Òô£¿ - PostgreSQL ¶Á×÷ Post-Gres-Q-L ¡£ - - PostgreSQL ÊÇÏÂÒ»´ú DBMS µÄÑо¿ÔÐÍ POSTGRES - Êý¾Ý¿â¹ÜÀíϵͳµÄÔöÇ¿°æ¡£PostgreSQL ÔÚ±£³Ö POSTGRES - µÄÇ¿´óµÄÊý¾ÝÄ£ÐͺͷḻµÄÊý¾ÝÀàÐ͵Ļù´¡ÉÏ£¬ÓÃÒ»¸öÀ©Õ¹Á赀 SQL - ×Ó¼¯È¡´úÁËÔÏ鵀 PostQuel ²éѯÓïÑÔ¡£PostgreSQL - ÊÇ×ÔÓɵIJ¢ÇÒËùÓÐÔ´´úÂë¶¼¿ÉÒÔ»ñµÃ¡£ - - PostgreSQL µÄ¿ª·¢ÓÉ²Î¼Ó PostgreSQL - ¿ª·¢ÓʼþÁбíµÄÒ»¸ö¿ª·¢ÈËԱС×é½øÐС£Ä¿Ç°µÄе÷ÈËÊÇ Marc G. Fournier - £¨scrappy@postgreSQL.org - £©¡££¨¹ØÓÚÈçºÎ¼ÓÈë²Î¼û1.6½Ú£©¡£Õâ¸ö¶ÓÎéÏÖÔÚ¸ºÔð PostgreSQL - µÄËùÓпª·¢¡£ + PostgreSQL ¶Á×÷ Post-Gres-Q-L£¬ÓÐʱºòÒ²¼ò³ÆÎªPostgres ¡£ - PostgreSQL 1.01 µÄ×÷ÕßÊÇ Andrew Yu ºÍ Jolly - Chen¡£»¹ÓÐÐí¶àÆäËûÈËÎªÒÆÖ²£¬²âÊÔ£¬µ÷ÊÔºÍÔöÇ¿´úÂë×öÁË´óÁ¿¹±Ïס£PostgreS - QL µÄ×î³õÆðÔ´ Postgres£¬ÊÇÔÚ¼ÓÖÝ´óѧ²®¿ËÀû·ÖУµÄ Michael Stonebraker - ½ÌÊÚµÄÖ¸µ¼Ï£¬ÓÉÐí¶àÑо¿Éú£¬±¾¿ÆÉúºÍ±à³ÌÖ°Ô±Íê³ÉµÄ¡£ + PostgreSQL + ÊÇÃæÏòÄ¿±êµÄ¹ØÏµÊý¾Ý¿âϵͳ£¬Ëü¾ßÓд«Í³ÉÌÒµÊý¾Ý¿âϵͳµÄËùÓй¦ÄÜ£¬Í¬Ê±ÓÖ + º¬Óн«ÔÚÏÂÒ»´ú DBMS ϵͳµÄʹÓõÄÔöÇ¿ÌØÐÔ¡£ PostgreSQL + ÊÇ×ÔÓÉÃâ·ÑµÄ£¬²¢ÇÒËùÓÐÔ´´úÂë¶¼¿ÉÒÔ»ñµÃ¡£ - Õâ¸öÈí¼þ×î³õÔÚ²®¿ËÀûµÄÃû×ÖÊÇ Postgres¡£ÔÚ 1995 Ä꣬µ±Ôö¼ÓÁË SQL - ¹¦Äܺó£¬ËüµÄÃû×Ö¸Ä³É Postgres95¡£ÔÚ 1996ÄêÄ©£¬²Å¸ÄÃûΪ PostgreSQL¡£ + PostgreSQL + µÄ¿ª·¢¶ÓÎéÖ÷ҪΪ־ԸÕߣ¬ËûÃDZ鲼ÊÀ½ç¸÷µØ²¢Í¨¹ý»¥ÁªÍø½øÐÐÁªÏµ£¬ÕâÊÇÒ»¸ö + ÉçÇø¿ª·¢ÏîÄ¿£¬Ëü²»±»Èκι«Ë¾¿ØÖÆ¡£ + ÈçÏë¼ÓÈ뿪·¢¶ÓÎ飬Çë²Î¼û¿ª·¢ÈËÔ±³£¼ûÎÊÌ⣨FAQ£© + http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html - 1.2) PostgreSQL µÄ°æÈ¨ÊÇʲô? + 1.2)PostgreSQL µÄ°æÈ¨ÊÇʲô? - PostgreSQL ÊÜÏÂÃæµÄ°æÈ¨Ô¼Êø¡£ + PostgreSQLµÄ·¢²¼×ñ´Ó¾ + µäµÄBSD°æÈ¨¡£¹ØÓÚÔ´´úÂëµÄÈçºÎʹÓÃûÓÐÈκÎÏÞÖÆ£¬ÎÒÃǺÜϲ»¶ÕâÖÖ·½Ê½²¢ÇÒ» + ¹Ã»ÓдòËã¸Ä±äËü¡£ - PostgreSQL Êý¾Ý¿â¹ÜÀíϵͳ + ÏÂÃæ¾ÍÊÇÎÒÃÇʹÓõÄBSD°æÈ¨ÄÚÈÝ£º - £¨PostgreSQL Data Base Management System£© + ²¿·Ö°æÈ¨£¨c£©1996-2005£¬PostgreSQL + È«Çò¿ª·¢Ð¡×飬²¿·Ö°æÈ¨£¨c£©1994-1996 ¼ÓÖÝ´óѧ¶Ê - ²¿·Ö°æÈ¨£¨c£©1996-2002£¬PostgreSQL È«Çò¿ª·¢Ð¡×é - ²¿·Ö°æÈ¨£¨c£©1994-6 ¼ÓÖÝ´óѧ¶Ê - - £¨Portions copyright (c) 1996-2002, PostgreSQL Global Development - Group - Portions Copyright (c) 1994-6 Regents of the University of + £¨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 @@ -155,8 +121,9 @@ copies.£© ÔÚÈκÎÇé¿öÏ£¬¼ÓÖÝ´óѧ¶¼²»³Ðµ£ÒòʹÓôËÈí¼þ¼°ÆäÎĵµ¶øµ¼ÖµĶÔÈκε±ÊÂÈË - µÄÖ±½ÓµÄ£¬¼ä½ÓµÄ£¬ÌØÊâµÄ£¬¸½¼ÓµÄ»òÕßÏà°é¶øÉúµÄË𻵣¬°üÀ¨ÀûÒæËðʧµÄÔðÈÎ - £¬¼´Ê¹¼ÓÖÝ´óѧÒѾ½¨ÒéÁËÕâЩËðʧµÄ¿ÉÄÜÐÔʱҲÊÇÈç´Ë¡£ + µÄÖ±½ÓµÄ£¬ + ¼ä½ÓµÄ£¬ÌØÊâµÄ£¬¸½¼ÓµÄ»òÕßÏà°é¶øÉúµÄË𻵣¬°üÀ¨ÀûÒæËðʧµÄÔðÈΣ¬¼´Ê¹¼ÓÖÝ + ´óѧÒѾ½¨ÒéÁËÕâЩËðʧµÄ¿ÉÄÜÐÔʱҲÊÇÈç´Ë¡£ £¨IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL @@ -165,8 +132,9 @@ 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 @@ -174,823 +142,584 @@ PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.£© - ÉÏÃæ¾ÍÊÇ BSD °æÈ¨ÉùÃ÷£¬Ò»¸ö¾ - µäµÄ¿ªÔ´°æÈ¨ÉùÃ÷¡£Ëü¶ÔÔ´´úÂëµÄʹÓÃδ×÷ÈκÎÏÞÖÆ¡£ÎÒÃÇϲ»¶Ëü²¢ÇÒ²»´òËã¸Ä - ±äËü¡£ - 1.3) PostgreSQL ÔËÐÐÔÚʲô Unix ƽ̨ÉÏ£¿ + 1.3)PostgreSQL ¿ÉÒÔÔËÐÐÔÚÄÄЩ²Ù×÷ϵͳƽ̨ÉÏ£¿ Ò»°ã˵À´£¬Ò»¸öÏÖ´úµÄ UNIX ¼æÈÝµÄÆ½Ì¨¶¼ÄÜÔËÐÐ PostgreSQL ¡£ÔÚ°²×°Ö¸ÄÏÀïÁгöÁË·¢²¼Ê±¾¹ýÃ÷È·²âÊÔµÄÆ½Ì¨¡£ - 1.4) ¿ÉÓÃµÄ·Ç Unix ƽ̨ÓÐÄÄЩ£¿ - - ¿Í»§¶Ë - - °Ñ libpq C ¿â£¬psql£¬ÆäËû½Ó¿ÚºÍ¿Í»§¶ËÓ¦ÓóÌÐò±àÒë³É¿ÉÒÔÔÚ MS Windows - ƽ̨ÉÏÔËÐÐÊÇ¿ÉÄܵġ£ÕâÖÖÇé¿öÏ£¬¿Í»§¶ËÔÚ MS Windows ÉÏÔËÐУ¬²¢ÇÒͨ¹ý - TCP/IP ÓëÒ»¸öÔËÐÐÔÚÎÒÃÇÖ§³ÖµÄ Unix - ƽ̨ÉϵķþÎñÆ÷½øÐÐͨѶ¡£·¢²¼°æ±¾Öаüº¬Ò»¸öÎļþ win32.mak ÓÃÓÚÉú³É - Win32 libpq ¿âºÍ psql ¡£PostgreSQL Ò²¿ÉÒÔºÍ ODBC ¿Í»§¶ËͨѶ¡£ - - ·þÎñÆ÷ + PostgreSQlÒ²¿ÉÒÔÖ±½ÓÔËÐÐÔÚ»ùÓÚ΢ÈíWindows-NTµÄ²Ù×÷ϵͳ£¬ÈçWin2000£¬Win + XP ºÍ Win2003£¬ÒÑÖÆ×÷Íê³ÉµÄ°²×°°ü¿É´Ó + http://pgfoundry.org/projects/pginstallerÏÂÔØ£¬»ùÓÚMSDOSµÄWindows²Ù×÷Ï + µÍ³ £¨Win95£¬Win98£¬WinMe£©ÐèҪͨ¹ýCygwinÄ£Äâ»·¾³ÔËÐÐPostgreSQL¡£ - Êý¾Ý¿â·þÎñÆ÷ÏÖÔÚ¿ÉÒÔͨ¹ý Cygwin £¬Cygnus µÄ Unix/NT ÒÆÖ²¿âÔÚ Windows - NT ºÍ Win2k ÉÏÔËÐС£²ÎÔÄ·¢²¼°æ±¾ÀïµÄ See pgsql/doc/FAQ_MSWIN Îļþ»ò - http://www.PostgreSQL.org/docs/faq-mswin.html ¡£ + ͬʱҲÓÐÒ»¸öΪNovell Netware 6¿ª·¢µÄ°æ±¾¿É´Ó http://forge.novell.com + »ñÈ¡£¬ÎªOS/2¿ª·¢µÄ°æ±¾¿É´Ó + http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgre + SQL&stype=all&sort=type&dir=%2F - ÒÆÖ²µ½ MS Win NT/2000/XP µÄ±¾»ú°æµÄ¹¤×÷ÕýÔÚ½øÐС£ - - 1.5) ÎÒ´ÓÄÄÀïÄܵõ½ PostgreSQL£¿ + 1.4)ÎÒ´ÓÄÄÀïÄܵõ½ PostgreSQL£¿ - PostgreSQL µÄÖ÷ÄäÃûFTPÕ¾µãÊÇ - ftp://ftp.PostgreSQL.org/pub£¬¾µÏñÕ¾µã¿ÉÒԲο¼ÎÒÃÇÍøÕ¾µÄÖ÷Ò³¡£ + ͨ¹ýä¯ÀÀÆ÷¿É´Óhttp://www.postgresql.org/ftp/ÏÂÔØ£¬Ò²¿Éͨ¹ýFTP£¬´Ó + ftp://ftp.PostgreSQL.org/pub/Õ¾µãÏÂÔØ¡£ - 1.6) ÎÒ´ÓÄÄÀïÄܵõ½¶Ô PostgreSQL µÄÖ§³Ö£¿ + 1.5)ÎÒ´ÓÄÄÀïÄܵõ½¶Ô PostgreSQL µÄÖ§³Ö£¿ - Ö÷ÒªµÄÓʼþÁбíÊÇ£ºpgsql-general@postgreSQL.org¡£¿ÉÒÔÔÚÄÇÀïÌÖÂÛÓÐ¹Ø - PostgreSQL µÄÎÊÌâ¡£Òª¼ÓÈëÁÐ±í£¬·¢Ò»·âÓʼþÄÚÈÝ£¨²»ÊÇÖ÷ÌâÐУ©Îª - subscribe - end - - µÄÓʼþµ½ pgsql-general-request@postgreSQL.org ¡£ + PostgreSQLÉçÇøÍ¨¹ýÓʼþÁбíΪÆä´ó¶àÊýÓû§Ìṩ°ïÖú£¬¼ÓÈëÓʼþÁбíµÄÖ÷Õ¾µã + ÊÇ + http://www.postgresql.org/community/lists/£¬Ò»°ãÇé¿öÏ£¬ÏȼÓÈëGeneral + »ò BugÓʼþÁбíÊÇÒ»¸ö½ÏºÃµÄ¿ªÊ¼¡£ - »¹¿ÉÒÔ»ñȡժҪÁÐ±í¡£Òª¼ÓÈëÕâ¸öÁÐ±í£¬·¢Óʼþµ½£ºpgsql-general-digest-req - uest@postgreSQL.org£¬ÆäÄÚÈÝΪ£º - subscribe - end - - ÿµ±Ö÷Áбí´ïµ½´óÔ¼ 30k µÄÏûÏ¢ÄÚÈÝʱ£¬ÕªÒª¾Í·¢Ë͸øÕâ¸öÁбíµÄ³ÉÔ±¡£ + Ö÷ÒªµÄIRCƵµÀÊÇÔÚFreeNode(irc.freenode.net)µÄ#postgresql£¬ÎªÁËÁ¬ÉÏ´ËÆµ + µÀ£¬¿ÉÒÔʹÓÃUNIX³ÌÐòirc£¬ÆäÖ¸Áî¸ñʽ£º irc -c '#postgresql' "$USER" + irc.freenode.net + £¬»òÕßʹÓÃÆäËûIRC¿Í»§¶Ë³ÌÐò¡£ÔÚ´ËÍøÂçÖл¹´æÔÚÒ»¸öPostgreSQLµÄÎ÷°àÑÀƵµ + À(#postgersql-es)ºÍ·¨ÓïÆµµÀ + (#postgresql-fr)¡£Í¬ÑùµØ£¬ÔÚEFNETÉÏÒ²ÓÐÒ»¸öPostgreSQLµÄ½»Á÷ƵµÀ¡£ - »¹¿ÉÒԲμӳô³æÓʼþÁÐ±í¡£Òª¼ÓÈëÕâ¸öÁÐ±í£¬·¢ËÍÒ»¸öÓʼþµ½ - bugs-request@postgreSQL.org£¬ÄÚÈÝΪ£º - subscribe - end - - »¹¿ÉÒԲμӿª·¢ÈËÔ±ÓʼþÁÐ±í¡£Òª¼ÓÈëÕâ¸öÁÐ±í£¬·¢ËÍÒ»¸öÓʼþµ½ - hackers-request@postgreSQL.org£¬ÄÚÈÝΪ£º - subscribe - end - - ÆäËûµÄ¹ØÓÚ PostgreSQL ÓʼþÁбíºÍÆäËûÐÅÏ¢¿ÉÒÔÔÚ PostgreSQL µÄ WWW - Ö÷Ò³ÕÒµ½£º + ÉÌÒµÖ§³Ö¹«Ë¾µÄÁбíÔÚ http://techdocs.postgresql.org/companies.php¡£ - http://postgresql.org/ - - ÔÚ EFNet ÀﻹÓÐÒ»¸ö IRC ƵµÀ£¬ÆµµÀ #PostgreSQL¡£ÎÒÓà unix ÃüÁîirc -c - '#PostgreSQL' "$USER" irc.phoenix.net + 1.6)ÎÒÈçºÎÌá½»Ò»¸öBUG±¨¸æ£¿ + + ¿É·ÃÎÊ + http://www.postgresql.org/support/submitbug£¬ÌîдBugÉϱ¨±í¸ñ¼´¿É¡£ - ÉÌÒµÖ§³Ö¹«Ë¾µÄÁбíÔÚ - http://www.PostgreSQL.org/users-lounge/commercial-support.html ¡£ + ͬÑùÒ²¿É·ÃÎÊftpÕ¾µãftp://ftp.PostgreSQL.org/pub/ + ¼ì²éÓÐÎÞ¸üеÄPostgreSQL°æ±¾»ò²¹¶¡¡£ - 1.7) PostgreSQL ×îеİ汾ÊÇʲô£¿ + 1.7)×îаæµÄPostgreSQL ÊÇʲô£¿ - PostgreSQL ×îеİ汾Êǰ汾 7.2.3¡££¨Òë×¢£ºÏÖÔÚÓ¦¸ÃÊÇ 7.3.1 ÁË¡££© + PostgreSQL ×îеİ汾Êǰ汾 8.0.2 £¨Òë×¢£ºÏÖ×îа汾Ϊ8.0.3£©¡£ - ÎÒÃǼƻ®Ã¿ËĸöÔ·¢²¼Ò»¸öÖ÷Òª°æ±¾¡£ + ÎÒÃǼƻ®Ã¿Äê·¢²¼Ò»¸öÖ÷Òª°æ±¾£¬Ã¿¼¸¸öÔ·¢²¼Ò»¸öС°æ±¾¡£ - 1.8) ÓÐÄÄЩ¿ÉÓÃµÄ PostgreSQL µÄÎĵµ£¿ + 1.8)Äܹ»»ñÈ¡µÄ×îÐÂÎĵµÓÐÄÄЩ£¿ - ÔÚ·¢²¼°üÀïÓÐһЩÊֲᣬÊÖ²áÒ³ºÍһЩСµÄ²âÊÔÀý×Ó¡£²Î¼û /doc - Ŀ¼¡££¨Òë×¢£ºÓ¦Îª $PGHOME/doc£©¡£Ä㻹¿ÉÒÔÔÚÏßä¯ÀÀ PostgreSQL - µÄÊֲᣬÔÚ http://www.PostgreSQL.org/users-lounge/docs/ ¡£ + PostgreSQL°üº¬´óÁ¿µÄÎĵµ£¬Ö÷ÒªÓÐһЩÊֲᣬÊÖ²áÒ³ºÍһЩµÄ²âÊÔÀý×Ó¡£²Î¼û + /doc Ŀ¼£¨Òë×¢£ºÓ¦Îª $PGHOME/doc£©¡£ Ä㻹¿ÉÒÔÔÚÏßä¯ÀÀ PostgreSQL + µÄÊֲᣬÆäµØÖ·ÊÇ£ºhttp://www.PostgreSQL.org/docs¡£ ÓÐÁ½±¾¹ØÓÚ PostgreSQL µÄÊéÔÚÏßÌṩ£¬ÔÚ http://www.PostgreSQL.org/docs/awbook.html ºÍ - http://www.commandprompt.com/ppbook/ ¡£ÔÚ - http://www.ca.PostgreSQL.org/books/ ÉÏÓйØÓÚ PostgreSQL - µÄ¿É¹ºÊé¼®µÄÁÐ±í¡£ÔÚ http://techdocs.PostgreSQL.org/ ÉÏÊÕ¼¯ÁËÓÐ¹Ø - PostgreSQL µÄ¼¼ÊõÎÄÕ¡£ - - psql ÓÐһЩ²»´íµÄ \d ÃüÁÏÔʾ¹ØÓÚÀàÐÍ£¬²Ù×÷·û£¬º¯Êý£¬¾Û¼¯µÈµÄÐÅÏ¢¡£ - - ÎÒÃÇµÄ web Õ¾µã°üº¬¸ü¶àµÄÎĵµ£® - - 1.9) ÎÒÈçºÎÁ˽âÒÑÖªµÄ BUG ºÍȱʧµÄÌØÐÔ£¿ - - PostgreSQL Ö§³ÖÒ»¸öÀ©Õ¹Á赀 SQL-92 µÄ×Ó¼¯¡£²ÎÔÄÎÒÃÇµÄ TODO - ÁÐ±í£¬»ñȡһ¸öÒÑÖª³ô³æ£¬È±Ê§ÌØÐÔºÍδÀ´¼Æ»®¡£ + http://www.commandprompt.com/ppbook/ ¡£ + Ò²ÓдóÁ¿µÄPostgreSQLÊé¼®¿É¹©¹ºÂò£¬ÆäÖÐ×îΪÁ÷ÐеÄÒ»±¾ÊÇÓÉKorry + Douglas±àдµÄ¡£ÔÚ + http://techdocs.PostgreSQL.org/techdocs/bookreviews.phpÉÏ + ÉÏÓдóÁ¿ÓйØPostgreSQLÊé¼®µÄ¼ò½é¡£ ÔÚ + http://techdocs.PostgreSQL.org/ÉÏÊÕ¼¯ÁËÓÐ¹Ø PostgreSQL + µÄ´óÁ¿¼¼ÊõÎÄÕ¡£ - 1.10) ÎÒÓ¦¸ÃÔõÑùѧϰ SQL£¿ - - ÔÚ http://www.postgresql.org/docs/awbook.html µÄ¹ØÓÚ PostgreSQL - µÄÊé½ÌÊÚ SQL¡££¨Òë×¢£ºÎÒÏÂÔØµ½±¾µØÁË¡££©ÔÚ - http://www.commandprompt.com/ppbook ÓÐÁíÍâÒ»±¾¹ØÓÚ PostgreSQL - µÄÊé¡£ÔÚhttp://www.intermedia.net/support/sql/sqltut.shtm£¬http://ourw - orld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM ºÍ - http://sqlcourse.com ÓÐÒ»¸ö²»´íµÄÈëÃŽ̡̳£ - - ÁíÒ»¸öÊÇ "Teach Yourself SQL in 21 Days, Second - Edition"£¨21Ììѧ»áSQL£¬µÚ¶þ°æ£©£¬ÔÚ - http://members.tripod.com/er4ebus/sql/index.htm + ¿Í»§¶ËµÄÃüÁîÐгÌÐòpsqlÓÐһЩÒÔ \d + ¿ªÍ·µÄÃüÁ¿ÉÏÔʾ¹ØÓÚÀàÐÍ£¬²Ù×÷·û£¬º¯Êý£¬»ã×ܵȵÄÐÅÏ¢£¬Ê¹Óà \? + ¿ÉÒÔÏÔʾËùÓпÉÓõÄÃüÁî¡£ - ÎÒÃǵÄÐí¶àÓû§Ï²»¶ The Practical SQL Handbook, Bowman, Judith S., et - al., Addison-Wesley ¡£ ÆäËûµÄÓÐ The Complete Reference SQL, Groff et - al., McGraw-Hill ¡£ + ÎÒÃÇµÄ web Õ¾µã°üº¬¸ü¶àµÄÎĵµ¡£ - 1.11) PostgreSQL ÊÇ Y2K ¼æÈݵÄÂ𣿠+ 1.9)ÎÒÈçºÎÁ˽âÒÑÖªµÄ BUG »òÔÝȱµÄ¹¦ÄÜ£¿ - ÊÇ£¬ÎÒÃǺÜÈÝÒ׿ØÖÆ 2000 AD Ö®ºóºÍ 2000 BC ֮ǰµÄÈÕÆÚ¡£ + PostgreSQL Ö§³ÖÒ»¸öÀ©Õ¹Á赀 SQL-92 µÄ×Ó¼¯¡£²ÎÔÄÎÒÃǵÄTODO + ÁÐ±í£¬»ñȡһ¸öÒÑÖªBug£¬ÔÝȱµÄ¹¦Äܺͽ«À´µÄ¼Æ»®¡£ - 1.12) ÎÒÓ¦¸ÃÔõÑù¼ÓÈ뿪·¢¶ÓÎ飿 + 1.10)ÎÒÓ¦¸ÃÔõÑùѧϰ SQL £¿ - Ê×ÏÈ£¬ÏÂÔØ×îеÄÔ´´úÂë²¢ÔĶÁÎÒÃÇ web Õ¾µã»ò·¢²¼°üÖÐµÄ PostgreSQL - ¿ª·¢ÕßÎĵµ¡£Æä´Î£¬¼ÓÈë pgsql-hackers ºÍ pgsql-patches - ÓʼþÁÐ±í¡£µÚÈý£¬Ïò pgsql-patches Ìá½»¸ßÖÊÁ¿µÄ²¹¶¡³ÌÐò¡£ + Ê×ÏÈ¿¼ÂÇÉÏÊöÌáµ½µÄÓë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¡£ - ÏÖÔÚ´ó¸ÅÓÐÊ®¼¸¸öÈËÓÐ PostgreSQL CVS ¹éµµ COMMIT µÄȨÏÞ¡£ËûÃǶ¼ÒѾ - Ìá½»Á˷dz£¶à¸ßÖÊÁ¿µÄ²¹¶¡ÁË£¬ÒÔÖÁÓÚÏÖÓеÄÌá½»È˺ÜÄѸúÉϽÚ×࣬²¢ÇÒÎÒÃÇÏà - ÐÅËûÃÇÌá½»µÄ²¹¶¡¶¼ÊǸßÖÊÁ¿µÄ¡£ - - 1.13) ÎÒÓ¦¸ÃÔõÑùÌá½»Ò»¸öBUG±¨¸æ£¿ + 1.11)ÎÒÓ¦¸ÃÔõÑù¼ÓÈ뿪·¢¶ÓÎ飿 - Çë·ÃÎÊ http://www.PostgreSQL.org/bugs/bugs.php µÄ PostgreSQL BugTool - Ò³Ãæ, ÄÇÀï¸ø³öÁËÈçºÎÌá½»Ò»¸öBUG±¨¸æµÄÖ¸ÄÏ¡£ - - ͬÑùÒ²Òª¿´¿´ÎÒÃÇµÄ ftp Õ¾µã - ftp://ftp.postgreSQL.org/pub£¬¿´ÓÐûÓиüÐ嵀 PostgreSQL °æ±¾»ò²¹¶¡¡£ + Ïê¼û Developer's FAQ ¡£ - 1.14) PostgreSQL ºÍÆäËû DBMS ±ÈÆðÀ´ÈçºÎ£¿ + 1.12)PostgreSQL ºÍÆäËûÊý¾Ý¿âϵͳ±ÈÆðÀ´ÈçºÎ£¿ ÆÀ¼ÛÈí¼þÓкü¸ÖÖ·½·¨£ºÌØÐÔ£¬ÐÔÄÜ£¬¿É¿¿ÐÔ£¬Ö§³ÖºÍ¼Û¸ñ¡£ ÌØÐÔ - PostgreSQL ÓµÓдóÐÍÉÌÓà DBMS - Àï´ó¶àÊýÌØÐÔ£¬ÀýÈ磺ÊÂÎñ£¬×Ó²éѯ£¬´¥·¢Æ÷£¬ÊÓͼ£¬Íâ¼ü²Î¿¼ÍêÕûÐÔº - ͸´ÔÓµÄËøµÈ¡£ÎÒÃÇ»¹ÓÐһЩËüÃÇûÓеÄÌØÐÔ£¬ÈçÓû§¶¨ÒåÀàÐÍ£¬¼Ì³Ð£¬ - ¹æÔòºÍ¶à°æ±¾²¢ÐпØÖÆÒÔ¼õÉÙËøµÄÕùÓõȡ£ + PostgreSQL ÓµÓдóÐÍÉÌÓà DBMS Àï´ó¶àÊýÌØÐÔ£¬ + ÀýÈ磺ÊÂÎñ£¬×Ó²éѯ£¬´¥·¢Æ÷£¬ÊÓͼ£¬Íâ¼ü²Î¿¼ÍêÕûÐԺ͸´ÔÓµÄËøµÈ¡£ + ÎÒÃÇ»¹ÓÐһЩËüÃÇûÓеÄÌØÐÔ£¬ÈçÓû§¶¨ÒåÀàÐÍ£¬¼Ì³Ð£¬¹æÔòºÍ¶à°æ±¾² + ¢ÐпØÖÆÒÔ¼õÉÙËøµÄÕùÓõȡ£ ÐÔÄÜ - PostgreSQL - ºÍÆäËûÉÌÓúͿªÔ´µÄÊý¾Ý¿â¾ßÓÐÀàËÆµÄÐÔÄÜ¡£¶ÔijЩ´¦ÀíËü±È½Ï¿ì£¬¶ÔÆ - äËûһЩ´¦ÀíËü±È½ÏÂý¡£Óë MySQL »ò¸üÇá±ãµÄÊý¾Ý¿âϵͳ±È½Ï£¬ÎÒÃÇÔÚ - insert/update ʱÂý£¬ÒòΪÎÒÃÇÓÐÊÂÎñ´¦Àí¡£µ±È» MySQL - ²»¾ßÓÐÎÒÃÇÔÚÉÏÃæµÄÌØÐÔ - ¶ÎÀï¸ø³öµÄÈκÎÌØÐÔ¡£ÎÒÃǵÄÖ÷Òª·½ÏòÊǿɿ¿ÐÔºÍÌØÐÔ£¬¾¡¹ÜÎÒÃÇÔÚÿ´ - η¢²¼Ê±²»¶ÏµØ¸Ä½øÐÔÄÜ¡£ÓÐÒ»¸öºÜÓÐȤµÄÍøÒ³±È½ÏÁË PostgreSQL ºÍ - MySQL http://openacs.org/why-not-mysql.html¡£ + PostgreSQL ºÍÆäËûÉÌÓúͿªÔ´µÄÊý¾Ý¿â¾ßÓÐÀàËÆµÄÐÔÄÜ¡£ + ¶ÔijЩ´¦ÀíËü±È½Ï¿ì£¬¶ÔÆäËûһЩ´¦ÀíËü±È½ÏÂý¡£ + ÓëÆäËûÊý¾Ý¿âÏà±È£¬ÎÒÃǵÄÐÔÄÜͨ³£ÔÚ +/- 10%Ö®¼ä¡£ ¿É¿¿ÐÔ - ÎÒÃÇÖªµÀ DBMS - ±ØÐëÊǿɿ¿µÄ£¬·ñÔòËü¾ÍÒ»µãÓö¼Ã»ÓС£ÎÒÃÇŬÁ¦×öµ½·¢²¼¾ + ÎÒÃÇÖªµÀ DBMS ±ØÐëÊǿɿ¿µÄ£¬·ñÔòËü¾ÍÒ»µãÓö¼Ã»ÓС£ + ÎÒÃÇŬÁ¦×öµ½·¢²¼¾ ¹ýÈÏÕæ²âÊԵģ¬Îȶ¨µÄ³ô³æ×îÉٵĴúÂ롣ÿ¸ö°æ±¾ÖÁÉÙÓÐÒ»¸öÔ嵀 beta - ²âÊÔ£¬²¢ÇÒÎÒÃǵķ¢²¼ÀúÊ·ÏÔʾÎÒÃÇ¿ÉÒÔÌṩÎȶ¨µÄ£¬Àι̵ģ¬¿ÉÓÃÓÚÉ - ú²úʹÓõİ汾¡£ÎÒÃÇÏàÐÅÔÚÕâ·½ÃæÎÒÃÇÓëÆäËûµÄÊý¾Ý¿âÈí¼þÊÇÏ൱µÄ¡£ + ²âÊÔʱ¼ä£¬²¢ÇÒÎÒÃǵķ¢²¼ÀúÊ·ÏÔʾÎÒÃÇ¿ÉÒÔÌṩÎȶ¨µÄ£¬Àι̵ģ¬¿ÉÓ + ÃÓÚÉú²úʹÓõİ汾¡£ÎÒÃÇÏàÐÅ + ÔÚÕâ·½ÃæÎÒÃÇÓëÆäËûµÄÊý¾Ý¿âÈí¼þÊÇÏ൱µÄ¡£ Ö§³Ö ÎÒÃǵÄÓʼþÁбíÌṩһ¸ö·Ç³£´óµÄ¿ª·¢ÈËÔ±ºÍÓû§µÄ×éÒÔ°ïÖú½â¾öËùÅöµ - ½µÄÈκÎÎÊÌâ¡£ÎÒÃDz»Äܱ£Ö¤¿Ï¶¨Äܽâ¾öÎÊÌ⣬Ïà±È֮ϣ¬ÉÌÓà DBMS - Ò²²¢²»ÊÇ×ÜÄܹ»Ìṩ½â¾ö·½·¨¡£Ö±½ÓÓ뿪·¢ÈËÔ±£¬Óû§Èº£¬ÊÖ²áºÍÔ´³ÌÐ - ò½Ó´¥Áî PostgreSQL µÄÖ§³Ö±ÈÆäËû DBMS + ½µÄÈκÎÎÊÌâ¡£ ÎÒÃDz»Äܱ£Ö¤¿Ï¶¨Äܽâ¾öÎÊÌ⣬Ïà±È֮ϣ¬ÉÌÓà DBMS + Ò²²¢²»ÊÇ×ÜÄܹ»Ìṩ½â¾ö·½·¨¡£ + Ö±½ÓÓ뿪·¢ÈËÔ±£¬Óû§Èº£¬ÊÖ²áºÍÔ´³ÌÐò½Ó´¥Áî PostgreSQL + µÄÖ§³Ö±ÈÆäËû DBMS »¹ÒªºÃ¡£»¹ÓÐһЩÉÌÒµÐÔµÄÔ¤°ü×°µÄÖ§³Ö£¬¿ÉÒÔ¸øÌṩ¸øÄÇЩÐèÒªµÄÈË¡ - ££¨²ÎÔÄÖ§³Ö FAQ Ìõ¿î 1.6 С½Ú¡££© + ££¨²ÎÔÄ FAQ Ìõ¿î 1.5 С½Ú£© ¼Û¸ñ - ÎÒÃǶÔÈκÎÓÃ;¶¼Ãâ·Ñ£¬°üÀ¨ÉÌÓúͷÇÉÌÓÃÄ¿µÄ¡£Äã¿ÉÒÔ²»¼ÓÏÞÖÆµØÏòÄ - ãµÄ²úÆ·Àï¼ÓÈëÎÒÃǵĴúÂ룬³ýÁËÄÇЩÎÒÃÇÔÚÉÏÃæµÄ°æÈ¨ÉùÃ÷ÀïÉùÃ÷µÄ - BSD ·ç¸ñµÄ°æÈ¨Íâ¡£ + ÎÒÃǶÔÈκÎÓÃ;¶¼Ãâ·Ñ£¬°üÀ¨ÉÌÓúͷÇÉÌÓÃÄ¿µÄ¡£ + Äã¿ÉÒÔ²»¼ÓÏÞÖÆµØÏòÄãµÄ²úÆ·Àï¼ÓÈëÎÒÃǵĴúÂ룬³ýÁËÄÇЩÎÒÃÇÔÚÉÏÃæµ + İæÈ¨ÉùÃ÷ÀïÉùÃ÷µÄ BSD ·ç¸ñµÄ°æÈ¨Íâ¡£ - 1.15) ÎÒÓ¦¸ÃÔõÑùÔÞÖú PostgreSQL £¿ - - ×Ô´Ó1996Ä꿪ʼ£¬PostgreSQL ÒѾÓÐÁËÒ»¸öÓÅÐãµÄ×éÖ¯¡£ÕâЩӦ¸Ã¹é¹¦ÓÚ Marc - Fournier£¬ÊÇËû´´½¨Á˲¢ÔÚÕâЩÄêÒ»Ö±¹ÜÀíÕâ¸ö×éÖ¯¡£ - - ¶ÔÓÚÒ»¸ö¿ªÔ´ÏîÄ¿À´Ëµ£¬ÖÊÁ¿»ù´¡ÉèÊ©ÊǷdz£ÖØÒªµÄ¡£ËüÄÜ·ÀÖ¹³öÏÖÑÏÖØÑÓ³ÙÏî - Ŀǰ½øµÄ»ìÂÒ¡£ - - ÏÔÈ»£¬Õâ¸ö×éÖ¯µÄÔËת³É±¾²»·Æ¡£Î¬³ÖÆäǰ½øÓи÷ÖÖÔ¶ȵġ¢Ò»´ÎÐԵĿªÖ§¡£Èç - ¹ûÄã»òÕßÄãµÄ¹«Ë¾ÄܽøÐоèÔùÒÔÖ§³ÖÕâÏîÊÂÒµ£¬Çë·ÃÎÊ - http://store.pgsql.com/shopping/ ½øÐоèÔù¡£ - - ËäÈ»¸ÃÍøÒ³Ìá¼°ÁË PostgreSQL ¹«Ë¾£¬ÕâЩ¾èÔù½«½öÓÃÓÚÖ§³Ö PostgreSQL - ÏîÄ¿£¬²¢²»»áÓÃÓÚ×ÊÖúû¸öÌØ¶¨µÄ¹«Ë¾¡£Èç¹ûÄãÔ¸Ò⣬Ҳ¿ÉÒÔÓʼÄ֧Ʊµ½ÁªÏµµØ - Ö·¡£ + 1.13)Ë¿ØÖÆPostgreSQL £¿ + + Èç¹ûÄãÔÚѰÕÒPostgreSQLµÄÕÆÃÅÈË£¬»òÊÇʲôÖÐÑëίԱ»á£¬»òÊÇʲôËùÊô¹«Ë¾£¬ + ÄãÖ»ÄÜ·ÅÆúÁË---ÒòΪһ¸öÒ²²»´æÔÚ£¬µ«ÎÒÃǵÄÈ·ÓÐÒ»¸ö + ίԱ»áºÍCVS¹ÜÀí×飬µ«ÕâЩ¹¤×÷×éµÄÉèÁ¢Ö÷ÒªÊÇΪÁ˽øÐйÜÀí¹¤×÷¶ø²»ÊǶÔPos + tgreSQL½øÐпØÖÆ£¬PostgreSQLÏîÄ¿ÊÇÓÉÈκÎÈ˾ù + ¿É²Î¼ÓµÄ¿ª·¢ÈËÔ±ÉçÇøºÍËùÓÐÓû§¿ØÖƵģ¬ÄãËùÐèÒª×öµÄ¾ÍÊǼÓÈëÓʼþÁÐ±í£¬²Î + ÓëÌÖÂÛ¼´¿É£¨Òª²ÎÓëPostgreSQLµÄ¿ª·¢Ïê¼û Developer's FAQ »ñÈ¡ÐÅÏ¢£©¡£ _________________________________________________________________ - Óû§¿Í»§¶ËÎÊÌâ - - 2.1) ÓÐ PostgreSQL µÄ ODBC Çý¶¯Ã´£¿ +Óû§¿Í»§¶ËÎÊÌâ + + 2.1)ÎÒÃÇ¿ÉÒÔÓÃʲôÓïÑÔºÍ PostgreSQL ´ò½»µÀ£¿ - ÓÐÁ½¸ö ODBC Çý¶¯¿ÉÒÔ»ñµÃ£¬PsqlODBC ºÍ OpenLink ODBC. - - ¿ÉÒÔÔÚhttp://gborg.postgresql.org/project/psqlodbc/projdisplay.php - ÏÂÔØ PsqlODBC ¡£ + PostgreSQL(ȱʡÇé¿ö)Ö»°²×°ÓÐCºÍÄÚǶʽCµÄ½Ó¿Ú£¬ÆäËûµÄ½Ó¿Ú¶¼ÊǶÀÁ¢µÄÏîÄ¿ + £¬Äܹ»·Ö±ðÏÂÔØ£¬ÕâЩ½Ó¿ÚÏîÄ¿¶ÀÁ¢µÄºÃ´¦ + ÊÇËûÃÇ¿ÉÒÔÓи÷×Եķ¢²¼¼Æ»®ºÍ¸÷×Ô¶ÀÁ¢µÄ¿ª·¢×é¡£ - OpenLink ODBC ¿ÉÒÔ´Ó http://www.openlinksw.com/ »ñµÃ¡£ËüÓëËûÃǵıê×¼ - ODBC ¿Í»§¶ËÈí¼þ¼æÈÝ£¬Òò¶øÄã¿ÉÒÔÔÚÈκÎËûÃÇÖ§³ÖµÄ¿Í»§¶Ëƽ̨£¨Win, Mac, - Unix, VMS£©ÉÏʹÓà PostgreSQL ODBC¡£ + һЩ±à³ÌÓïÑÔÈçPHP¶¼ÓзÃÎÊ PostgreSQL + µÄ½Ó¿Ú£¬Perl,TCL,PythonÒÔ¼°ºÜ¶àÆäËûÓïÑԵĽӿÚÔÚ + http://gborg.postgresql.org ÉϵÄDrivers/InterfacesС½Ú¿ÉÕÒµ½£¬ + ²¢ÇÒͨ¹ýInternetºÜÈÝÒ×ËÑË÷µ½¡£ - ËûÃÇ¿ÉÄܽ«Õâ¸ö²úÆ·ÏúÊÛ¸øÄÇЩÐèÒªÉÌÒµÖ§³ÖµÄÓû§£¬µ«ÊÇ×ÜÊÇÓÐÒ»¸ö - freeware £¨×ÔÓÉÈí¼þ£©µÄ°æ±¾¿ÉÒԵõ½¡£ÇëѯÎÊ - postgres95@openlink.co.uk¡£ - - 2.2) ÓÐʲô¹¤¾ß¿ÉÒÔ°Ñ PostgreSQL ÓÃÓÚ Web Ò³Ãæ£¿ + 2.2)ÓÐʲô¹¤¾ß¿ÉÒÔ°Ñ PostgreSQL ÓÃÓÚ Web Ò³Ãæ£¿ - Ò»¸ö½éÉÜÒÔÊý¾Ý¿âΪºǫ́µÄͦ²»´íµÄ Õ¾µãÊÇ£ºhttp://www.webreview.com ¡£ + Ò»¸ö½éÉÜÒÔÊý¾Ý¿âΪºǫ́µÄͦ²»´íµÄÕ¾µãÊÇ£ºhttp://www.webreview.com¡£ - ¶ÔÓÚ Web ¼¯³É£¬PHP ÊÇÒ»¸ö¼«ºÃµÄ½Ó¿Ú¡£ËüÔÚ£ºhttp://www.php.net/ ¡£ + ¶ÔÓÚ Web ¼¯³É£¬PHP ÊÇÒ»¸ö¼«ºÃµÄ½Ó¿Ú¡£ËüÔÚ£ºhttp://www.php.net/¡£ ¶ÔÓÚ¸´ÔÓµÄÈÎÎñ£¬ºÜ¶àÈ˲ÉÓà Perl ½Ó¿ÚºÍ CGI.pm »ò mod_perl ¡£ - 2.3) PostgreSQL ÓµÓÐͼÐÎÓû§½çÃæÂ𣿠- - Êǵġ£Óм¸¸öÊÊÓÃÓÚ PostgreSQL - µÄͼÐνӿڡ£°üÀ¨PgAccess£¨http://www.pgaccess.com)£¬PgAdmin II - £¨http://www.pgadmin.org£¬½öÊÊÓÃÓÚWin32£©£¬ RHDB Admin - (http://sources.redhat.com/rhdb/£© ÒÔ¼° Rekall - £¨http://www.thekompany.com/products/rekall/£¬ - רÓеÄ/proprietary)¡£»¹ÓÐPHPPgAdmin - £¨http://phppgadmin.sourceforge.net/£© £¬Ò»¸ö»ùÓÚ web µÄ PostgreSQL - ·ÃÎʽӿڡ£ - - ÎÒÃÇÓÐÒ»¸ö²»´íµÄͼÐÎÓû§½çÃæ£¬³ÆÎª PgAccess - £¬ËüÒ²¿ÉÒÔÓÃ×÷±¨±íÉú³ÉÆ÷¡£ÍøÒ³ÊÇ http://www.pgaccess.org/¡£ - - 2.4) ÎÒÃÇ¿ÉÒÔÓÃʲôÓïÑÔºÍ PostgreSQL ´ò½»µÀ£¿ + 2.3)PostgreSQL ÓµÓÐͼÐÎÓû§½çÃæÂ𣿠- ´ó¶àÊýÁ÷Ðеıà³ÌÓïÑÔ¶¼ÓзÃÎÊ PostgreSQL - µÄ½Ó¿Ú¡£Çë¼ì²é±à³ÌÓïÑÔµÄÀ©Õ¹Ä£¿éÁÐ±í¡£ - - PostgreSQL ·¢²¼°üÖаüº¬ÁËÒÔϽӿڣº - * C (libpq) - * Embedded C (ecpg) - * Java (jdbc) - * Python (PyGreSQL) - * TCL (libpgtcl) - - ÆäËûµÄ½Ó¿ÚÔÚ http://gborg.postgresql.org É쵀 Drivers/Interfaces - С½Ú¡£ + Êǵģ¬ÔÚ + http://techdocs.postgresql.org/guides/GUIToolsÓÐÒ»¸öÏêϸµÄÁÐ±í¡£ _________________________________________________________________ - ϵͳ¹ÜÀíÎÊÌâ - - 3.1) ÎÒÔõÑùÄÜ°Ñ PostgreSQL ×°ÔÚ /usr/local/pgsql ÒÔÍâµÄµØ·½£¿ +ϵͳ¹ÜÀíÎÊÌâ + + 3.1)ÎÒÔõÑùÄÜ°Ñ PostgreSQL ×°ÔÚ /usr/local/pgsql ÒÔÍâµÄµØ·½£¿ ÔÚÔËÐÐ configure ʱ¼ÓÉÏ --prefix Ñ¡Ïî¡£ - 3.2) µ±ÎÒÔËÐÐ postmaster ʱ£¬³öÏÖ Bad System Call£¨ÏµÍ³µ÷ÓÃ´í£©»ò Core - Dumped ´íÎó¡£ÎªÊ²Ã´£¿ - - Õâ¿ÉÄÜÊÇºÜ¶à·½ÃæµÄÎÊÌ⣬ÇëÏȼì²é²Ù×÷ϵͳºËÐÄÊÇ·ñÖ§³Ö System V - À©Õ¹¡£PostgreSQL ÐèÒªÄÚºËÖ§³Ö¹²ÏíÄÚ´æºÍÐźŵơ£ - - 3.3) µ±ÎÒÊÔͼÔËÐÐ postmaster ʱ£¬³öÏÖ IpcMemoryCreate ´íÎó¡£ÎªÊ²Ã´£¿ + 3.2)ÎÒÈçºÎ¿ØÖÆÀ´×ÔÆäËûÖ÷»úµÄÁ¬½Ó£¿ - ÄãҪôÊÇûÓÐÔÚÄÚºËÀïÕýÈ·ÅäÖù²ÏíÄڴ棬ҪôÊÇÄãÐèÒªÀ©´óÄãµÄÄں˵ĿÉÓù² - ÏíÄÚ´æ¡£ÐèÒªµÄ¹²ÏíÄÚ´æ¾ßÌåµÄÊýÁ¿È¡¾öÓÚÄãµÄÌåϵ½á¹¹ºÍÄãÅäÖÃÄãµÄ - postmaster - ÔËÐÐʱʹÓõĻº³åÇøºÍºó¶Ë½ø³ÌÊýÄ¿¡£¶Ô´ó¶àÊýϵͳ£¬Ê¹ÓÃȱʡ»º³åÇøºÍ½ø³ÌÊý - Ŀʱ£¬Äã×îÉÙÐèÒª~1MB¡£Óйع²ÏíÄÚ´æºÍÐźŵƵÄÏêϸÐÅÏ¢Çë²Î¿¼ PostgreSQL - Administrator's Guide ¡£ + ȱʡʱ£¬PostgreSQL Ö»ÔÊÐíͨ¹ý unix + ÓòÌ×½Ó×Ö»òTCP/IP·½Ê½ÇÒÀ´×Ô±¾»úµÄÁ¬½Ó¡£ + ÄãÖ»ÓÐÔÚÐÞ¸ÄÁËÅäÖÃÎļþpostgresql.confÖеÄlisten_addresses£¬ÇÒÒ²ÔÚÅäÖÃÎ + ļþpg_hba.confÖдò¿ªÁË Ö÷»úΪ»ù´¡£¨ host-based + £©µÄÉí·ÝÈÏÖ¤£¬²¢ÖØÐÂÆô¶¯PostgreSQL£¬·ñÔòÆäËû»úÆ÷ÊDz»ÄÜÓëÄãµÄPostgreSQL + ·þÎñÆ÷Á¬½ÓµÄ¡£ - 3.4) µ±ÎÒÊÔͼÔËÐÐ postmaster ʱ£¬³öÏÖ IpcSemaphoreCreate ´íÎó¡£ÎªÊ²Ã´£¿ + 3.3)ÎÒÔõÑùµ÷ÕûÊý¾Ý¿âÒýÇæÒÔ»ñµÃ¸üºÃµÄÐÔÄÜ£¿ - Èç¹û´íÎóÐÅÏ¢ÊÇ IpcSemaphoreCreate: semget failed (No space left on - device)£¬ÄÇôÔÒòÊÇÄãµÄÄÚºËûÓÐÅäÖÃ×ã¹»µÄÐźŵÆ×ÊÔ´¡£Postgres - µÄÿ¸öDZÔڵĺǫ́½ø³Ì¶¼ÐèÒªÒ»¸öÐźŵơ£Ò»¸öÁÙʱµÄ½â¾ö·½·¨ÊÇÒԱȽÏÉٵĺó - ̨½ø³ÌÊý£¨²ÎÊý£©Æô¶¯ postmaster¡£Ê¹Óÿª¹Ø -N ´øÒ»¸öÉÙÓÚȱʡֵ 32 - µÄ²ÎÊýÔËÐÐ postmaster¡£¸ü³¤¾ÃµÄ½â¾ö·½·¨ÊǼӴóÄãµÄÄÚºËµÄ SEMMNS ºÍ - SEMMNI ²ÎÊý¡£ - - ÔÚÊý¾Ý¿â·ÃÎÊÁ¿ºÜ´óʱ£¬ÐźŵƲ»¿ÉÓÿÉÄܵ¼ÖÂϵͳ±ÀÀ£¡£ + ÓÐÈý¸öÖ÷Òª·½Ãæ¿ÉÒÔÌáÉýPostgreSQLµÄDZÄÜ¡£ - Èç¹û´íÎóÐÅÏ¢ÊÇÆäËûµÄʲô¶«Î÷£¬Äã¿ÉÄܾ͸ù±¾Ã»ÓÐÔÚÄÚºËÀïÃæÅäÖÃÐźŵÆÖ§³Ö - ¡£Óйع²ÏíÄÚ´æºÍÐźŵƵÄÏêϸÐÅÏ¢Çë²Î¿¼ PostgreSQL Administrator's - Guide ¡£ - - 3.5) ÎÒÈçºÎ¿ØÖÆÀ´×ÔÆäËûÖ÷»úµÄÁ¬½Ó£¿ + ²éѯ·½Ê½µÄ±ä»¯ + ÕâÖ÷񻃾¼°Ð޸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_co + nf_e.html ºÍ + http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html¡£ + + Ó²¼þµÄÑ¡Ôñ + ¼ÆËã»úÓ²¼þ¶ÔÐÔÄܵÄÓ°Ïì¿Éä¯ÀÀ + http://candle.pha.pa.us/main/writings/pgsql/hw_performance/inde + x.html ºÍ http://www.powerpostgresql.com/PerfList/¡£ + + 3.4)PostgreSQL Àï¿ÉÒÔ»ñµÃʲôÑùµÄµ÷ÊÔÌØÐÔ£¿ - ȱʡʱ£¬PostgreSQL Ö»ÔÊÐíͨ¹ý unix ÓòÌ×½Ó×ÖÀ´×Ô±¾»úµÄÁ¬½Ó¡£³ý·ÇÄãʹÓà - -i ¿ª¹ØÆô¶¯ postmaster£¬²¢ÇÒͨ¹ý¶ÔÓ¦µÄ±à¼ $PGDATA/pg_hba.conf - Îļþ´ò¿ªÁËÖ÷»úΪ»ù´¡£¨ host-based - £©µÄÈÏÖ¤£¬·ñÔòÆäËû»úÆ÷ÊDz»ÄÜÓëÄãµÄ»úÆ÷Á¬½ÓµÄ¡£ÕâÑù½«ÔÊÐí TCP/IP Á¬½Ó¡£ + PostgreSQL ÓкܶàÀàËÆ log_* + µÄ·þÎñÆ÷ÅäÖñäÁ¿¿ÉÓÃÓÚ²éѯµÄ´òÓ¡ºÍ½ø³Ìͳ¼Æ£¬¶øÕâЩ¹¤×÷¶Ôµ÷ÊÔºÍÐÔÄܲâÊÔ + ºÜÓаïÖú¡£ - 3.6) ÎÒÔõÑùµ÷ÕûÊý¾Ý¿âÒýÇæÒÔ»ñµÃ¸üºÃµÄÐÔÄÜ£¿ + 3.5)ΪʲôÔÚÊÔͼÁ¬½ÓʱÊÕµ½¡°Sorry, too many clients¡±ÏûÏ¢£¿ - µ±È»£¬Ë÷Òý¿ÉÒÔ¼ÓËÙ²éѯ¡£EXPLAIN ÃüÁîÔÊÐíÄã¹Û²ì PostgreSQL - ÈçºÎ½âÊÍÄãµÄ²éѯ£¬ÒÔ¼°Ê¹ÓÃÁËÄÄЩË÷Òý¡£ + Õâ±íʾÄãÒѴﵽȱʡ100¸ö²¢·¢ºǫ́½ø³ÌÊýµÄÏÞÖÆ£¬ÄãÐèҪͨ¹ýÐÞ¸Äpostgresql. + confÎļþÖеÄmax_connectionsÖµÀ´ + Ôö¼ÓpostmasterµÄºǫ́²¢·¢´¦ÀíÊý£¬Ð޸ĺóÐèÖØÐÂÆô¶¯postmaster¡£ - Èç¹ûÄãÕý´¦ÀíÒ»¶Ñ INSERT£¬¿¼ÂÇʹÓà COPY - ÃüÁîÒÔ´óÅúÁ¿µÄ·½Ê½½øÐС£ÕâÑù×ö±Èµ¥¶ÀµÄÒ»¸ö¸ö INSERT - ¿ìµÃ¶à¡£Æä´Î£¬Ã»Óд¦ÓÚ BEGIN WORK/COMMIT - ÊÂÎñ¿éÖ®¼äµÄÓï¾ä±»ÈÏΪÊôÓÚͬһ¸öÊÂÎñ¡£ÊÔ×ÅÔÚÒ»¸öÊÂÎñ¿éÀïÃæ´¦Àí¸ü¶àµÄÓï - ¾ä¡£ÕâÑù¿ÉÒÔ¼õÉÙÊÂÎñ´øÀ´µÄ¶îÍ⿪Ïú¡£Í¬Ñù£¬ÔÚ×ö´óÁ¿µÄÊý¾Ý¸Ä±äʱ¿¼ÂÇɾ³ý - ºÍÖØ½¨Ë÷Òý¡£ - - »¹Óм¸¸öµ÷½ÚµÄÑ¡Ïî¿ÉÒÔʹÓá£Äã¿ÉÒÔͨ¹ý´ø -o -F Ñ¡ÏîÆô¶¯ postmaster - À´½ûÖ¹ fsync()¡£ÕâÑù½«±ÜÃâÿ´ÎÊÂÎñºóµ÷Óà fsync() °ÑÊý¾Ýˢе½´ÅÅÌÉÏ¡£ - - Ä㻹¿ÉÒÔʹÓà postmaster -B - Ñ¡ÏîÔö¼Óºó¶Ë½ø³ÌʹÓõĹ²ÏíÄڴ滺³åµÄÊýÄ¿¡£Èç¹ûÄã°ÑÕâ¸ö²ÎÊýÉèÖõÃÌ«´ó£¬ - postmaster ¿ÉÄÜÎÞ·¨Æô¶¯£¬ÒòΪÄãÒѾ - ³¬¹ýÁËÄãµÄÄÚºËÔÚ¹²ÏíÄÚ´æ¿Õ¼äÉϵÄÏÞÖÆ¡£Ã¿¸ö»º³åÇøÊÇ 8K ²¢ÇÒȱʡ 64 - ¸ö»º³åÇø¡£ - - Ä㻹¿ÉÒÔʹÓúǫ́½ø³ÌµÄ -S - Ñ¡ÏîÀ´Ôö¼Óÿ¸öºǫ́½ø³ÌÓÃÓÚÁÙʱÅÅÐòÓõÄ×î´óÄÚ´æÊýÁ¿¡£-S - ÖµÊÇÒÔK×ֽڼƵģ¬È±Ê¡ÊÇ 512 £¨Ò²¾ÍÊÇ˵£¬512K£©¡£ - - Ä㻹¿ÉÒÔʹÓà CLUSTER ÃüÁîÀ´°Ñ±íÀïµÄÊý¾Ý°´ÕÕij¸öË÷Òý½øÐоۼ¯´æ·Å¡£²ÎÔÄ - CLUSTER µÄÊÖ²áÒ³»ñÈ¡¸ü¶àϸ½Ú¡£ - - 3.7) PostgreSQL Àï¿ÉÒÔ»ñµÃʲôÑùµÄµ÷ÊÔÌØÐÔ£¿ + 3.6)ΪʲôҪÔÚÉý¼¶ PostgreSQL Ö÷Òª·¢²¼°æ±¾Ê±×ö dump ºÍ restore £¿ - PostgreSQL - Óм¸¸öÌØÐÔÓÃÓÚ±¨¸æ×´Ì¬ÐÅÏ¢£¬ÕâЩÐÅÏ¢¿ÉÄܶԵ÷ÊÔÓÃ;ºÜÓаïÖú¡£ - - Ê×ÏÈ£¬Í¨¹ý¸½´ø --enable-cassert Ñ¡ÏîÔËÐÐ configure£¬Óкܶà assert() - ¼à¿Øºǫ́½ø³ÌºÍÔÚ·¢ÉúÄ³Ð©Î´ÔøÔ¤ÁϵÄÏÖÏóʱֹͣ³ÌÐòÔËÐС£ - - postmaster ºÍ postgres ¶¼ÓÐһЩ¿ÉÓõÄÑ¡Ïî¡£Ê×ÏÈ£¬µ±ÄãÆô¶¯ postmaster - ʱ£¬È·±£Äã°Ñ±ê×¼Êä³öºÍ±ê×¼´íÎóÊä³ö¶¨Ïòµ½ÁËÒ»¸öÈÕÖ¾ÎļþÀïÈ¥ÁË£¬Ïó£º - cd /usr/local/pgsql - ./bin/postmaster >server.log 2>&1 & - - ÕâÑù½«ÔÚ PostgreSQL ¶¥¼¶Ä¿Â¼ÏÂÊä³öÒ»¸ö server.log - Îļþ¡£Õâ¸öÎļþ°üº¬·þÎñÆ÷Åöµ½µÄÎÊÌâºÍ´íÎóµÄÓÐÓÃÐÅÏ¢¡£postmaster ÓÐÒ»¸ö - -d Ñ¡Ï¸ÃÑ¡ÏîÔÊÐíÎÒÃÇ»ñµÃ¸ü¶àµÄϸ½Ú»ã±¨¡£-d - Ñ¡Ïî½ÓÊÜÒ»¸öÊý×Ö±êÃ÷µ÷ÊÔ¼¶±ð¡£ÐèÒª¾¯¸æµÄÊǸߵĵ÷ÊÔ¼¶±ð¿ÉÄÜ»áÉú³É¾Þ´óµÄ - ÈÕÖ¾Îļþ¡£ - - Èç¹û postmaster ûÓÐÔËÐУ¬Äã¿ÉÒÔÖ±½ÓÔÚÃüÁîÐÐÉÏÆô¶¯ postgres - ºǫ́½ø³Ì£¬È»ºóÖ±½Ó¼üÈë SQL Óï¾ä¡£ÎÒÃÇÖ» - ÍÆ¼öÔÚµ÷ÊÔµÄʱºòÕâô¸É¡£Çë×¢ÒâÕâʱÓû»ÐÐÜÞ¶ø²»ÊǷֺűíʾÓï¾ä½áβ¡£Èç¹û - Äã´ø×ŵ÷ÊÔ·ûºÅ±àÒ룬Äã¿ÉÒÔʹÓÃÒ»¸öµ÷ÊÔÆ÷¹Û¿´·¢ÉúÁËʲôÊÂÇé¡£ÒòΪºǫ́½ø - ³ÌûÓÐÓÉ postmaster - Æô¶¯µÄ£¬Ëü²»ÊǺÍʵ¼ÊµÄÔËÐл·¾³Ò»Ö£¬¶øÇÒËø¶¨/ºǫ́½»»¥ÎÊÌâ¿ÉÄܲ»ÄÜÖØÏÖ¡ - £ - - Èç¹û postmaster ÒѾÔËÐУ¬¿ÉÔÚÒ»¸ö´°¿ÚÖÐÆô¶¯ psql£¬È»ºóÕÒ³ö psql ¶ÔÓ¦µÄ - postgres ½ø³ÌµÄ PID¡£Ê¹ÓÃÒ»¸öµ÷ÊÔÆ÷¸½×ÅÔÚÕâ¸ö postgres PID - ÉÏ¡£Äã¿ÉÒÔÔÚµ÷ÊÔÆ÷ÀïÉèÖöϵ㲢ÇÒ´Ó psql ÀïÖ´Ðвéѯ¡£Èç¹ûÄãÔÚµ÷ÊÔ - postgres µÄÆô¶¯£¬Äã¿ÉÒÔÉèÖà PGOPTIONS="-W n"£¬È»ºóÆô¶¯ - psql¡£ÕâÑù½«µ¼ÖÂÆô¶¯ÑÓ³Ù n - Ã룬ÕâÑùÄã¾Í¿ÉÒÔ¸½¼ÓÒ»¸öµ÷ÊÔÆ÷²¢ÇÒ¸ú×ÙÆô¶¯Ë³ÐòµÄ¹ý³Ì¡£ - - postgres ³ÌÐòÓÐ -s£¬-A£¬ºÍ -t Ñ¡Ïî¿ÉÄÜÔÚµ÷ÊÔºÍÐÔÄܲâÁ¿µÄʱºò·Ç³£ÓÐÓᣠ- - Ä㻹¿ÉÒÔ´ø profiling - Ö§³Ö±àÒëºǫ́£¬ÒÔ±ã¹Û²ìÄÄЩº¯ÊýÕ¼ÓõÄÖ´ÐÐʱ¼ä½Ï¶à¡£profile Îļþ½«·ÅÔÚ - pgsql/data/base/dbname Ŀ¼Ï¡£¿Í»§¶Ë profile - Îļþ½«·ÅÔÚ¿Í»§¶Ëµ±Ç°Ä¿Â¼Ï¡£ÔÚ Linux ÏÂÖ§³Ö profiling - ÒªÔÚ±àÒëʱ¼ÓÉÏ-DLINUX_PROFILE ¡£ - - 3.8) ΪʲôÔÚÊÔͼÁ¬½ÓµÇ¼ʱÊÕµ½¡°Sorry, too many clients¡±ÏûÏ¢£¿ - - ÄãÐèÒªÔö´ó postmaster Æô¶¯Ê±Ö§³ÖµÄ²¢·¢ºǫ́½ø³ÌÊý¡£ - - ȱʡÏÞÖÆÊÇ 32 ½ø³Ì¡£Äã¿ÉÒÔͨ¹ý´ø×ÅÊʵ±µÄ -N Öµ¿ª¹ØÆô¶¯ postmaster - Ôö¼ÓÕâ¸öÊýÄ¿¡£»òÕßÐÞ¸Ä postgresql.conf Îļþ¡£ - - ҪעÒâÈç¹ûÄã°Ñ -N ÉèÖÃΪ´óÓÚ 32£¬Äã±ØÐëͬÑùÔö´ó -B£¬³¬¹ýËüȱʡµÄ - 64£»-B ±ØÐë×îÉÙÊÇ -N - µÄÁ½±¶£¬¶øÇÒΪÁ˸üºÃµÄÐÔÄÜ¿ÉÄÜÒª±ÈÄǸöÊý×ÖÒª´ó¡£¶ÔÓÚ´óÊýÄ¿µÄºó¶Ë½ø³Ì£¬ - Äã¿ÉÄÜ»¹»á·¢ÏÖÄ㻹ÐèÒªÔö¼ÓÐí¶à Unix - ÄÚºËÅäÖòÎÊýÖµ¡£Òª¼ì²éµÄ¶«Î÷°üÀ¨¹²ÏíÄÚ´æ¿éµÄ×î´ó³ß´ç£¬SHMMAX£¬ÐÅºÅµÆµÄ - ×î´óÊýÄ¿£¬SEMMNS ºÍ - SEMMNI£¬×î´óµÄ½ø³ÌÊý£¬NPROC£¬µ¥Óû§×î´ó½ø³ÌÊý£¬MAXUPRC£¬ÒÔ¼°´ò¿ªÎļþµÄ - ×î´óÊýÄ¿£¬NFILE ºÍ NINODE ¡£Postgres ¶ÔÔÊÐíµÄºǫ́½ø³ÌÊýÓÐÏÞÖÆµÄÔ - ÒòÊÇΪÁËÈ·±£ÄãµÄϵͳ²»»áÓùâ×ÊÔ´¡£ - - ÔÚ Postgres ÔçÓÚ 6.5 µÄ°æ±¾£¬×î´óºǫ́½ø³ÌÊýȱʡÊÇ - 64£¬²¢ÇÒ¶ÔËüµÄÐÞ¸ÄÊ×ÏÈÐèÒªÐÞ¸Ä include/storage/sinvaladt.h ÀïµÄ - MaxBackendId ³£Á¿£¬È»ºóÖØÐ BUILD¡£ - - 3.9) pgsql_tmp Ŀ¼Àï¶¼ÓÐЩʲô£¿ - - ¸ÃĿ¼Ï±£´æÁ˲éѯִÐÐÆ÷Éú³ÉµÄÁÙʱÎļþ¡£ÀýÈ磬Èç¹ûÐèҪΪÂú×ã ORDER BY - Ìõ¼þ×öÅÅÐò£¬²¢ÇÒÅÅÐòÐèÒª±Èºǫ́µÄ -S - ²ÎÊý¸ø³öµÄ¸ü¶àµÄ¿Õ¼ä£¬ÄÇô¾Í»á´´½¨Ò»¸öÁÙʱÎļþ±£´æ¶à³öÀ´µÄÊý¾Ý¡£ - - ÁÙʱÎļþÓ¦¸Ã×Ô¶¯É¾³ý£¬²»¹ýÈç¹ûÔÚÅÅÐò¹ý³ÌÖкǫ́±ÀÀ£Á˾ͿÉÄÜÁôÏÂÀ´¡£Í£Ö¹ - ²¢ÖØÆð postmaster ½«»áɾ³ýÕâЩÎļþ¡£ - - 3.10) ΪʲôҪÔÚÉý¼¶ PostgreSQL ·¢²¼°æ±¾Ê±×ö dump ºÍ restore £¿ - - PostgreSQL ¿ª·¢×é¶Ôÿ´ÎСµÄÉý¼¶½ö×öÁ˽ÏÉÙµÄÐÞ¸Ä,Òò´Ë´Ó 7.2 Éý¼¶µ½ - 7.2.1 ²»ÐèÒª dump ºÍ restore¡£µ«ÊÇÖ÷ÒªµÄÉý¼¶£¨ÀýÈç´Ó 7.2 µ½ - 7.3£©Í¨³£»áÐÞ¸Äϵͳ±íºÍÊý¾Ý±íµÄÄÚ²¿¸ñʽ¡£ÕâЩ±ä»¯Ò»°ã±È½Ï¸´ÔÓ£¬Òò´ËÎÒà - Dz»Î¬Êý¾ÝÎļþµÄÏòºó¼æÈÝ¡£dump + PostgreSQL ¿ª·¢×é¶Ôÿ´ÎСµÄÉý¼¶½ö×öÁ˽ÏÉÙµÄÐ޸ģ¬Òò´Ë´Ó 7.4.0 Éý¼¶µ½ + 7.4.1 ²»ÐèÒª dump ºÍ restore¡£ µ«ÊÇÖ÷ÒªµÄÉý¼¶£¨ÀýÈç´Ó 7.3 µ½ + 7.4£©Í¨³£»áÐÞ¸Äϵͳ±íºÍÊý¾Ý±íµÄÄÚ²¿¸ñʽ¡£ + ÕâЩ±ä»¯Ò»°ã±È½Ï¸´ÔÓ£¬Òò´ËÎÒÃDz»Î¬Êý¾ÝÎļþµÄÏòºó¼æÈÝ¡£ dump ½«Êý¾Ý°´ÕÕͨÓõĸñʽÊä³ö£¬Ëæºó¿ÉÒÔ±»ÖØÐ¼ÓÔØ²¢Ê¹ÓÃеÄÄÚ²¿¸ñʽ¡£ - ´ÅÅÌÎļþ¸ñʽûÓб仯µÄÉý¼¶£¬¿ÉÒÔÓà pg_upgrade ½Å±¾£¬¶ø²»ÐèÒª×ö dump ºÍ - restor¡£·¢²¼ËµÃ÷script »áÖ¸Ã÷ pg_upgrade ¶Ô¸Ã´ÎÉý¼¶ÊÇ·ñ¿ÉÓᣠ+ 3.7)(ʹÓÃPostgreSQL)ÎÒÐèҪʹÓÃʲô¼ÆËã»úÓ²¼þ £¿ + + ÓÉÓÚ¼ÆËã»úÓ²¼þ´ó¶àÊýÊǼæÈݵģ¬ÈËÃÇ×ÜÊÇÇãÏòÓÚÏàÐÅËùÓмÆËã»úÓ²¼þÖÊÁ¿Ò²ÊÇ + ÏàͬµÄ¡£ÊÂʵÉϲ»ÊÇ£¬ ECC RAM£¨´øÆæÅ¼Ð£ÑéµÄÄڴ棩£¬SCSI + £¨Ó²ÅÌ£©ºÍÓÅÖʵÄÖ÷°å±ÈһЩ±ãÒË»õÒª¸ü¼Ó¿É¿¿ÇÒ¾ßÓиüºÃµÄÐÔÄÜ¡£PostgreSQL + ¼¸ºõ¿ÉÒÔÔËÐÐÔÚÈκÎÓ²¼þÉÏ£¬ + µ«Èç¹û¿É¿¿ÐÔºÍÐÔÄܶÔÄãµÄϵͳºÜÖØÒª£¬Äã¾ÍÐèÒªÈ«ÃæµÄÑо¿Ò»ÏÂÄãµÄÓ²¼þÅäÖà + ÁË¡£ÔÚÎÒÃǵÄÓʼþÁбíÉÏÒ²ÓйØÓÚ Ó²¼þÅäÖúÍÐԼ۱ȵÄÌÖÂÛ¡£ _________________________________________________________________ - ²Ù×÷ÎÊÌâ - - 4.1) ¶þ½øÖÆÓαêºÍÆÕͨÓαêÖ®¼äµÄÇø±ðÊÇʲô£¿ +²Ù×÷ÎÊÌâ + + 4.1)ÈçºÎֻѡÔñÒ»¸ö²éѯ½á¹ûµÄÍ·¼¸ÐУ¿»òÊÇËæ»úµÄÒ»ÐУ¿ + + Èç¹ûÄãÖ»ÊÇÒªÌáÈ¡¼¸ÐÐÊý¾Ý£¬²¢ÇÒÄãÔÚÖ´ÐвéѯÖÐÖªµÀÈ·ÇеÄÐÐÊý£¬Äã¿ÉÒÔʹÓà + LIMIT¹¦ÄÜ¡£ Èç¹ûÓÐÒ»¸öË÷ÒýÓë ORDER BYÖеÄÌõ¼þÆ¥Å䣬PostgreSQL + ¿ÉÄܾÍÖ»´¦ÀíÒªÇóµÄÍ·¼¸Ìõ¼Ç¼£¬ + £¨·ñÔò½«¶ÔÕû¸ö²éѯ½øÐд¦ÀíÖ±µ½Éú³ÉÐèÒªµÄÐУ©¡£Èç¹ûÔÚÖ´Ðвéѯ¹¦ÄÜʱ²»Öª + µÀÈ·ÇеļǼÊý£¬ ¿ÉʹÓÃÓαê(cursor)ºÍFETCH¹¦ÄÜ¡£ + + ¿ÉʹÓÃÒÔÏ·½·¨ÌáȡһÐÐËæ»ú¼Ç¼µÄ£º + SELECT cols + FROM tab + ORDER BY random() + LIMIT 1 ; + + 4.2)ÈçºÎ²é¿´±í¡¢Ë÷Òý¡¢Êý¾Ý¿âÒÔ¼°Óû§µÄ¶¨Ò壿ÈçºÎ²é¿´psqlÀïÓõ½µÄ²éѯָÁî²¢Ï + ÔʾËüÃÇ£¿ - ²ÎÔÄ DECLARE ÊÖ²áÒ³»ñÈ¡ÐÅÏ¢¡£ + ÔÚpsqlÖÐʹÓà \dt + ÃüÁîÀ´ÏÔʾÊý¾Ý±íµÄ¶¨Ò壬ҪÁ˽âpsqlÖеÄÍêÕûÃüÁîÁбí¿ÉʹÓÃ\? + £¬ÁíÍ⣬ÄãÒ²¿ÉÒÔÔĶÁ psql µÄÔ´´úÂë + Îļþpgsql/src/bin/psql/describe.c£¬Ëü°üÀ¨ÎªÉú³Épsql·´Ð±¸ÜÃüÁîµÄÊä³öµÄË + ùÓÐ SQL ÃüÁî¡£Ä㻹¿ÉÒÔ´ø -E Ñ¡ÏîÆô¶¯ psql£¬ + ÕâÑùËü½«´òÓ¡³öÖ´ÐÐÄãÔÚpsqlÖÐËù¸ø³öµÄÃüÁîµÄÄÚ²¿Êµ¼ÊʹÓõÄSQL²éѯ¡£Postg + reSQLÒ²ÌṩÁËÒ»¸ö¼æÈÝSQLµÄINFORMATION SCHEMA½Ó¿Ú£¬ + Äã¿ÉÒÔ´ÓÕâÀï»ñÈ¡¹ØÓÚÊý¾Ý¿âµÄÐÅÏ¢¡£ - 4.2)ÈçºÎÖ» SELECT Ò»¸ö²éѯ½á¹ûµÄÍ·¼¸ÐУ¿ - - ²ÎÔÄ FETCH ÊÖ²áÒ³£¬»òÕßʹÓà SELECT ... LIMIT.... + ÔÚϵͳÖÐÓÐһЩÒÔpg_ ´òÍ·µÄϵͳ±íÒ²ÃèÊöÁ˱íµÄ¶¨Òå¡£ - ¼´Ê¹ÄãÖ»ÐèÒª¿ªÍ·µÄ¼¸ÐУ¬Ò²»áÉæ¼°µ½Õû¸ö²éѯ¡£ÊÔ×ÅʹÓôøÓÐ ORDER BY - µÄ²éѯ¡£Èç¹ûÓÐÒ»¸öË÷ÒýÓë ORDER BY Æ¥Å䣬PostgreSQL - ¿ÉÄܾÍÖ»´¦ÀíÒªÇóµÄÍ·¼¸Ìõ¼Ç¼£¬·ñÔò½«¶ÔÕû¸ö²éѯ½øÐд¦ÀíÖ±µ½Éú³ÉÐèÒªµÄÐÐ - ¡£ + ʹÓà psql -l Ö¸Áî¿ÉÒÔÁгöËùÓеÄÊý¾Ý¿â¡£ - 4.3) ÎÒÈçºÎ»ñȡһ¸ö±íµÄÁÐ±í£¬»òÕßÊÇÆäËûÎÒÄÜÔÚ psql Àï¿´µ½µÄ¶«Î÷£¿ - - Äã¿ÉÒÔÔĶÁ psql µÄÔ´´úÂëÎļþpgsql/src/bin/psql/describe.c - ¡£Ëü°üÀ¨ÎªÉú³É psql µÄ·´Ð±¸ÜÃüÁîµÄÊä³öµÄ SQL ÃüÁî¡£Ä㻹¿ÉÒÔ´ø -E - Ñ¡ÏîÆô¶¯ psql£¬ÕâÑùËü½«´òÓ¡³öÖ´ÐÐÄã¸ø³öµÄÃüÁîËùÓõIJéѯ¡£ + Ò²¿ÉÒÔä¯ÀÀһϠ+ pgsql/src/tutorial/syscat.sourceÎļþ£¬ËüÁоÙÁ˺ܶà¿É´ÓÊý¾Ý¿âϵͳ±íÖлñ + È¡ÐÅÏ¢µÄSELECTÓï·¨¡£ - 4.4) ÔõÑù´Ó±íÀïÃæÉ¾³ýÒ»ÁУ¿ + 4.3)ÈçºÎ¸ü¸ÄÒ»¸ö×ֶεÄÊý¾ÝÀàÐÍ£¿ - 7.3 ÀïÔö¼ÓÁË ALTER TABLE DROP - COLUMN£¬ÒÔÖ§³Ö´ËÏÄÜ¡£ÔÚÒÔǰµÄ°æ±¾ÖУ¬¿ÉÒÔÕâÑù×ö£º - 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; + ÔÚ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; - 4.5) Ò»ÐУ¬Ò»¸ö±í£¬Ò»¸ö¿âµÄ×î´ó³ß´çÊǶàÉÙ£¿ + ÄãÈ»ºó¿ÉÒÔʹÓÃVACUUM FULL tab Ö¸ÁîÀ´Ê¹ÏµÍ³ÊÕ»ØÎÞЧÊý¾ÝËùÕ¼ÓõĿռ䡣 + + 4.4)Ò»ÐмǼ£¬Ò»¸ö±í£¬Ò»¸ö¿âµÄ×î´ó³ß´çÊǶàÉÙ£¿ ÏÂÃæÊÇһЩÏÞÖÆ£º - Ò»¸öÊý¾Ý¿â×î´ó³ß´ç£¿ ÎÞÏÞÖÆ£¨´æÔÚ 1TB µÄÊý¾Ý¿â£© - Ò»¸ö±íµÄ×î´ó³ß´ç£¿ 16TB - Ò»ÐеÄ×î´ó³ß´ç£¿ 1.6TB - Ò»¸ö×ֶεÄ×î´ó³ß´ç? 1GB - Ò»¸ö±íÀï×î´óÐÐÊý£¿ ÎÞÏÞÖÆ - Ò»¸ö±íÀï×î´óÁÐÊý£¿ ¸úÁÐÀàÐÍÓйØ,250-1600 - Ò»¸ö±íÀïµÄ×î´óË÷ÒýÊýÁ¿£¿ÎÞÏÞÖÆ - + + Ò»¸öÊý¾Ý¿â×î´ó³ß´ç£¿ ÎÞÏÞÖÆ£¨ÒÑ´æÔÚÓÐ 32TB µÄÊý¾Ý¿â£© + Ò»¸ö±íµÄ×î´ó³ß´ç£¿ 32 TB + Ò»ÐмǼµÄ×î´ó³ß´ç£¿ 1.6 TB + Ò»¸ö×ֶεÄ×î´ó³ß´ç? 1 GB + Ò»¸ö±íÀï×î´óÐÐÊý£¿ ÎÞÏÞÖÆ + Ò»¸ö±íÀï×î´óÁÐÊý£¿ 250-1600 £¨ÓëÁÐÀàÐÍÓйأ© + Ò»¸ö±íÀïµÄ×î´óË÷ÒýÊýÁ¿£¿ ÎÞÏÞÖÆ + µ±È»£¬Êµ¼ÊÉÏûÓÐÕæÕýµÄÎÞÏÞÖÆ£¬»¹ÊÇÒªÊÜ¿ÉÓôÅÅ̿ռ䡢¿ÉÓÃÄÚ´æ/½»»»ÇøµÄÖ - ÆÔ¼¡£ + ÆÔ¼¡£ ÊÂʵÉÏ£¬µ±ÕâЩÊýÖµ±äµÃÒì³£µØ´óʱ£¬ÏµÍ³ÐÔÄÜÒ²»áÊܴܺóÓ°Ïì¡£ - ±íµÄ×î´ó³ß´ç 16 TB ²»ÐèÒª²Ù×÷ϵͳ¶Ô´óÎļþµÄÖ§³Ö¡£´ó±íÓöà¸ö 1 GB + ±íµÄ×î´ó³ß´ç 32 TB ²»ÐèÒª²Ù×÷ϵͳ¶Ô´óÎļþµÄÖ§³Ö¡£´ó±íÓöà¸ö 1 GB µÄÎļþ´æ´¢£¬Òò´ËÎļþϵͳ³ß´çµÄÏÞÖÆÊDz»ÖØÒªµÄ¡£ - Èç¹ûȱʡµÄ¿é´óСÔö³¤µ½ 32K £¬×î´óµÄ±í³ß´çºÍ×î´óÁÐÊý¿ÉÒÔÔö¼Ó¡£ + Èç¹ûȱʡµÄ¿é´óСÔö³¤µ½ 32K £¬×î´óµÄ±í³ß´çºÍ×î´óÁÐÊý»¹¿ÉÒÔÔö¼Óµ½Ëı¶¡£ - 4.6)´æ´¢Ò»¸öµäÐÍµÄÆ½ÃæÎļþÀïµÄÊý¾ÝÐèÒª¶àÉÙ´ÅÅ̿ռ䣿 + 4.5)´æ´¢Ò»¸öµäÐ͵ÄÎı¾ÎļþÀïµÄÊý¾ÝÐèÒª¶àÉÙ´ÅÅ̿ռ䣿 Ò»¸ö Postgres - Êý¾Ý¿â×î¶à¿ÉÄÜÐèÒªÏ൱ÓÚÔÚÒ»¸öÆ½ÃæÎļþÀï´æ´¢ÏàͬÊý¾ÝµÄ5±¶µÄ´ÅÅ̿ռ䡣 - - ÀýÈ磬¼ÙÉèÓÐÒ»¸ö 100,000 - ÐеÄÎļþ£¬Ã¿ÐÐÓÐÒ»¸öÕûÊýºÍÒ»¸öÎı¾ÃèÊö¡£¼ÙÉèÎı¾´®µÄƽ¾ù³¤¶Èλ20×Ö½Ú¡£ - Æ½ÃæÎļþÕ¼Óà 2.8 MB¡£´æ·ÅÕâЩÊý¾ÝµÄ PostgreSQL Êý¾Ý¿âÎļþ´óÔ¼ÊÇ 6.4 - MB: - 36 ×Ö½Ú: ÿÐеÄÍ·£¨¹À¼ÆÖµ£© - 24 ×Ö½Ú: Ò»¸öint×ֶκÍÒ»¸öÎı¾ÐÍ×Ö¶Î + Êý¾Ý¿â£¨´æ´¢Ò»¸öÎı¾Îļþ£©ËùÕ¼ÓõĿռä×î¶à¿ÉÄÜÐèÒªÏ൱ÓÚÕâ¸öÎı¾Îļþ×Ô + Éí´óС5±¶µÄ´ÅÅ̿ռ䡣 + + ÀýÈ磬¼ÙÉèÓÐÒ»¸ö 100,000 ÐеÄÎļþ£¬Ã¿ÐÐÓÐÒ»¸öÕûÊýºÍÒ»¸öÎı¾ÃèÊö¡£ + ¼ÙÉèÎı¾´®µÄƽ¾ù³¤¶ÈΪ20×Ö½Ú¡£Îı¾ÎļþÕ¼Óà 2.8 MB¡£´æ·ÅÕâЩÊý¾ÝµÄ + PostgreSQL Êý¾Ý¿âÎļþ´óÔ¼ÊÇ 6.4 MB: + 32 ×Ö½Ú: ÿÐеÄÍ·£¨¹À¼ÆÖµ£© + 24 ×Ö½Ú: Ò»¸öÕûÊýÐÍ×ֶκÍÒ»¸öÎı¾ÐÍ×Ö¶Î + 4 ×Ö½Ú: Ò³ÃæÄÚÖ¸ÏòÔª×éµÄÖ¸Õë ---------------------------------------- - 64 ×Ö½ÚÿÐÐ + 60 ×Ö½ÚÿÐÐ PostgreSQL Êý¾ÝÒ³µÄ´óСÊÇ 8192 ×Ö½Ú (8 KB)£¬Ôò£º 8192 ×Ö½Úÿҳ - ------------------- = 128 ÐÐ/Êý¾ÝÒ³£¨ÏòÏÂÈ¡Õû£© - 64 ×Ö½ÚÿÐÐ + ------------------- = 136 ÐÐ/Êý¾ÝÒ³£¨ÏòÏÂÈ¡Õû£© + 60 ×Ö½ÚÿÐÐ 100000 Êý¾ÝÐÐ - -------------------- = 782 Êý¾ÝÒ³£¨ÏòÉÏÈ¡Õû£© + -------------------- = 735 Êý¾ÝÒ³£¨ÏòÉÏÈ¡Õû£© 128 ÐÐÿҳ - 782 Êý¾ÝÒ³ * 8192 ×Ö½Ú/Ò³ = 6,406,144 ×Ö½Ú£¨6.4 MB£© + 735 Êý¾ÝÒ³ * 8192 ×Ö½Ú/Ò³ = 6,021,120 ×Ö½Ú£¨6 MB£© Ë÷Òý²»ÐèÒªÕâô¶àµÄ¶îÍâÏûºÄ£¬µ«Ò²È·Êµ°üÀ¨±»Ë÷ÒýµÄÊý¾Ý£¬Òò´ËËüÃÇÒ²¿ÉÄÜºÜ ´ó¡£ - ¿ÕÖµ´æ·ÅÔÚλͼÖУ¬Òò´ËÕ¼ÓúÜÉٵĿռ䡣 - - 4.7) ÈçºÎ²é¿´±í¡¢Ë÷Òý¡¢Êý¾Ý¿âÒÔ¼°Óû§µÄ¶¨Ò壿 - - psql ÓÐÐí¶à·´Ð±¸ÜÃüÁîÓÃÓÚÏÔʾÕâЩÐÅÏ¢¡£Óà \? ¿´¿´¶¼ÓÐÄÄЩ¡£ÒÔ pg_ - ´òÍ·µÄϵͳ±íÒ²ÃèÊöÁËÕâЩÐÅÏ¢¡£ psql -l ¿ÉÒÔÁгöËùÓеÄÊý¾Ý¿â¡£ - - Ò²¿ÉÒÔÊÔÊÔÎļþ - pgsql/src/tutorial/syscat.source¡£ËüÑÝʾÁËÐí¶à´ÓÊý¾Ý¿âϵͳ±íÀï»ñÈ¡ÐÅÏ¢ - ÐèÒªµÄ SELECT¡£ + ¿ÕÖµNULL´æ·ÅÔÚλͼÖУ¬Òò´ËÕ¼ÓúÜÉٵĿռ䡣 - 4.8) ÎҵIJéѯºÜÂý»òÕßûÓÐÀûÓÃË÷Òý¡£ÎªÊ²Ã´£¿ + 4.6)ΪʲôÎҵIJéѯºÜÂý£¿ÎªÊ²Ã´ÕâЩ²éѯûÓÐÀûÓÃË÷Òý£¿ ²¢·Çÿ¸ö²éѯ¶¼»á×Ô¶¯Ê¹ÓÃË÷Òý¡£Ö»ÓÐÔÚ±íµÄ´óС³¬¹ýÒ»¸ö×îСֵ£¬²¢ÇÒ²éѯֻ - Ñ¡Ôñ±íÖнÏС±ÈÀýµÄÐÐʱ²ÉÓÃʹÓÃË÷Òý¡£ÕâÊÇÒòΪË÷ÒýɨÃèÒýÆðµÄËæ¼´´ÅÅÌ´æÈ¡ - ¿ÉÄܱÈÖ±½ÓµØ¶ÁÈ¡±í£¨Ë³ÐòɨÃ裩¸üÂý¡£ÎªÁËÅжÏÊÇ·ñʹÓÃË÷Òý£¬PostgreSQL - ±ØÐë»ñµÃÓйرíµÄͳ¼ÆÖµ¡£ÕâЩͳ¼ÆÖµ¿ÉÒÔʹÓà VACUUM ANALYZE£¬»ò ANALYZE - »ñµÃ¡£Ê¹ÓÃͳ¼ÆÖµ£¬ÓÅ»¯Æ÷ÖªµÀ±íÖÐÓжàÉÙÐУ¬¾ÍÄܹ»¸üºÃµØÅжÏÊÇ·ñÀûÓÃË÷Òý - ¡£Í³¼ÆÖµ¶ÔÈ·¶¨ÓÅ»¯µÄÁ¬½Ó˳ÐòºÍÁ¬½Ó·½·¨Ò²ºÜÓÐÓá£ÔÚ±íµÄÄÚÈÝ·¢Éú±ä»¯Ê±£¬ - Ó¦¶¨ÆÚ½øÐÐͳ¼ÆÖµµÄ»ñÈ¡¡£ + »áÑ¡ÖбíÖнÏС±ÈÀýµÄ¼Ç¼ʱ²Å»á²ÉÓÃË÷Òý¡£ + ÕâÊÇÒòΪË÷ÒýɨÃèÒýÆðµÄËæ¼´´ÅÅÌ´æÈ¡¿ÉÄܱÈÖ±½ÓµØ¶ÁÈ¡±í£¨Ë³ÐòɨÃ裩¸üÂý¡£ + + ΪÁËÅжÏÊÇ·ñʹÓÃË÷Òý£¬PostgreSQL±ØÐë»ñµÃÓйرíµÄͳ¼ÆÖµ¡£ÕâЩͳ¼ÆÖµ¿ÉÒÔ + ʹÓà VACUUM ANALYZE£¬»ò ANALYZE »ñµÃ¡£ + ʹÓÃͳ¼ÆÖµ£¬ÓÅ»¯Æ÷ÖªµÀ±íÖÐÓжàÉÙÐУ¬¾ÍÄܹ»¸üºÃµØÅжÏÊÇ·ñÀûÓÃË÷Òý¡£ + ͳ¼ÆÖµ¶ÔÈ·¶¨ÓÅ»¯µÄÁ¬½Ó˳ÐòºÍÁ¬½Ó·½·¨Ò²ºÜÓÐÓá£ÔÚ±íµÄÄÚÈÝ·¢Éú±ä»¯Ê±£¬Ó¦ + ¶¨ÆÚ½øÐÐͳ¼ÆÖµµÄ¸üÐÂÊÕ¼¯¡£ Ë÷Òýͨ³£²»ÓÃÓÚ ORDER BY »òÖ´ÐÐÁ¬½Ó¡£¶ÔÒ»¸ö´ó±íµÄÒ»´Î˳ÐòɨÃ裬ÔÙ×öÒ»¸öÏÔʽµÄÅÅÐòͨ³£±ÈË÷ÒýɨÃè Òª¿ì¡£ µ«ÊÇ£¬ÔÚ LIMIT ºÍ ORDER BY ½áºÏʹÓÃʱ¾ - ³£»áʹÓÃË÷Òý£¬ÒòΪֻ»á·µ»Ø±íµÄһС²¿·Ö¡£Êµ¼ÊÉÏ£¬ËäÈ» MAX() ºÍ MIN() + ³£»áʹÓÃË÷Òý£¬ÒòΪÕâÖ»»á·µ»Ø±íµÄһС²¿·Ö¡£ ʵ¼ÊÉÏ£¬ËäÈ» MAX() ºÍ MIN() ²¢²»Ê¹ÓÃË÷Òý£¬Í¨¹ý¶Ô ORDER BY ºÍ LLIMIT ʹÓÃË÷ÒýÈ¡µÃ×î´óÖµºÍ×îСֵҲÊÇ¿ÉÒԵģº - SELECT col - FROM tab - ORDER BY col [ DESC ] - LIMIT 1; + SELECT col + FROM tab + ORDER BY col [ DESC ] + LIMIT 1; + + Èç¹ûÄãÈ·ÐÅPostgreSQLµÄÓÅ»¯Æ÷ʹÓÃ˳ÐòɨÃèÊDz»ÕýÈ·µÄ£¬Äã¿ÉÒÔʹÓÃSET + enable_seqscan TO 'off'Ö¸Á + È»ºóÔÙ´ÎÔËÐвéѯ£¬Äã¾Í¿ÉÒÔ¿´³öʹÓÃÒ»¸öË÷ÒýɨÃèÊÇ·ñȷʵҪ¿ìһЩ¡£ µ±Ê¹ÓÃͨÅä·û²Ù×÷£¬ÀýÈç LIKE »ò ~ ʱ£¬Ë÷ÒýÖ»ÄÜÔÚÌØ¶¨µÄÇé¿öÏÂʹÓ㺠* ×Ö·û´®µÄ¿ªÊ¼²¿·Ö±ØÐëÊÇÆÕͨ×Ö·û´®£¬Ò²¾ÍÊÇ˵£º - * LIKE ģʽ²»ÄÜÒÔ % ´òÍ·¡£ - * ~ £¨ÕýÔò±í´ïʽ£©Ä£Ê½±ØÐëÒÔ ^ ´òÍ·¡£ + + LIKE ģʽ²»ÄÜÒÔ % ´òÍ·¡£ + + ~ £¨ÕýÔò±í´ïʽ£©Ä£Ê½±ØÐëÒÔ ^ ´òÍ·¡£ * ×Ö·û´®²»ÄÜÒÔÆ¥Åä¶à¸ö×Ö·ûµÄģʽÀà´òÍ·£¬ÀýÈç [a-e]¡£ - * ´óСдÎ޹صIJéÕÒ£¬Èç ILIKE ºÍ ~* µÈ²»Ê¹ÓÃË÷Òý¡£µ«¿ÉÒÔÓà 4.12 + * ´óСдÎ޹صIJéÕÒ£¬Èç ILIKE ºÍ ~* µÈ²»Ê¹ÓÃË÷Òý£¬µ«¿ÉÒÔÓà 4.8 ½ÚÃèÊöµÄº¯ÊýË÷Òý¡£ - * ÔÚ×ö initdb ʱ±ØÐë²ÉÓÃȱʡµÄ±¾µØÉèÖà C locale¡£ + * ÔÚ×ö initdb ʱ±ØÐë²ÉÓÃȱʡµÄ±¾µØÉèÖà C + locale£¬ÒòΪϵͳ²»¿ÉÄÜÖªµÀÔÚ·ÇC localeÇé¿öʱÏÂÒ»¸ö×î´ó×Ö·ûÊÇʲô¡£ + ÔÚÕâÖÖÇé¿öÏ£¬Äã¿ÉÒÔ´´½¨Ò»¸öÌØÊâµÄtext_pattern_opsË÷ÒýÀ´ÓÃÓÚLIKEµÄ + Ë÷Òý¡£ - 4.9) ÎÒÈçºÎ²ÅÄÜ¿´µ½²éѯÓÅ»¯Æ÷ÊÇÔõÑù´¦ÀíÎҵIJéѯµÄ£¿ + ÔÚ8.0֮ǰµÄ°æ±¾ÖУ¬³ý·ÇÒª²éѯµÄÊý¾ÝÀàÐͺÍË÷ÒýµÄÊý¾ÝÀàÐÍÏàÆ¥Å䣬·ñÔòË÷Ò + ý¾³£ÊÇδ±»Óõ½£¬ÌرðÊǶÔint2,int8ºÍÊýÖµÐ͵ÄË÷Òý¡£ + + 4.7)ÎÒÈçºÎ²ÅÄÜ¿´µ½²éѯÓÅ»¯Æ÷ÊÇÔõÑùÆÀ¹À´¦ÀíÎҵIJéѯ£¿ ²Î¿¼ EXPLAIN ÊÖ²áÒ³¡£ - 4.10) R-tree Ë÷ÒýÊÇʲô£¿ - - R-tree Ë÷ÒýÓÃÓÚË÷Òý¿Õ¼äÊý¾Ý¡£Ò»¸ö¹þÏ£Ë÷ÒýÎÞ·¨´¦Àí·¶Î§ËÑË÷¡£¶ø B-tree - Ë÷ÒýÖ»ÄÜ´¦ÀíһάµÄ·¶Î§ËÑË÷¡£R-tree - Ë÷Òý¿ÉÒÔ´¦Àí¶àάÊý¾Ý¡£ÀýÈ磬Èç¹û¿ÉÒÔÔÚÒ»¸öÀàÐÍΪ point - µÄ×Ö¶ÎÉϽ¨Á¢Ò»¸ö R-tree Ë÷Òý£¬ÄÇôϵͳÄܸü¸ßЧµØ»Ø´ðÀàËÆ - ¡°Ñ¡ÔñÔÚÒ»¸ö³¤·½Ðη¶Î§ÄÚµÄËùÓе㡱¡£ - ÃèÊö×î³õµÄ R-Tree Éè¼ÆµÄÕýʽÂÛÎÄÊÇ£º - 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. - Ä㻹¿ÉÒÔÔÚ Stonebraker µÄ¡°Readings in Database - Systems¡±ÀïÕÒµ½ÕâÆªÎÄÕ¡£ - ϵͳÄÚÖÃµÄ R-Tree ¿ÉÒÔ´¦Àí¶à±ßÐκͷ½ÐΡ£ÀíÂÛÉÏ˵£¬R-tree - ¿ÉÒÔÀ©Õ¹Îª´¦Àí¸ü¶àάÊý¡£²»¹ýÔÚʵ¼ùÉÏ£¬À©Õ¹ R-trees - ÐèÒªÒ»¶¨µÄ¹¤×÷Á¿£¬¶øÎÒÃÇĿǰûÓÐÈçºÎ×öµÄÎĵµ¡£ - - 4.11) ʲôÊÇ»ùÒò²éѯÓÅ»¯£¨Genetic Query Optimization£©£¿ - - GEQO Ä£¿é²ÉÓûùÒòËã·¨£¨Genetic - Algorithm£¬GA£©¼Ó¿ì¶à±íÁ¬½ÓµÄ²éѯÓÅ»¯¡£ËüÔÊÐíͨ¹ý·ÇÇî¾ÙËÑË÷´¦Àí´óµÄÁ¬½ - Ó²éѯ¡£ - - 4.12) - ÎÒÔõÑù×öÕýÔò±í´ïʽËÑË÷ºÍ´óСдÎ޹صÄÕýÔò±í´ïʽËÑË÷£¿ÔõÑùÀûÓÃË÷Òý½øÐдóСдΠ- Þ¹ØËÑË÷£¿ + 4.8)ÎÒÔõÑù×öÕýÔò±í´ïʽËÑË÷ºÍ´óСдÎ޹صÄÕýÔò±í´ïʽ²éÕÒ£¿ÔõÑùÀûÓÃË÷Òý½øÐдóÐ + ¡Ð´Î޹زéÕÒ£¿ ²Ù×÷·û ~ ´¦ÀíÕýÔò±í´ïʽƥÅ䣬¶ø ~* ´¦Àí´óСдÎ޹صÄÕýÔò±í´ïʽƥÅä¡£´óдЩÎÞ¹ØµÄ LIKE ±äÖÖ³ÉΪ ILIKE¡£ + ´óСдÎ޹صĵÈʽ±È½Ïͨ³£Ð´×ö£º - SELECT * - FROM tab - WHERE lower(col) = 'abc'; + SELECT * + FROM tab + WHERE lower(col) = 'abc'; + ÕâÑù½«²»»áʹÓñê×¼µÄË÷Òý¡£µ«ÊÇ¿ÉÒÔ´´½¨Ò»¸ö¿É±»ÀûÓõĺ¯ÊýË÷Òý: - CREATE INDEX tabindex ON tab (lower(col)); - - 4.13) ÔÚÒ»¸ö²éѯÀÎÒÔõÑù¼ì²âÒ»¸ö×Ö¶ÎÊÇ·ñΪ NULL£¿ + CREATE INDEX tabindex ON tab (lower(col)); + + 4.9)ÔÚÒ»¸ö²éѯÀÎÒÔõÑù¼ì²âÒ»¸ö×Ö¶ÎÊÇ·ñΪ NULL + £¿ÎÒÈçºÎ²ÅÄÜ׼ȷÅÅÐò¶ø²»ÂÛij×Ö¶ÎÊÇ·ñº¬ NULL Öµ£¿ - Óà IS NULL ºÍ IS NOT NULL ²âÊÔÕâ¸ö×ֶΡ£ - - 4.14) ¸÷ÖÖ×Ö·ûÀàÐÍÖ®¼äÓÐʲô²»Í¬£¿ + Óà 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)¸÷ÖÖ×Ö·ûÀàÐÍÖ®¼äÓÐʲô²»Í¬£¿ - ÀàÐÍ ÄÚ²¿Ãû³Æ ˵Ã÷ - -------------------------------------------------- - "char" char 1¸ö×Ö·û character - CHAR(#) bpchar ¶¨³¤×Ö·û´®£¬Êµ¼ÊÊý¾Ý²»×㶨Ò峤¶Èʱ£¬ÒÔ¿Õ¸ñ²¹Æë - VARCHAR(#) varchar + ÀàÐÍ ÄÚ²¿Ãû³Æ ˵Ã÷ + VARCHAR(n) varchar Ö¸¶¨ÁË×î´ó³¤¶È£¬±ä³¤×Ö·û´®£¬²»×㶨Ò峤¶ÈµÄ²¿·Ö²»²¹Æë - TEXT text ´®³¤¶È½öÊÜÐеÄ×î´ó³¤¶ÈÏÞÖÆ - BYTEA bytea ±ä³¤×Ö½ÚÐòÁУ¨±ä³¤µÄ¶þ½øÖÆÊý¾Ý£© + CHAR(n) bpchar ¶¨³¤×Ö·û´®£¬Êµ¼ÊÊý¾Ý²»×㶨Ò峤¶Èʱ£¬ÒÔ¿Õ¸ñ²¹Æë + TEXT text ûÓÐÌØ±ðµÄÉÏÏÞÏÞÖÆ£¨½öÊÜÐеÄ×î´ó³¤¶ÈÏÞÖÆ£© + BYTEA bytea ±ä³¤×Ö½ÚÐòÁУ¨Ê¹ÓÃNULLÒ²ÊÇÔÊÐíµÄ£© + "char" char Ò»¸ö×Ö·û + ÔÚϵͳ±íºÍÔÚһЩ´íÎóÐÅÏ¢ÀïÄ㽫¿´µ½ÄÚ²¿Ãû³Æ¡£ - ÉÏÃæ×îºóËÄÖÖÀàÐÍÊÇ"varlena"£¨±ä³¤£©ÀàÐÍ£¨Ò²¾ÍÊÇ˵£¬¿ªÍ·µÄËĸö×Ö½ÚÊdz¤¶ - È£¬ºóÃæ²ÅÊÇÊý¾Ý£©¡£ÓÚÊÇʵ¼ÊÕ¼ÓõĿռä±ÈÉùÃ÷µÄ´óСҪ¶àһЩ¡£È»¶øÕâЩÀàÐ - Ͷ¼¿ÉÒÔ±»Ñ¹Ëõ´æ´¢£¬Ò²¿ÉÒÔÓà TOAST + + ÉÏÃæËùÁеÄǰËÄÖÖÀàÐÍÊÇ"varlena"£¨±ä³¤£©ÀàÐÍ£¨Ò²¾ÍÊÇ˵£¬¿ªÍ·µÄËĸö×Ö½ÚÊ + dz¤¶È£¬ºóÃæ²ÅÊÇÊý¾Ý£©¡£ ÓÚÊÇʵ¼ÊÕ¼ÓõĿռä±ÈÉùÃ÷µÄ´óСҪ¶àһЩ¡£ + È»¶øÕâЩÀàÐͶ¼¿ÉÒÔ±»Ñ¹Ëõ´æ´¢£¬Ò²¿ÉÒÔÓà TOAST ÍÑ»ú´æ´¢£¬Òò´Ë´ÅÅ̿ռäÒ²¿ÉÄܱÈÔ¤ÏëµÄÒªÉÙ¡£ - CHAR(n) ×îÊʺÏÓÚ´æ´¢³¤¶È»ù±¾²î²»¶àµÄ×Ö·û´®¡£VARCHAR(n) - ÔÚ´æ´¢ÏÞÖÆÁË×î´ó³¤¶ÈµÄ±ä³¤×Ö·û´®ÊÇ×îºÃµÄ¡£TEXT - ÊÊÓÃÓÚ´æ´¢²»ÏÞÖÆ³¤¶ÈµÄ×Ö·û´®£¬×î´ó¿É´ï 1G¡£BYTEA + + VARCHAR(n) ÔÚ´æ´¢ÏÞÖÆÁË×î´ó³¤¶ÈµÄ±ä³¤×Ö·û´®ÊÇ×îºÃµÄ¡£ TEXT + ÊÊÓÃÓÚ´æ´¢×î´ó¿É´ï 1G×óÓÒµ«Î´¶¨ÒåÏÞÖÆ³¤¶ÈµÄ×Ö·û´®¡£ + + CHAR(n) ×îÊʺÏÓÚ´æ´¢³¤¶ÈÏàͬµÄ×Ö·û´®¡£ + CHAR(n)»á¸ù¾ÝËù¸ø¶¨µÄ×ֶ㤶ÈÒÔ¿Õ¸ñ²¹×㣨²»×ãµÄ×Ö¶ÎÄÚÈÝ£©£¬ ¶ø + VARCHAR(n) Ö»´æ´¢Ëù¸ø¶¨µÄÊý¾ÝÄÚÈÝ¡£ BYTEA ÓÃÓÚ´æ´¢¶þ½øÖÆÊý¾Ý£¬ÓÈÆäÊǰüº¬ NULL - ×Ö½Ú£¨¶þ½øÖƵÄ0£©µÄÖµ¡£ÕâЩÀàÐ;ßÓÐÀàÐ͵ÄÐÔÄÜ¡£ + ×Ö½ÚµÄÖµ¡£ÕâЩÀàÐ;ßÓÐÏàËÆµÄÐÔÄÜÌØÐÔ¡£ - 4.15.1) ÎÒÔõÑù´´½¨Ò»¸öÐòÁкÅ/×Ô¶¯µÝÔöµÄ×ֶΣ¿ + 4.11.1)ÎÒÔõÑù´´½¨Ò»¸öÐòÁкÅ/×Ô¶¯µÝÔöµÄ×ֶΣ¿ PostgreSQL Ö§³Ö SERIAL - Êý¾ÝÀàÐÍ¡£ËüÔÚ×Ö¶ÎÉÏ×Ô¶¯´´½¨Ò»¸öÐòÁкÍË÷Òý¡£ÀýÈ磬 - CREATE TABLE person ( - id SERIAL, - name TEXT - ); + Êý¾ÝÀàÐÍ¡£ËüÔÚ×Ö¶ÎÉÏ×Ô¶¯´´½¨Ò»¸öÐòÁкÍË÷Òý¡£ÀýÈ磺 + 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 UNIQUE INDEX person_id_key ON person ( id ); - ²Î¿¼ create_sequence ÊÖ²áÒ³»ñÈ¡¹ØÓÚÐòÁеĸü¶àÐÅÏ¢¡£Ä㻹¿ÉÒÔÓÃÿÐÐµÄ - oid ×Ö¶Î×÷Ϊһ¸öΨһֵ¡£²»¹ý£¬Èç¹ûÄãÐèÒªÇãµ¹ºÍÖØÔØÊý¾Ý¿â£¬ÄãÐèҪʹÓà - pg_dump µÄ -o Ñ¡Ïî»òÕß COPY WITH OIDS Ñ¡ÏîÒÔ±£Áô OID¡£ - - 4.15.2) ÎÒÈçºÎ»ñµÃÒ»¸ö²åÈëµÄÐòÁкŵÄÖµ£¿ + 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.15.1 ÀïµÄÀý±í£¬¿ÉÓÃαÂëÕâÑùÃèÊö£º - new_id = execute("SELECT nextval('person_id_seq')"); - execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise - Pascal')"); + Öµ£¬È»ºóÔÙÏÔʽ²åÈ롣ʹÓà 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 + ±íµÄÍâ¼ü£©¡£ ×¢Òâ×Ô¶¯´´½¨µÄ 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')"); - ×îºó£¬Äã¿ÉÒÔʹÓÃ´Ó INSERT Óï¾ä·µ»ØµÄ OID - ²éÕÒȱʡֵ£¬¾¡¹ÜÕâ¿ÉÄÜÊÇ×îȱ·¦ÒÆÖ²ÐԵķ½·¨¡£ÔÚ Perl ÀʹÓôøÓÐ - Edmund Mergl µÄ DBD::Pg Ä£¿éµÄ DBI£¬oid Öµ¿ÉÒÔͨ¹ý $sth->execute() - ºóµÄ $sth->{pg_oid_status} »ñµÃ¡£ - - 4.15.3) ʹÓà currval() ºÍ nextval() »áµ¼ÖÂÒ»¸öÓëÆäËûÓû§Ö®¼äµÄÎÉÂÒÇé¿öÂ𣿠- - ²»»á¡£currval() ·µ»Øºǫ́½ø³Ì¶ø²»ÊÇËùÓÐÓû§¸³ÓèµÄµ±Ç°Öµ¡£ - - 4.15.4) - Ϊʲô²»ÔÚÊÂÎñÒì³£ÖÐÖ¹ºóÖØÓÃÐòÁкÅÄØ£¿ÎªÊ²Ã´ÔÚÐòÁкÅ×ֶεÄȡֵÖдæÔÚ¼ä¶ÏÄØ£ - ¿ - - ΪÁËÌá¸ß²¢·¢ÐÔ£¬ÐòÁкÅÔÚÐèÒªµÄʱºò¸³ÓèÕýÔÚÔËÐеÄÊÂÎñ£¬²¢ÇÒÖ»ÔÚÊÂÎñ½áÊø - ֮ǰ²»·âËø¡£Õâ¾Í»áµ¼ÖÂØ²ÕÛÊÂÎñºóµÄÐòÁкųöÏÖ¼ä¸ô¡£ - - 4.16) ʲôÊÇ OID£¿Ê²Ã´ÊÇ TID£¿ - - OID ÊÇ PostgreSQL ÖÐÐеÄΨһ±êʶ¡£PostgreSQL - Àï´´½¨µÄÿһÐж¼»ñµÃÒ»¸öΨһµÄ OID¡£ËùÓÐÔÚ initdb ¹ý³ÌÖд´½¨µÄ OID - ¶¼Ð¡ÓÚ 16384 £¨²Î¼û include/access/transam.h£©¡£ËùÓÐÓû§´´½¨µÄ OID - ¶¼´óÓÚ»òµÈÓÚÕâ¸öÖµ¡£È±Ê¡Ê±£¬ËùÓÐÕâЩ OID - ²»½öÔÚÒ»¸ö±í»òÒ»¸öÊý¾Ý¿âÀïÃæÎ¨Ò»£¬¶øÇÒÔÚÕû¸ö PostgreSQL - °²×°ÀïÒ²ÊÇΨһµÄ¡£ - PostgreSQL ÔÚËüµÄÄÚ²¿ÏµÍ³±íÀïʹÓà OID ÔÚ±íÖ®¼ä½¨Á¢ÁªÏµ¡£ÕâЩ OID - ¿ÉÒÔÓÃÓÚ±êÊ¶ÌØ¶¨µÄÓû§ÐÐÒÔ¼°ÓÃÔÚÁ¬½ÓÀï¡£½¨ÒéʹÓÃ×Ö¶ÎÀàÐÍ OID ´æ´¢ OID - Öµ¡£¿ÉÒÔÔÚ OID ×Ö¶ÎÉÏ´´½¨Ò»¸öË÷ÒýÒÔ¿ìËÙ·ÃÎÊ¡£ - OID ´ÓÒ»¸ö±»ËùÓÐÊý¾Ý¿âʹÓõÄÖÐÐÄÇøÓòÀ︳ֵ¸øËùÓÐÐÂÐС£Èç¹ûÄãÏë°Ñ OID - ¸Ä³É±ðµÄÖµ£¬»òÕßÏë×öÒ»·Ý±íµÄ´øÔʼ OID µÄ¿½±´£¬Äã¿ÉÒÔ×öµ½£º - 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 - ÓÃ4×Ö½ÚµÄÕûÊý±£´æ£¬ÔÚ³¬¹ý40ÒÚʱ½«Òç³ö¡£Ã»ÓÐÈ˱¨¸æ³öÏÖ¹ýÒç³ö£¬¶øÎÒÃÇ´òË - ãÔÚÓÐÈ˱¨¸æÖ®Ç°Ïû³ýÕâ¸öÏÞÖÆ¡£ - TID ÓÃÓÚ±êʶ´ø×ÅÊý¾Ý¿é£¨µØÖ·£©ºÍ£¨¿éÄÚ£©Æ«ÒƵÄÌØ¶¨µÄÎïÀíÐС£TID - ÔÚÐб»¸ü¸Ä»òÖØÔØºó·¢Éú¸Ä±ä¡£Ë÷ÒýÈë¿ÚʹÓÃËüÃÇÖ¸ÏòÎïÀíÐС£ - - 4.17) PostgreSQL ʹÓõÄһЩÊõÓïµÄº¬ÒåÊÇʲô£¿ - - һЩԴ´úÂëºÍһЩ¾ÉÒ»µãµÄÎĵµÊ¹ÓÃһЩÓиü³£ÓÃÓ÷¨µÄÊõÓï¡£ÏÂÃæÊÇÆäÖÐÒ»²¿ - ·Ö£º - 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 - ÓÐÒ»¸öͨÓÃÊý¾Ý¿âÊõÓïµÄÁÐ±í£ºhttp://hea-www.harvard.edu/MST/simul/softw - are/docs/pkgs/pgsql/glossary/glossary.html ¡£ - - 4.18) ΪʲôÎÒÊÕµ½´íÎó¡°ERROR: Memory exhausted in AllocSetAlloc()¡±£¿ + SERIAL Öµ£¬ÀýÈ磺 + execute("INSERT INTO person (name) VALUES ('Blaise Pascal')"); + new_id = execute("SELECT currval('person_id_seq')"); + + 4.11.3)ʹÓà currval() »áµ¼ÖÂºÍÆäËûÓû§µÄ³åÍ»Çé¿ö£¨race condition£©Â𣿠- ÕâºÜ¿ÉÄÜÊÇϵͳµÄÐéÄâÄÚ´æÓùâÁË£¬»òÕßÄں˶ÔijЩ×ÊÔ´Óнϵ͵ÄÏÞÖÆÖµ¡£ÔÚÆô - ¶¯ postmaster ֮ǰÊÔÊÔÏÂÃæµÄÃüÁ - ulimit -d 262144 - limit datasize 256m - È¡¾öÓÚÄãÓÃµÄ - shell£¬ÉÏÃæÃüÁîÖ»ÓÐÒ»ÌõÄܳɹ¦£¬µ«ÊÇËü½«°ÑÄãµÄ½ø³ÌÊý¾Ý¶ÎÏÞÖÆÉèµÃ±È½Ï¸ß£ - ¬Òò¶øÒ²ÐíÄÜÈòéѯÍê³É¡£ÕâÌõÃüÁîÓ¦ÓÃÓÚµ±Ç°½ø³Ì£¬ÒÔ¼°ËùÓÐÔÚÕâÌõÃüÁîÔËÐк - ó´´½¨µÄ×Ó½ø³Ì¡£Èç¹ûÄãÊÇÔÚÔËÐÐSQL¿Í»§¶ËʱÒòΪºǫ́·µ»ØÁËÌ«¶àµÄÊý¾Ý¶ø³öÏÖ - ÎÊÌ⣬ÇëÔÚÔËÐпͻ§¶Ë֮ǰִÐÐÉÏÊöÃüÁî¡£ + ²»»á¡£currval() ·µ»ØµÄÊÇÄã±¾´Î»á»°½ø³ÌËù¸³µÄÖµ¶ø²»ÊÇËùÓÐÓû§µÄµ±Ç°Öµ¡£ - 4.19) ÎÒÈçºÎ²ÅÄÜÖªµÀËùÔËÐÐµÄ PostgreSQL µÄ°æ±¾£¿ + 4.11.4)Ϊʲô²»ÔÚÊÂÎñÒì³£ÖÐÖ¹ºóÖØÓÃÐòÁкÅÄØ£¿ÎªÊ²Ã´ÔÚÐòÁкÅ×ֶεÄȡֵÖдæÔÚ + ¼ä¶ÏÄØ£¿ - ´Ó psql À¼üÈë SELECT version()£» + ΪÁËÌá¸ß²¢·¢ÐÔ£¬ÐòÁкÅÔÚÐèÒªµÄʱºò¸³ÓèÕýÔÚÔËÐеÄÊÂÎñ£¬²¢ÇÒÔÚÊÂÎñ½áÊøÖ® + ǰ²»½øÐÐËø¶¨£¬ Õâ¾Í»áµ¼ÖÂÒì³£ÖÐÖ¹µÄÊÂÎñºó£¬ÐòÁкŻá³öÏÖ¼ä¸ô¡£ - 4.20) ΪʲôÎҵĴó¶ÔÏó²Ù×÷µ¼Ö´íÎó¡°invalid large obj - descriptor¡±£¨·Ç·¨µÄ´ó¶ÔÏóÃèÊö·û£©£¿ + 4.12)ʲôÊÇ OID £¿Ê²Ã´ÊÇ CTID £¿ - ÄãÐèÒªÔÚʹÓÃÈκδó¶ÔÏó¾ä±úµÄǰºó·ÅÉÏ BEGIN WORK ºÍ - COMMIT£¬Ò²¾ÍÊÇ˵£¬°üΧ lo_open ... lo_close¡£ - Ŀǰ PostgreSQL - Ç¿ÖÆÊµÊ©ÕâÌõ¹æÔò£ºÔÚÊÂÎñÌύʱ¹Ø±Õ´ó¶ÔÏó¾ä±ú£¬ÕâÑù£¬£¨Ã»ÓвÉÓÃÊÂÎñʱ£© - £¬Ê״ζԴó¶ÔÏó¾ä±ú×öÈκÎÊÂÇéµÄÆóͼ¶¼»áµ¼ÖÂÒ»¸ö invalid large obj - descriptor¡£ËùÒÔ£¬Èç¹ûÄãûÓÐʹÓÃÒ»¸öÊÂÎñ£¬ÒÔǰÄܹ¤×÷µÄ´úÂ루ÖÁÉÙÊÇ´ó¶à - Êýʱ¼ä£©½«»áÉú³ÉÕâôһ¸ö´íÎóÐÅÏ¢¡£ - Èç¹ûÄãʹÓÿͻ§¶Ë½Ó¿Ú£¬Èç ODBC£¬Äã¿ÉÄÜÐèÒª set auto-commit off¡£ + PostgreSQL + Àï´´½¨µÄÿһÐмǼ¶¼»á»ñµÃÒ»¸öΨһµÄOID£¬³ý·ÇÔÚ´´½¨±íʱʹÓÃWITHOUT + OIDSÑ¡Ïî¡£ OID´´½¨Ê±»á×Ô¶¯Éú³ÉÒ»¸ö4×Ö½ÚµÄÕûÊý£¬ËùÓÐ OID ÔÚÕû¸ö + PostgreSQL ÖоùÊÇΨһµÄ¡£ È»¶ø£¬ËüÔÚ³¬¹ý40ÒÚʱ½«Òç³ö£¬ + OID´Ëºó»á³öÏÖÖØ¸´¡£PostgreSQL ÔÚËüµÄÄÚ²¿ÏµÍ³±íÀïʹÓà OID + ÔÚ±íÖ®¼ä½¨Á¢ÁªÏµ¡£ + + ÔÚÓû§µÄÊý¾Ý±íÖУ¬×îºÃÊÇʹÓÃSERIAlÀ´´úÌæOID + ÒòΪSERIALÖ»ÊDZ£Ö¤ÔÚµ¥¸ö±íÖÐÊý¾ÝÊÇΨһµÄ£¬ÕâÑùËüÒç³öµÄ¿ÉÄÜÐԾͷdz£Ð¡ÁË + £¬ SERIAL8¿ÉÓÃÀ´±£´æ8×Ö½ÚµÄÐòÁкÅ×ֶΡ£ + + CTID ÓÃÓÚ±êʶ´ø×ÅÊý¾Ý¿é£¨µØÖ·£©ºÍ£¨¿éÄÚ£©Æ«ÒƵÄÌØ¶¨µÄÎïÀíÐС£ CTID + ÔڼǼ±»¸ü¸Ä»òÖØÔØºó·¢Éú¸Ä±ä¡£Ë÷ÒýÈë¿ÚʹÓÃËüÃÇÖ¸ÏòÎïÀíÐС£ - 4.21) ÎÒÈçºÎ´´½¨Ò»¸öȱʡֵÊǵ±Ç°Ê±¼äµÄ×ֶΣ¿ + 4.13)ΪʲôÎÒÊÕµ½´íÎóÐÅÏ¢¡°ERROR: Memory exhausted in AllocSetAlloc()¡±£¿ - ʹÓà CURRENT_TIMESTAMP£º - CREATE TABLE test(x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP); + ÕâºÜ¿ÉÄÜÊÇϵͳµÄÐéÄâÄÚ´æÓùâÁË£¬»òÕßÄں˶ÔijЩ×ÊÔ´Óнϵ͵ÄÏÞÖÆÖµ¡£ÔÚÆô + ¶¯ postmaster ֮ǰÊÔÊÔÏÂÃæµÄÃüÁ + ulimit -d 262144 + limit datasize 256m + + È¡¾öÓÚÄãÓÃµÄ + shell£¬ÉÏÃæÃüÁîÖ»ÓÐÒ»ÌõÄܳɹ¦£¬µ«ÊÇËü½«°ÑÄãµÄ½ø³ÌÊý¾Ý¶ÎÏÞÖÆÉèµÃ±È½Ï¸ß£ + ¬ + Òò¶øÒ²ÐíÄÜÈòéѯÍê³É¡£ÕâÌõÃüÁîÓ¦ÓÃÓÚµ±Ç°½ø³Ì£¬ÒÔ¼°ËùÓÐÔÚÕâÌõÃüÁîÔËÐкó + ´´½¨µÄ×Ó½ø³Ì¡£ + Èç¹ûÄãÊÇÔÚÔËÐÐSQL¿Í»§¶ËʱÒòΪºǫ́·µ»ØÁËÌ«¶àµÄÊý¾Ý¶ø³öÏÖÎÊÌ⣬ÇëÔÚÔËÐп + Í»§¶Ë֮ǰִÐÐÉÏÊöÃüÁî¡£ - 4.22) ΪʲôʹÓà IN µÄ×Ó²éѯÕâôÂý£¿ + 4.14)ÎÒÈçºÎ²ÅÄÜÖªµÀËùÔËÐÐµÄ PostgreSQL µÄ°æ±¾£¿ - Ŀǰ£¬ÎÒÃÇͨ¹ýΪÍâ²éѯµÄÿһÐÐ˳ÐòɨÃè×Ó²éѯµÄ½á¹ûÀ´Á¬½Ó×Ó²éѯºÍÍâ²éѯ - ¡£Èç¹û×Ó²éѯ·µ»ØÉÙÊý¼¸ÐУ¬¶øÍâ²éѯ·µ»ØºÜ¶àÐУ¬IN - Ö´Ðеúܿ졣ΪÁ˼ӿìÆäËû IN ²éѯµÄÖ´ÐУ¬¿ÉÒÔÓà EXISTS Ìæ»» IN£º - SELECT * - FROM tab - WHERE col IN (SELECT subcol FROM subtab); - ¸ÄΪ£º - SELECT * - FROM tab - WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col); - ºóÕßÒªÏëÖ´Ðеøü¿ì£¬subcol - Ó¦¸ÃÊÇÒ»¸öË÷ÒýÁС£ÎÒÃÇÏ£ÍûÔÚδÀ´µÄ·¢²¼°æ±¾ÖÐÐÞ²¹Õâ¸öÏÞÖÆ¡£ + ´Ó psql ÀÊäÈë SELECT version();Ö¸Áî¡£ - 4.23) ÎÒÔõÑù½øÐÐ outer join £¨ÍâÁ¬½Ó£©£¿ + 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 - ÔÚ×ó[Íâ]Á¬½Ó¡¢ÓÒ[Íâ]Á¬½ÓºÍÍêÈ«[Íâ]Á¬½ÓÖÐÊÇ¿ÉÑ¡µÄ£¬ÆÕͨÁ¬½Ó±»³ÉΪÄÚÁ¬½Ó + 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£©¡£ - ÔÚ´ËǰµÄ°æ±¾ÖУ¬ÍâÁ¬½Ó¿ÉÒÔÓà UNION ºÍ NOT IN - À´Ä£Äâ¡£ÀýÈ磬ÏÂÃæµÄÀý×ÓÔÚ±í tab1 ºÍ tab2 Ö®¼ä×öÍâÁ¬½Ó£º - 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) ÈçºÎʹÓÃÉæ¼°¶à¸öÊý¾Ý¿âµÄ²éѯ£¿ - - ûÓа취²éѯµ±Ç°Êý¾Ý¿âÖ®ÍâµÄÊý¾Ý¿â¡£ÒòΪ PostgreSQL - ¼ÓÔØÊý¾Ý¿âÏà¹ØµÄϵͳĿ¼£¨ÏµÍ³±í£©£¬¿çÊý¾Ý¿âµÄ²éѯÈçºÎÖ´ÐÐҲδÃ÷È·¡£ - contrib/dblink - ÔÊÐí²ÉÓú¯Êýµ÷ÓÃʵÏÖ¿ç¿â²éѯ¡£µ±È»¿ÉÒÔͬʱÁ¬½Óµ½²»Í¬µÄÊý¾Ý¿â²¢ÔÚ¿Í»§¶Ë - ºÏ²¢½á¹û¡£ - - 4.25) ÈçºÎÈú¯Êý·µ»Ø¶àÐлò¶àÁУ¿ - - ¿ÉÒÔÔÚ PL/pgSQL º¯ÊýÖÐʹÓà refcursors ·µ»Ø½á¹û¼¯¡£²Î¿´ - http://www.PostgreSQL.org/idocs/index.php?plpgsql-cursors.html, - 23.7.3.3½Ú¡£ - - 4.26) ΪʲôÔÚ PL/PgSQL º¯ÊýÖв»Äܿɿ¿µØ´´½¨»òɾ³ýÁÙʱ±í£¿ - - PL/PgSQL »º´æº¯ÊýµÄÄÚÈÝ£¬ÓÉ´Ë´øÀ´µÄÒ»¸ö²»ºÃµÄ¸±×÷ÓÃÊÇÈôÒ»¸ö PL/PgSQL - º¯Êý·ÃÎÊÁËÒ»¸öÁÙʱ±í£¬È»ºó¸Ã±í±»É¾³ý²¢Öؽ¨ÁË£¬ÔòÔٴε÷Óøú¯Êý½«Ê§°Ü£¬ - ÒòΪ»º´æµÄº¯ÊýÄÚÈÝÈÔȻָÏò¾ÉµÄÁÙʱ±í¡£½â¾öµÄ·½·¨ÊÇÔÚ PL/PgSQL ÖÐÓà - EXECUTE ¶ÔÁÙʱ±í½øÐзÃÎÊ¡£ÕâÑù»á±£Ö¤²éѯÔÚÖ´ÐÐǰ×ÜÊÇÖØÐ·ÖÎö¡£ - 4.27) ÓÐÄÄЩÊý¾Ý¸´ÖÆÑ¡Ï + 4.17)ÈçºÎʹÓÃÉæ¼°¶à¸öÊý¾Ý¿âµÄ²éѯ£¿ - Óм¸ÖÖÖ÷/´Ó·½Ê½µÄ¸´ÖÆÑ¡Ïî¡£ÕâЩѡÏîÖ»ÔÊÐíÖ÷Êý¾Ý¿â½øÐиüУ¬´ÓÊý¾Ý¿âÖ»Ä - ܽøÐжÁ¡£ÍøÒ³ http://gborg.PostgreSQL.org/genpage?replication_research - µÄ×îºóÁгöÁËÕâЩѡÏî¡£ÔÚ - http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php - ÕýÔÚ½øÐÐÒ»¸ö¶àÖ÷±¾¸´ÖƵĽâ¾ö·½°¸¡£ + ûÓа취²éѯµ±Ç°Êý¾Ý¿âÖ®ÍâµÄÊý¾Ý¿â¡£ ÒòΪ PostgreSQL + Òª¼ÓÔØÓëÊý¾Ý¿âÏà¹ØµÄϵͳĿ¼£¨ÏµÍ³±í£©£¬Òò´Ë¿çÊý¾Ý¿âµÄ²éѯÈçºÎÖ´ÐÐÊDz» + ¶¨µÄ¡£ - 4.28) ÓÐÄÄЩÊý¾Ý¼ÓÃÜÑ¡Ï - - contrib/pgcrypto °üº¬Á˺ܶàÔÚ SQL - ²éѯÖÐʹÓõļÓÃܺ¯Êý¡£¼ÓÃܿͻ§¶Ëµ½·þÎñÆ÷¶Ë´«ÊäÊý¾ÝµÄΨһ·½·¨ÊÇÔÚ - pg_hba.conf ÖвÉÓà hostss ¡£ - 7.3 °æ±¾ÖÐ×Ô¶¯¶ÔÊý¾Ý¿âÓû§ÃÜÂë½øÐмÓÃÜ¡£ÔÚÒÔǰµÄ°æ±¾ÖУ¬±ØÐëÔÚ - postgresql.conf Öдò¿ª PASSWORD_ENCRYPTION - Ñ¡Ïî¡£·þÎñÆ÷¿ÉÒÔÔËÐÐÔÚ¼ÓÃܵÄÎļþϵͳÉÏ£¨ÒÔ´ïµ½¼ÓÃܵÄÄ¿µÄ£©¡£ - ---------------------------------------------------------------------- - ---------- + ¸½¼ÓÔöֵģ¿écontrib/dblinkÔÊÐí²ÉÓú¯Êýµ÷ÓÃʵÏÖ¿ç¿â²éѯ¡£µ±È»Óû§Ò²¿ÉÒÔ + ͬʱÁ¬½Óµ½²»Í¬µÄÊý¾Ý¿âÖ´ÐвéѯȻºóÔÚ¿Í»§¶ËºÏ²¢½á¹û¡£ - À©Õ¹ PostgreSQL - - 5.1) ÎÒдÁËÒ»¸öÓû§¶¨Ò庯Êý¡£µ±ÎÒÔÚ psql ÀïÔËÐÐʱ£¬ÎªÊ²Ã´»áµ¼Ö core dump£¿ + 4.18)ÈçºÎÈú¯Êý·µ»Ø¶àÐлò¶àÁУ¿ - ²úÉúÕâ¸öÎÊÌâµÄÔÒòºÜ¶à¡£ÇëÏÈÔÚÒ»¸öµ¥¶ÀµÄ²âÊÔ³ÌÐòÖвâÊÔÄãµÄ×Ô¶¨Ò庯Êý¡£ + ÔÚº¯ÊýÖзµ»ØÊý¾Ý¼Ç¼¼¯µÄ¹¦ÄÜÊǺÜÈÝÒ×ʹÓõģ¬ÏêÇé²Î¼û£º + http://techdocs.postgresql.org/guides/SetReturningFunctions - 5.2) ÎÒÈçºÎÄܸø PostgreSQL ¹±Ï×һЩͦ²»´íµÄÐÂÀàÐͺͺ¯Êý£¿ + 4.19)ΪʲôÎÒÔÚʹÓÃPL/PgSQLº¯Êý´æÈ¡ÁÙʱ±íʱ»áÊÕµ½´íÎóÐÅÏ¢¡°relation with + OID ##### does not exist¡±£¿ - ½«ÄãµÄÀ©Õ¹·¢Ë͵½ pgsql-hackers ÓʼþÁÐ±í£¬ËüÃÇ×îÖջᱻ·Åµ½ contrib/ - ×ÓĿ¼¡£ + PL/PgSQL»á»º´æº¯ÊýµÄÄÚÈÝ£¬ÓÉ´Ë´øÀ´µÄÒ»¸ö²»ºÃµÄ¸±×÷ÓÃÊÇÈôÒ»¸ö PL/PgSQL + º¯Êý·ÃÎÊÁËÒ»¸öÁÙʱ±í£¬È»ºó¸Ã±í±»É¾³ý²¢Öؽ¨ÁË£¬ÔòÔٴε÷Óøú¯Êý½«Ê§°Ü£¬ + ÒòΪ»º´æµÄº¯ÊýÄÚÈÝÈÔȻָÏò¾ÉµÄÁÙʱ±í¡£½â¾öµÄ·½·¨ÊÇÔÚ PL/PgSQL + ÖÐÓÃEXECUTE ¶ÔÁÙʱ±í½øÐзÃÎÊ¡£ÕâÑù»á±£Ö¤²éѯÔÚÖ´ÐÐǰ×Ü»á±»ÖØÐ½âÎö¡£ - 5.3) ÎÒÔõÑùдһ¸ö·µ»ØÒ»ÌõÔª×éµÄ C º¯Êý£¿ + 4.27)ĿǰÓÐÄÄЩÊý¾Ý¸´ÖÆ·½°¸¿ÉÓã¿ - ÔÚ PostgreSQL 7.3 ÒÔºóµÄ°æ±¾ÖУ¬C, PL/PgSQL ºÍ SQL - Íêȫ֧³Ö·µ»ØÖµÎª±íµÄº¯Êý¡£¸ü¶àÐÅÏ¢Çë²Î¿¼ ³ÌÐòÔ±Ö¸ÄÏ£¨the Programmer's - Guide£©¡£ÔÚ contrib/tablefunc ÖÐÓÐÒ»¸öÀý×ÓÊÇÓà C - дµÄ·µ»ØÖµÎª±íµÄº¯Êý¡£ + ¡°¸´ÖÆ¡±Ö»ÊÇÒ»¸öÊõÓÓкü¸ÖÖ¸´ÖƼ¼Êõ¿ÉʹÓã¬Ã¿ÖÖ¶¼ÓÐÓŵãºÍȱµã£º - 5.4) ÎÒÐÞ¸ÄÁËÒ»¸öÔ´Îļþ£¬ÎªÊ²Ã´ÖØÐ±àÒëºóûÓп´µ½¸Ä±ä£¿ - - Makefiles ÖÐûÓаüº¬Í·ÎļþµÄÕýÈ·ÒÀÀµ¡£Äú±ØÐëÏÈ×ömake clean£¬ ÔÙ×öÒ»´Î - make ¡£Èç¹ûÄúʹÓõÄÊÇ GCC £¬Ôò¿ÉÒÔ²ÉÓÃÑ¡Ïî --enable-depend - ÈñàÒëÆ÷×Ô¶¯Éú³ÉÍ·ÎļþµÄÒÀÀµ¹ØÏµ¡£ + Ö÷/´Ó¸´ÖÆ·½Ê½ÊÇÔÊÐíÒ»¸öÖ÷·þÎñÆ÷½ÓÊܶÁ/дµÄÉêÇ룬¶ø¶à¸ö´Ó·þÎñÆ÷Ö»ÄܽÓÊÜ + ¶Á/SELECT²éѯµÄÉêÇ룬 Ŀǰ×îÁ÷ÐÐÇÒÊÇÃâ·ÑµÄÖ÷/´Ó PostgreSQL¸´ÖÆ·½°¸ÊÇ + Slony-I ¡£ + + ¶à¸öÖ÷·þÎñÆ÷µÄ¸´ÖÆ·½Ê½ÔÊÐí½«¶Á/дµÄÉêÇë·¢Ë͸ø¶ą̀µÄ¼ÆËã»ú£¬ÕâÖÖ·½Ê½ÓÉÓ + ÚÐèÒªÔÚ¶ą̀·þÎñÆ÷Ö®¼äͬ²½Êý¾Ý±ä¶¯ + ¿ÉÄÜ»á´øÀ´½ÏÑÏÖØµÄÐÔÄÜËðʧ£¬PgclusterÊÇĿǰÕâÖÖ·½°¸ + ÖÐ×îºÃµÄ£¬¶øÇÒ»¹¿ÉÒÔÃâ·ÑÏÂÔØ¡£ + + Ò²ÓÐһЩÉÌÒµÐ踶·ÑºÍ»ùÓÚÓ²¼þµÄÊý¾Ý¸´ÖÆ·½°¸£¬Ö§³ÖÉÏÊö¸÷ÖÖ¸´ÖÆÄ£ÐÍ¡£ diff --git a/doc/src/FAQ/FAQ_chinese.html b/doc/src/FAQ/FAQ_chinese.html index 744496dd627..8a4662c2538 100644 --- a/doc/src/FAQ/FAQ_chinese.html +++ b/doc/src/FAQ/FAQ_chinese.html @@ -1,990 +1,875 @@ -<?xml version="1.0"?> -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<!-- saved from url=(0063)file://I:\Wlzhang\MyDoc\postgresql\FAQcn.files\postgres-faq.htm --> -<!-- saved from url=(0046)http://laser.zhengmai.com.cn/postgres-faq.html --> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta name="generator" content= -"HTML Tidy for BSD/OS (vers 12 April 2005), see www.w3.org" /> -<title>PostgreSQL FAQ-ch</title> -<meta http-equiv="Content-Type" content= -"text/html; CHARSET=gb2312" /> -<meta content="Microsoft FrontPage 4.0" name="GENERATOR" /> -</head> -<body alink="#0000FF" bgcolor="#FFFFFF" link="#FF0000" text= -"#000000" vlink="#A00000"> -<h1>PostgreSQL ³£¼ûÎÊÌ⣨FAQ£©</h1> -×î½ü¸üУº2003 Äê 01 Ô 06 ÈÕ ÐÇÆÚÒ» 22:27:35 CST -<p>Ŀǰά»¤ÈËÔ±£ºBruce Momjian (<a href= -"mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>)<br /> -ÖÐÎİæÎ¬»¤ÈËÔ±£ººÎΰƽ £¨laser@pgsqldb.com £©</p> -<p>±¾ÎĵµµÄ×îа汾¿ÉÒÔÔÚ<a href= -"http://www.postgresql.org/files/documentation/faqs/FAQ.html">http://www.postgresql.org/files/documentation/faqs/FAQ.html</a> -²é¿´¡£</p> -<p>²Ù×÷ϵͳƽ̨Ïà¹ØµÄÎÊÌâÔÚ<a href= -"http://www.postgresql.org/docs/faq/">http://www.postgresql.org/docs/faq/</a>Àï»Ø´ð¡£<br /> -</p> -<hr /> -<center> -<h2>³£¼ûÎÊÌâ</h2> -</center> -<a href="#1.1">1.1</a>) PostgreSQL ÊÇʲô£¿¸ÃÔõô·¢Òô£¿<br /> -<a href="#1.2">1.2</a>) PostgreSQL µÄ°æÈ¨ÊÇʲô?<br /> -<a href="#1.3">1.3</a>) PostgreSQL ÔËÐÐÔÚʲô Unix ƽ̨ÉÏ£¿<br /> -<a href="#1.4">1.4</a>) ¿ÉÓÃµÄ·Ç Unix ƽ̨ÓÐÄÇЩ£¿<br /> -<a href="#1.5">1.5</a>) ÎÒ´ÓÄÄÀïÄܵõ½ PostgreSQL£¿<br /> -<a href="#1.6">1.6</a>) ÎÒ´ÓÄÄÀïÄܵõ½¶Ô PostgreSQL µÄÖ§³Ö£¿<br /> -<a href="#1.7">1.7</a>) PostgreSQL ×îеİ汾ÊÇʲô£¿<br /> -<a href="#1.8">1.8</a>) ÓÐÄÄЩ¿ÉÓÃµÄ PostgreSQL µÄÎĵµ£¿<br /> -<a href="#1.9">1.9</a>) ÎÒÈçºÎÁ˽âÒÑÖªµÄ BUG »òȱʧµÄÌØÐÔ£¿<br /> -<a href="#1.10">1.10</a>) ÎÒÓ¦¸ÃÔõÑùѧϰ SQL £¿<br /> -<a href="#1.11">1.11</a>) PostgreSQL ÊÇ Y2K ¼æÈݵÄÂð£¿<br /> -<a href="#1.12">1.12</a>) ÎÒÓ¦¸ÃÔõÑù¼ÓÈ뿪·¢¶ÓÎ飿<br /> -<a href="#1.13">1.13</a>) ÎÒÓ¦¸ÃÔõÑùÌá½»Ò»¸ö BUG ±¨¸æ£¿<br /> -<a href="#1.14">1.14</a>) PostgreSQL ºÍÆäËû DBMS ±ÈÆðÀ´ÈçºÎ£¿<br /> -<a href="#1.15">1.15</a>) ÎÒÓ¦¸ÃÔõÑùÔÞÖú PostgreSQL £¿ -<center> -<h2>Óû§¿Í»§¶ËÎÊÌâ</h2> -</center> -<a href="#2.1">2.1</a>) ÓÐ PostgreSQL µÄ ODBC Çý¶¯³ÌÐòô£¿<br /> -<a href="#2.2">2.2</a>) ÓÐʲô¹¤¾ß¿ÉÒÔ°Ñ PostgreSQL ÓÃÓÚ Web -Ò³Ãæ£¿<br /> -<a href="#2.3">2.3</a>) PostgreSQL ÓµÓÐͼÐÎÓû§½çÃæÂð£¿<br /> -<a href="#2.4">2.4</a>) ÎÒÃÇ¿ÉÒÔÓÃʲôÓïÑÔºÍ PostgreSQL ´ò½»µÀ£¿ -<center> -<h2>ϵͳ¹ÜÀíÎÊÌâ</h2> -</center> -<a href="#3.1">3.1</a>) ÎÒÔõÑùÄÜ°Ñ PostgreSQL ×°ÔÚ /usr/local/pgsql -ÒÔÍâµÄµØ·½£¿<br /> -<a href="#3.2">3.2</a>) µ±ÎÒÔËÐÐ postmaster ʱ£¬³öÏÖ <i>Bad System -Call</i>£¨ÏµÍ³µ÷ÓÃ´í£©»ò Core Dumped ´íÎó¡£ÎªÊ²Ã´£¿<br /> -<a href="#3.3">3.3</a>) µ±ÎÒÊÔͼÔËÐÐ postmaster ʱ£¬³öÏÖ -<i>IpcMemoryCreate</i> ´íÎó¡£ÎªÊ²Ã´£¿<br /> -<a href="#3.4">3.4</a>) µ±ÎÒÊÔͼÔËÐÐ postmaster ʱ£¬³öÏÖ -<i>IpcSemaphoreCreate</i> ´íÎó¡£ÎªÊ²Ã´£¿<br /> -<a href="#3.5">3.5</a>) ÎÒÈçºÎ¿ØÖÆÀ´×ÔÆäËûÖ÷»úµÄÁ¬½Ó£¿<br /> -<a href="#3.6">3.6</a>) -ÎÒÔõÑùµ÷ÕûÊý¾Ý¿âÒýÇæÒÔ»ñµÃ¸üºÃµÄÐÔÄÜ£¿<br /> -<a href="#3.7">3.7</a>) PostgreSQL -Àï¿ÉÒÔ»ñµÃʲôÑùµÄµ÷ÊÔÌØÐÔ£¿<br /> -<a href="#3.8">3.8</a>) ΪʲôÔÚÊÔͼÁ¬½ÓµÇ¼ʱÊÕµ½¡°Sorry, too many -clients¡± ÏûÏ¢£¿<br /> -<a href="#3.9">3.9</a>) pgsql_tmp Ŀ¼Àï¶¼ÓÐЩʲô£¿<br /> -<a href="#3.10">3.10</a>) ΪʲôҪÔÚÉý¼¶ PostgreSQL ·¢²¼°æ±¾Ê±×ö -dump ºÍ restore £¿ -<center> -<h2>²Ù×÷ÎÊÌâ</h2> -</center> -<a href="#4.1">4.1</a>) -¶þ½øÖÆÓαêºÍÆÕͨÓαêÖ®¼äµÄÇø±ðÊÇʲô£¿<br /> -<a href="#4.2">4.2</a>) ÈçºÎֻѡÔñÒ»¸ö²éѯ½á¹ûµÄÍ·¼¸ÐУ¿<br /> -<a href="#4.3">4.3</a>) -ÎÒÈçºÎ»ñȡһ¸öÊý¾Ý¿âÖбíµÄÁÐ±í£¬»òÕßÊÇÆäËûÎÒÄÜÔÚ <i>psql</i> -Àï¿´µ½µÄ¶«Î÷£¿<br /> -<a href="#4.4">4.4</a>) ÔõÑù´Ó±íÀïÃæÉ¾³ýÒ»ÁУ¿<br /> -<a href="#4.5">4.5</a>) -Ò»ÐУ¬Ò»¸ö±í£¬Ò»¸ö¿âµÄ×î´ó³ß´çÊǶàÉÙ£¿<br /> -<a href="#4.6">4.6</a>) -´æ´¢Ò»¸öµäÐ͵ÄÎı¾ÎļþÀïµÄÊý¾ÝÐèÒª¶àÉÙ´ÅÅ̿ռ䣿<br /> -<a href="#4.7">4.7</a>) -ÈçºÎ²é¿´±í¡¢Ë÷Òý¡¢Êý¾Ý¿âÒÔ¼°Óû§µÄ¶¨Ò壿<br /> -<a href="#4.8">4.8</a>) -ÎҵIJéѯºÜÂý»òÕßûÓÐÀûÓÃË÷Òý¡£ÎªÊ²Ã´£¿<br /> -<a href="#4.9">4.9</a>) -ÎÒÈçºÎ²ÅÄÜ¿´µ½²éѯÓÅ»¯Æ÷ÊÇÔõÑù´¦ÀíÎҵIJéѯµÄ£¿<br /> -<a href="#4.10">4.10</a>) R-tree Ë÷ÒýÊÇʲô£¿<br /> -<a href="#4.11">4.11</a>) ʲôÊÇ»ùÒò²éѯÓÅ»¯£¨Genetic Query -Optimization£©£¿<br /> -<a href="#4.12">4.12</a>) -ÎÒÔõÑù×öÕýÔò±í´ïʽËÑË÷ºÍ´óСдÎ޹صÄÕýÔò±í´ïʽ²éÕÒ£¿ÔõÑùÀûÓÃË÷Òý½øÐдóСдÎ޹زéÕÒ£¿<br /> - -<a href="#4.13">4.13</a>) ÔÚÒ»¸ö²éѯÀÎÒÔõÑù¼ì²âÒ»¸ö×Ö¶ÎÊÇ·ñΪ -NULL£¿<br /> -<a href="#4.14">4.14</a>) ¸÷ÖÖ×Ö·ûÀàÐÍÖ®¼äÓÐʲô²»Í¬£¿<br /> -<a href="#4.15.1">4.15.1</a>) -ÎÒÔõÑù´´½¨Ò»¸öÐòÁкÅ/×Ô¶¯µÝÔöµÄ×ֶΣ¿<br /> -<a href="#4.15.2">4.15.2</a>) -ÎÒÈçºÎ»ñµÃÒ»¸ö²åÈëµÄÐòÁкŵÄÖµ£¿<br /> -<a href="#4.15.3">4.15.3</a>) ʹÓà currval() ºÍ nextval() -»áµ¼ÖÂºÍÆäËûÓû§µÄÎÉÂÒÇé¿ö£¨race condition£©Âð£¿<br /> -<a href="#4.15.4">4.15.4</a>) -Ϊʲô²»ÔÚÊÂÎñÒì³£ÖÐÖ¹ºóÖØÓÃÐòÁкÅÄØ£¿ÎªÊ²Ã´ÔÚÐòÁкÅ×ֶεÄȡֵÖдæÔÚ¼ä¶ÏÄØ£¿<br /> - -<a href="#4.16">4.16</a>) ʲôÊÇ OID£¿Ê²Ã´ÊÇ TID £¿<br /> -<a href="#4.17">4.17</a>) PostgreSQL -ʹÓõÄһЩÊõÓïµÄº¬ÒåÊÇʲô£¿<br /> -<a href="#4.18">4.18</a>) ΪʲôÎÒÊÕµ½´íÎó¡°<i>ERROR: Memory -exhausted in AllocSetAlloc()</i>¡±£¿<br /> -<a href="#4.19">4.19</a>) ÎÒÈçºÎ²ÅÄÜÖªµÀËùÔËÐÐµÄ PostgreSQL -µÄ°æ±¾£¿<br /> -<a href="#4.20">4.20</a>) ΪʲôÎҵĴó¶ÔÏó²Ù×÷µ¼Ö´íÎó¡°<i>invalid -large obj descriptor¡±£¨·Ç·¨µÄ´ó¶ÔÏóÃèÊö·û£©</i>£¿<br /> -<a href="#4.21">4.21</a>) -ÎÒÈçºÎ´´½¨Ò»¸öȱʡֵÊǵ±Ç°Ê±¼äµÄ×ֶΣ¿<br /> -<a href="#4.22">4.22</a>) ΪʲôʹÓà <tt>IN</tt> -µÄ×Ó²éѯÕâôÂý£¿<br /> -<a href="#4.23">4.23</a>) ÈçºÎ½øÐÐ outer join £¨ÍâÁ¬½Ó£©£¿<br /> -<a href="#4.24">4.24</a>) ÈçºÎʹÓÃÉæ¼°¶à¸öÊý¾Ý¿âµÄ²éѯ£¿<br /> -<a href="#4.25">4.25</a>) ÈçºÎÈú¯Êý·µ»Ø¶àÐлò¶àÁУ¿<br /> -<a href="#4.26">4.26</a>) ΪʲôÔÚ PL/PgSQL -º¯ÊýÖв»Äܿɿ¿µØ´´½¨»òɾ³ýÁÙʱ±í£¿<br /> -<a href="#4.27">4.27</a>) ÓÐÄÄЩÊý¾Ý¸´ÖÆÑ¡Ï<br /> -<a href="#4.28">4.28</a>) ÓÐÄÄЩÊý¾Ý¼ÓÃÜÑ¡Ï -<center> -<h2>À©Õ¹ PostgreSQL</h2> -</center> -<a href="#5.1">5.1</a>) ÎÒдÁËÒ»¸öÓû§¶¨Ò庯Êý¡£µ±ÎÒÔÚ <i>psql</i> -ÀïÔËÐÐʱ£¬ÎªÊ²Ã´»áµ¼Ö core dump£¿<br /> -<a href="#5.2">5.2</a>) ÎÒÈçºÎÄܸø PostgreSQL -¹±Ï×һЩͦ²»´íµÄÐÂÀàÐͺͺ¯Êý£¿<br /> -<a href="#5.3">5.3</a>) ÎÒÔõÑùдһ¸ö·µ»ØÒ»Ìõ¼Ç¼µÄ C º¯Êý£¿<br /> -<a href="#5.4">5.4</a>) -ÎÒÐÞ¸ÄÁËÒ»¸öÔ´Îļþ£¬ÎªÊ²Ã´ÖØÐ±àÒëºóûÓп´µ½¸Ä±ä£¿<br /> -<hr /> -<center> -<h2>³£¼ûÎÊÌâ</h2> -</center> -<h4><a name="1.1"></a>1.1) PostgreSQL ÊÇʲô£¿¸ÃÔõô·¢Òô£¿</h4> -PostgreSQL ¶Á×÷ <i>Post-Gres-Q-L</i> <i>¡£</i> -<p>PostgreSQL ÊÇÏÂÒ»´ú DBMS µÄÑо¿ÔÐÍ POSTGRES -Êý¾Ý¿â¹ÜÀíϵͳµÄÔöÇ¿°æ¡£PostgreSQL ÔÚ±£³Ö POSTGRES -µÄÇ¿´óµÄÊý¾ÝÄ£ÐͺͷḻµÄÊý¾ÝÀàÐ͵Ļù´¡ÉÏ£¬ÓÃÒ»¸öÀ©Õ¹Á赀 SQL -×Ó¼¯È¡´úÁËÔÏ鵀 PostQuel ²éѯÓïÑÔ¡£PostgreSQL -ÊÇ×ÔÓɵIJ¢ÇÒËùÓÐÔ´´úÂë¶¼¿ÉÒÔ»ñµÃ¡£</p> -<p>PostgreSQL µÄ¿ª·¢ÓÉ²Î¼Ó PostgreSQL -¿ª·¢ÓʼþÁбíµÄÒ»¸ö¿ª·¢ÈËԱС×é½øÐС£Ä¿Ç°µÄе÷ÈËÊÇ Marc G. Fournier -£¨<a href= -"mailto:scrappy@postgreSQL.org">scrappy@postgreSQL.org</a> -£©¡££¨¹ØÓÚÈçºÎ¼ÓÈë²Î¼û1.6½Ú£©¡£Õâ¸ö¶ÓÎéÏÖÔÚ¸ºÔð PostgreSQL -µÄËùÓпª·¢¡£</p> -<p>PostgreSQL 1.01 µÄ×÷ÕßÊÇ Andrew Yu ºÍ Jolly -Chen¡£»¹ÓÐÐí¶àÆäËûÈËÎªÒÆÖ²£¬²âÊÔ£¬µ÷ÊÔºÍÔöÇ¿´úÂë×öÁË´óÁ¿¹±Ïס£PostgreSQL -µÄ×î³õÆðÔ´ Postgres£¬ÊÇÔÚ¼ÓÖÝ´óѧ²®¿ËÀû·ÖУµÄ Michael Stonebraker -½ÌÊÚµÄÖ¸µ¼Ï£¬ÓÉÐí¶àÑо¿Éú£¬±¾¿ÆÉúºÍ±à³ÌÖ°Ô±Íê³ÉµÄ¡£</p> -<p>Õâ¸öÈí¼þ×î³õÔÚ²®¿ËÀûµÄÃû×ÖÊÇ Postgres¡£ÔÚ 1995 Ä꣬µ±Ôö¼ÓÁË SQL -¹¦Äܺó£¬ËüµÄÃû×Ö¸Ä³É Postgres95¡£ÔÚ 1996ÄêÄ©£¬²Å¸ÄÃûΪ -PostgreSQL¡£</p> -<h4><a name="1.2"></a>1.2) PostgreSQL µÄ°æÈ¨ÊÇʲô?</h4> -PostgreSQL ÊÜÏÂÃæµÄ°æÈ¨Ô¼Êø¡£ -<p>PostgreSQL Êý¾Ý¿â¹ÜÀíϵͳ</p> -<p>£¨PostgreSQL Data Base Management System£©</p> -<p>²¿·Ö°æÈ¨£¨c£©1996-2002£¬PostgreSQL È«Çò¿ª·¢Ð¡×é<br /> -²¿·Ö°æÈ¨£¨c£©1994-6 ¼ÓÖÝ´óѧ¶ÊÂ</p> -<p>£¨Portions copyright (c) 1996-2002, PostgreSQL Global -Development Group<br /> - Portions Copyright (c) 1994-6 Regents of the University of -California£©</p> -<p> -ÔÊÐíΪÈκÎÄ¿µÄʹÓ㬿½±´£¬Ð޸ĺͷַ¢Õâ¸öÈí¼þºÍËüµÄÎĵµ¶ø²»ÊÕÈ¡ÈκηÑÓ㬲¢ÇÒÎÞÐëÇ©ÊðÒò´Ë¶ø²úÉúµÄÖ¤Ã÷£¬Ç°ÌáÊÇÉÏÃæµÄ°æÈ¨ÉùÃ÷ºÍ±¾¶ÎÒÔ¼°ÏÂÃæÁ½¶ÎÎÄ×Ö³öÏÖÔÚËùÓп½±´ÖС£</p> -<p>£¨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.£©</p> -<p> -ÔÚÈκÎÇé¿öÏ£¬¼ÓÖÝ´óѧ¶¼²»³Ðµ£ÒòʹÓôËÈí¼þ¼°ÆäÎĵµ¶øµ¼ÖµĶÔÈκε±ÊÂÈ˵ÄÖ±½ÓµÄ£¬¼ä½ÓµÄ£¬ÌØÊâµÄ£¬¸½¼ÓµÄ»òÕßÏà°é¶øÉúµÄË𻵣¬°üÀ¨ÀûÒæËðʧµÄÔðÈΣ¬¼´Ê¹¼ÓÖÝ´óѧÒѾ½¨ÒéÁËÕâЩËðʧµÄ¿ÉÄÜÐÔʱҲÊÇÈç´Ë¡£</p> -<p>£¨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.£©</p> -<p> -¼ÓÖÝ´óѧÃ÷È··ÅÆúÈκα£Ö¤£¬°üÀ¨µ«²»¾ÖÏÞÓÚÄ³Ò»ÌØ¶¨ÓÃ;µÄÉÌÒµºÍÀûÒæµÄÒþº¬±£Ö¤¡£ÕâÀïÌṩµÄÕâ·ÝÈí¼þÊÇ»ùÓÚ¡°µ±×÷ÊÇ¡±µÄ»ù´¡µÄ£¬Òò¶ø¼ÓÖÝ´óѧûÓÐÔðÈÎÌṩά»¤£¬Ö§³Ö£¬¸üУ¬ÔöÇ¿»òÕßÐ޸ĵķþÎñ¡£</p> -<p>£¨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.£©<br /> -<br /> -ÉÏÃæ¾ÍÊÇ BSD -°æÈ¨ÉùÃ÷£¬Ò»¸ö¾µäµÄ¿ªÔ´°æÈ¨ÉùÃ÷¡£Ëü¶ÔÔ´´úÂëµÄʹÓÃδ×÷ÈκÎÏÞÖÆ¡£ÎÒÃÇϲ»¶Ëü²¢ÇÒ²»´òËã¸Ä±äËü¡£</p> -<h4><a name="1.3"></a>1.3) PostgreSQL ÔËÐÐÔÚʲô Unix ƽ̨ÉÏ£¿</h4> -<p>Ò»°ã˵À´£¬Ò»¸öÏÖ´úµÄ UNIX ¼æÈÝµÄÆ½Ì¨¶¼ÄÜÔËÐÐ PostgreSQL -¡£ÔÚ°²×°Ö¸ÄÏÀïÁгöÁË·¢²¼Ê±¾¹ýÃ÷È·²âÊÔµÄÆ½Ì¨¡£</p> -<h4><a name="1.4"></a>1.4) ¿ÉÓÃµÄ·Ç Unix ƽ̨ÓÐÄÄЩ£¿</h4> -¿Í»§¶Ë -<p>°Ñ libpq C ¿â£¬psql£¬ÆäËû½Ó¿ÚºÍ¿Í»§¶ËÓ¦ÓóÌÐò±àÒë³É¿ÉÒÔÔÚ MS -Windows ƽ̨ÉÏÔËÐÐÊÇ¿ÉÄܵġ£ÕâÖÖÇé¿öÏ£¬¿Í»§¶ËÔÚ MS Windows -ÉÏÔËÐУ¬²¢ÇÒͨ¹ý TCP/IP ÓëÒ»¸öÔËÐÐÔÚÎÒÃÇÖ§³ÖµÄ Unix -ƽ̨ÉϵķþÎñÆ÷½øÐÐͨѶ¡£·¢²¼°æ±¾Öаüº¬Ò»¸öÎļþ win32.mak ÓÃÓÚÉú³É -Win32 libpq ¿âºÍ psql ¡£PostgreSQL Ò²¿ÉÒÔºÍ ODBC ¿Í»§¶ËͨѶ¡£</p> -<p>·þÎñÆ÷</p> -<p>Êý¾Ý¿â·þÎñÆ÷ÏÖÔÚ¿ÉÒÔͨ¹ý Cygwin £¬Cygnus µÄ Unix/NT ÒÆÖ²¿âÔÚ -Windows NT ºÍ Win2k ÉÏÔËÐС£²ÎÔÄ·¢²¼°æ±¾ÀïµÄ See -<i>pgsql/doc/FAQ_MSWIN</i> Îļþ»ò <a href= -"http://www.PostgreSQL.org/docs/faq-mswin.html">http://www.PostgreSQL.org/docs/faq-mswin.html</a> -¡£</p> -<p>ÒÆÖ²µ½ MS Win NT/2000/XP µÄ±¾»ú°æµÄ¹¤×÷ÕýÔÚ½øÐС£</p> -<h4><a name="1.5"></a>1.5) ÎÒ´ÓÄÄÀïÄܵõ½ PostgreSQL£¿</h4> -<p>PostgreSQL µÄÖ÷ÄäÃûFTPÕ¾µãÊÇ <a href= -"ftp://ftp.PostgreSQL.org/pub">ftp://ftp.PostgreSQL.org/pub</a>£¬¾µÏñÕ¾µã¿ÉÒԲο¼ÎÒÃÇÍøÕ¾µÄÖ÷Ò³¡£</p> -<h4><a name="1.6"></a>1.6) ÎÒ´ÓÄÄÀïÄܵõ½¶Ô PostgreSQL -µÄÖ§³Ö£¿</h4> -<p>Ö÷ÒªµÄÓʼþÁбíÊÇ£º<a href= -"mailto:pgsql-general@postgreSQL.org">pgsql-general@postgreSQL.org</a>¡£¿ÉÒÔÔÚÄÇÀïÌÖÂÛÓÐ¹Ø -PostgreSQL µÄÎÊÌâ¡£Òª¼ÓÈëÁÐ±í£¬·¢Ò»·âÓʼþÄÚÈÝ£¨²»ÊÇÖ÷ÌâÐУ©Îª</p> -<pre> - subscribe - end -</pre> -µÄÓʼþµ½ <a href= -"mailto:pgsql-general-request@postgreSQL.org">pgsql-general-request@postgreSQL.org</a> -¡£ -<p>»¹¿ÉÒÔ»ñȡժҪÁÐ±í¡£Òª¼ÓÈëÕâ¸öÁÐ±í£¬·¢Óʼþµ½£º<a href= -"mailto:pgsql-general-digest-request@postgreSQL.org">pgsql-general-digest-request@postgreSQL.org</a>£¬ÆäÄÚÈÝΪ£º</p> -<pre> - subscribe - end -</pre> -ÿµ±Ö÷Áбí´ïµ½´óÔ¼ 30k µÄÏûÏ¢ÄÚÈÝʱ£¬ÕªÒª¾Í·¢Ë͸øÕâ¸öÁбíµÄ³ÉÔ±¡£ -<p>»¹¿ÉÒԲμӳô³æÓʼþÁÐ±í¡£Òª¼ÓÈëÕâ¸öÁÐ±í£¬·¢ËÍÒ»¸öÓʼþµ½ <a href= -"mailto:bugs-request@postgreSQL.org">bugs-request@postgreSQL.org</a>£¬ÄÚÈÝΪ£º</p> -<pre> - subscribe - end -</pre> -»¹¿ÉÒԲμӿª·¢ÈËÔ±ÓʼþÁÐ±í¡£Òª¼ÓÈëÕâ¸öÁÐ±í£¬·¢ËÍÒ»¸öÓʼþµ½ <a href= -"mailto:hackers-request@postgreSQL.org">hackers-request@postgreSQL.org</a>£¬ÄÚÈÝΪ£º -<pre> - subscribe - end -</pre> -ÆäËûµÄ¹ØÓÚ PostgreSQL ÓʼþÁбíºÍÆäËûÐÅÏ¢¿ÉÒÔÔÚ PostgreSQL µÄ WWW -Ö÷Ò³ÕÒµ½£º -<blockquote><a href= -"http://postgresql.org/">http://postgresql.org/</a></blockquote> -ÔÚ EFNet ÀﻹÓÐÒ»¸ö IRC ƵµÀ£¬ÆµµÀ #PostgreSQL¡£ÎÒÓà unix -ÃüÁî<tt>irc -c '#PostgreSQL' "$USER" irc.phoenix.net</tt> -<p>ÉÌÒµÖ§³Ö¹«Ë¾µÄÁбíÔÚ <a href= -"http://www.PostgreSQL.org/users-lounge/commercial-support.html">http://www.PostgreSQL.org/users-lounge/commercial-support.html</a> -¡£</p> -<h4><a name="1.7"></a>1.7) PostgreSQL ×îеİ汾ÊÇʲô£¿</h4> -PostgreSQL ×îеİ汾Êǰ汾 7.2.3¡££¨Òë×¢£ºÏÖÔÚÓ¦¸ÃÊÇ 7.3.1 ÁË¡££© -<p>ÎÒÃǼƻ®Ã¿ËĸöÔ·¢²¼Ò»¸öÖ÷Òª°æ±¾¡£</p> -<h4><a name="1.8"></a>1.8) ÓÐÄÄЩ¿ÉÓÃµÄ PostgreSQL µÄÎĵµ£¿</h4> -ÔÚ·¢²¼°üÀïÓÐһЩÊֲᣬÊÖ²áÒ³ºÍһЩСµÄ²âÊÔÀý×Ó¡£²Î¼û /doc -Ŀ¼¡££¨Òë×¢£ºÓ¦Îª $PGHOME/doc£©¡£Ä㻹¿ÉÒÔÔÚÏßä¯ÀÀ PostgreSQL -µÄÊֲᣬÔÚ <a href= -"http://www.PostgreSQL.org/users-lounge/docs/">http://www.PostgreSQL.org/users-lounge/docs/</a> -¡£ -<p>ÓÐÁ½±¾¹ØÓÚ PostgreSQL µÄÊéÔÚÏßÌṩ£¬ÔÚ <a href= -"http://www.PostgreSQL.org/docs/awbook.html">http://www.PostgreSQL.org/docs/awbook.html</a> -ºÍ <a href= -"http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook/</a> -¡£ÔÚ <a href= -"http://www.ca.PostgreSQL.org/books/">http://www.ca.PostgreSQL.org/books/</a> -ÉÏÓйØÓÚ PostgreSQL µÄ¿É¹ºÊé¼®µÄÁÐ±í¡£ÔÚ <a href= -"http://techdocs.PostgreSQL.org/">http://techdocs.PostgreSQL.org/</a> -ÉÏÊÕ¼¯ÁËÓÐ¹Ø PostgreSQL µÄ¼¼ÊõÎÄÕ¡£</p> -<p><i>psql</i> ÓÐһЩ²»´íµÄ \d -ÃüÁÏÔʾ¹ØÓÚÀàÐÍ£¬²Ù×÷·û£¬º¯Êý£¬¾Û¼¯µÈµÄÐÅÏ¢¡£</p> -<p>ÎÒÃÇµÄ web Õ¾µã°üº¬¸ü¶àµÄÎĵµ£®</p> -<h4><a name="1.9"></a>1.9) ÎÒÈçºÎÁ˽âÒÑÖªµÄ BUG ºÍȱʧµÄÌØÐÔ£¿</h4> -PostgreSQL Ö§³ÖÒ»¸öÀ©Õ¹Á赀 SQL-92 µÄ×Ó¼¯¡£²ÎÔÄÎÒÃÇµÄ <a href= -"http://www.postgresql.org/docs/todo.html">TODO</a> <a href= -"http://www.postgresql.org/docs/todo.html"></a>ÁÐ±í£¬»ñȡһ¸öÒÑÖª³ô³æ£¬È±Ê§ÌØÐÔºÍδÀ´¼Æ»®¡£ -<h4><a name="1.10"></a>1.10) ÎÒÓ¦¸ÃÔõÑùѧϰ SQL£¿</h4> -ÔÚ <a href= -"http://www.postgresql.org/docs/awbook.html">http://www.postgresql.org/docs/awbook.html</a> -µÄ¹ØÓÚ PostgreSQL µÄÊé½ÌÊÚ SQL¡££¨Òë×¢£ºÎÒÏÂÔØµ½±¾µØÁË¡££©ÔÚ -<a href= -"http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook</a> -ÓÐÁíÍâÒ»±¾¹ØÓÚ PostgreSQL µÄÊé¡£ÔÚ<a href= -"http://www.intermedia.net/support/sql/sqltut.shtm">http://www.intermedia.net/support/sql/sqltut.shtm</a>£¬<a href="http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM">http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM -</a> ºÍ <a href="http://sqlcourse.com/">http://sqlcourse.com</a> -ÓÐÒ»¸ö²»´íµÄÈëÃŽ̡̳£ -<p>ÁíÒ»¸öÊÇ "Teach Yourself SQL in 21 Days, Second -Edition"£¨21Ììѧ»áSQL£¬µÚ¶þ°æ£©£¬ÔÚ <a href= -"http://members.tripod.com/er4ebus/sql/index.htm">http://members.tripod.com/er4ebus/sql/index.htm</a></p> -<p>ÎÒÃǵÄÐí¶àÓû§Ï²»¶ <i>The Practical SQL Handbook, Bowman, Judith -S., et al., Addison-Wesley ¡£</i> ÆäËûµÄÓÐ <i>The Complete -Reference SQL, Groff et al., McGraw-Hill ¡£</i></p> -<h4><a name="1.11"></a>1.11) PostgreSQL ÊÇ Y2K ¼æÈݵÄÂð£¿</h4> -ÊÇ£¬ÎÒÃǺÜÈÝÒ׿ØÖÆ 2000 AD Ö®ºóºÍ 2000 BC ֮ǰµÄÈÕÆÚ¡£ -<h4><a name="1.12"></a>1.12) ÎÒÓ¦¸ÃÔõÑù¼ÓÈ뿪·¢¶ÓÎ飿</h4> -Ê×ÏÈ£¬ÏÂÔØ×îеÄÔ´´úÂë²¢ÔĶÁÎÒÃÇ web Õ¾µã»ò·¢²¼°üÖÐµÄ PostgreSQL -¿ª·¢ÕßÎĵµ¡£Æä´Î£¬¼ÓÈë pgsql-hackers ºÍ pgsql-patches -ÓʼþÁÐ±í¡£µÚÈý£¬Ïò pgsql-patches Ìá½»¸ßÖÊÁ¿µÄ²¹¶¡³ÌÐò¡£ -<p>ÏÖÔÚ´ó¸ÅÓÐÊ®¼¸¸öÈËÓÐ PostgreSQL CVS ¹éµµ <font size= -"-1">COMMIT</font> -µÄȨÏÞ¡£ËûÃǶ¼ÒѾÌá½»Á˷dz£¶à¸ßÖÊÁ¿µÄ²¹¶¡ÁË£¬ÒÔÖÁÓÚÏÖÓеÄÌá½»È˺ÜÄѸúÉϽÚ×࣬²¢ÇÒÎÒÃÇÏàÐÅËûÃÇÌá½»µÄ²¹¶¡¶¼ÊǸßÖÊÁ¿µÄ¡£</p> -<h4><a name="1.13"></a>1.13) ÎÒÓ¦¸ÃÔõÑùÌá½»Ò»¸öBUG±¨¸æ£¿</h4> -Çë·ÃÎÊ <a href= -"http://www.PostgreSQL.org/bugs/bugs.php">http://www.PostgreSQL.org/bugs/bugs.php</a> -µÄ PostgreSQL BugTool Ò³Ãæ, ÄÇÀï¸ø³öÁËÈçºÎÌá½»Ò»¸öBUG±¨¸æµÄÖ¸ÄÏ¡£ -<p>ͬÑùÒ²Òª¿´¿´ÎÒÃÇµÄ ftp Õ¾µã <a href= -"ftp://ftp.postgresql.org/pub">ftp://ftp.postgreSQL.org/pub</a>£¬¿´ÓÐûÓиüÐ嵀 -PostgreSQL °æ±¾»ò²¹¶¡¡£</p> -<h4><a name="1.14"></a>1.14) PostgreSQL ºÍÆäËû DBMS -±ÈÆðÀ´ÈçºÎ£¿</h4> -ÆÀ¼ÛÈí¼þÓкü¸ÖÖ·½·¨£ºÌØÐÔ£¬ÐÔÄÜ£¬¿É¿¿ÐÔ£¬Ö§³ÖºÍ¼Û¸ñ¡£ -<dl> -<dt><b>ÌØÐÔ</b></dt> -<dd>PostgreSQL ÓµÓдóÐÍÉÌÓà DBMS -Àï´ó¶àÊýÌØÐÔ£¬ÀýÈ磺ÊÂÎñ£¬×Ó²éѯ£¬´¥·¢Æ÷£¬ÊÓͼ£¬Íâ¼ü²Î¿¼ÍêÕûÐԺ͸´ÔÓµÄËøµÈ¡£ÎÒÃÇ»¹ÓÐһЩËüÃÇûÓеÄÌØÐÔ£¬ÈçÓû§¶¨ÒåÀàÐÍ£¬¼Ì³Ð£¬¹æÔòºÍ¶à°æ±¾²¢ÐпØÖÆÒÔ¼õÉÙËøµÄÕùÓõȡ£<br /> - - </dd> -<dt><b>ÐÔÄÜ</b></dt> -<dd>PostgreSQL -ºÍÆäËûÉÌÓúͿªÔ´µÄÊý¾Ý¿â¾ßÓÐÀàËÆµÄÐÔÄÜ¡£¶ÔijЩ´¦ÀíËü±È½Ï¿ì£¬¶ÔÆäËûһЩ´¦ÀíËü±È½ÏÂý¡£Óë -MySQL »ò¸üÇá±ãµÄÊý¾Ý¿âϵͳ±È½Ï£¬ÎÒÃÇÔÚ insert/update -ʱÂý£¬ÒòΪÎÒÃÇÓÐÊÂÎñ´¦Àí¡£µ±È» MySQL ²»¾ßÓÐÎÒÃÇÔÚÉÏÃæµÄ<i>ÌØÐÔ</i> -¶ÎÀï¸ø³öµÄÈκÎÌØÐÔ¡£ÎÒÃǵÄÖ÷Òª·½ÏòÊǿɿ¿ÐÔºÍÌØÐÔ£¬¾¡¹ÜÎÒÃÇÔÚÿ´Î·¢²¼Ê±²»¶ÏµØ¸Ä½øÐÔÄÜ¡£ÓÐÒ»¸öºÜÓÐȤµÄÍøÒ³±È½ÏÁË -PostgreSQL ºÍ MySQL <a href= -"http://openacs.org/why-not-mysql.html">http://openacs.org/why-not-mysql.html</a>¡£<br /> -</dd> -<dt><b>¿É¿¿ÐÔ</b></dt> -<dd>ÎÒÃÇÖªµÀ DBMS -±ØÐëÊǿɿ¿µÄ£¬·ñÔòËü¾ÍÒ»µãÓö¼Ã»ÓС£ÎÒÃÇŬÁ¦×öµ½·¢²¼¾¹ýÈÏÕæ²âÊԵģ¬Îȶ¨µÄ³ô³æ×îÉٵĴúÂ롣ÿ¸ö°æ±¾ÖÁÉÙÓÐÒ»¸öÔ嵀 -beta -²âÊÔ£¬²¢ÇÒÎÒÃǵķ¢²¼ÀúÊ·ÏÔʾÎÒÃÇ¿ÉÒÔÌṩÎȶ¨µÄ£¬Àι̵ģ¬¿ÉÓÃÓÚÉú²úʹÓõİ汾¡£ÎÒÃÇÏàÐÅÔÚÕâ·½ÃæÎÒÃÇÓëÆäËûµÄÊý¾Ý¿âÈí¼þÊÇÏ൱µÄ¡£<br /> - - </dd> -<dt><b>Ö§³Ö</b></dt> -<dd> -ÎÒÃǵÄÓʼþÁбíÌṩһ¸ö·Ç³£´óµÄ¿ª·¢ÈËÔ±ºÍÓû§µÄ×éÒÔ°ïÖú½â¾öËùÅöµ½µÄÈκÎÎÊÌâ¡£ÎÒÃDz»Äܱ£Ö¤¿Ï¶¨Äܽâ¾öÎÊÌ⣬Ïà±È֮ϣ¬ÉÌÓà -DBMS -Ò²²¢²»ÊÇ×ÜÄܹ»Ìṩ½â¾ö·½·¨¡£Ö±½ÓÓ뿪·¢ÈËÔ±£¬Óû§Èº£¬ÊÖ²áºÍÔ´³ÌÐò½Ó´¥Áî -PostgreSQL µÄÖ§³Ö±ÈÆäËû DBMS -»¹ÒªºÃ¡£»¹ÓÐһЩÉÌÒµÐÔµÄÔ¤°ü×°µÄÖ§³Ö£¬¿ÉÒÔ¸øÌṩ¸øÄÇЩÐèÒªµÄÈË¡££¨²ÎÔÄÖ§³Ö -FAQ Ìõ¿î 1.6 С½Ú¡££©<br /> - </dd> -<dt><b>¼Û¸ñ</b></dt> -<dd> -ÎÒÃǶÔÈκÎÓÃ;¶¼Ãâ·Ñ£¬°üÀ¨ÉÌÓúͷÇÉÌÓÃÄ¿µÄ¡£Äã¿ÉÒÔ²»¼ÓÏÞÖÆµØÏòÄãµÄ²úÆ·Àï¼ÓÈëÎÒÃǵĴúÂ룬³ýÁËÄÇЩÎÒÃÇÔÚÉÏÃæµÄ°æÈ¨ÉùÃ÷ÀïÉùÃ÷µÄ -BSD ·ç¸ñµÄ°æÈ¨Íâ¡£</dd> -</dl> -<h4><a name="1.15"></a>1.15) ÎÒÓ¦¸ÃÔõÑùÔÞÖú PostgreSQL £¿</h4> -<p>×Ô´Ó1996Ä꿪ʼ£¬PostgreSQL -ÒѾÓÐÁËÒ»¸öÓÅÐãµÄ×éÖ¯¡£ÕâЩӦ¸Ã¹é¹¦ÓÚ Marc -Fournier£¬ÊÇËû´´½¨Á˲¢ÔÚÕâЩÄêÒ»Ö±¹ÜÀíÕâ¸ö×éÖ¯¡£</p> -<p> -¶ÔÓÚÒ»¸ö¿ªÔ´ÏîÄ¿À´Ëµ£¬ÖÊÁ¿»ù´¡ÉèÊ©ÊǷdz£ÖØÒªµÄ¡£ËüÄÜ·ÀÖ¹³öÏÖÑÏÖØÑÓ³ÙÏîĿǰ½øµÄ»ìÂÒ¡£</p> -<p> -ÏÔÈ»£¬Õâ¸ö×éÖ¯µÄÔËת³É±¾²»·Æ¡£Î¬³ÖÆäǰ½øÓи÷ÖÖÔ¶ȵġ¢Ò»´ÎÐԵĿªÖ§¡£Èç¹ûÄã»òÕßÄãµÄ¹«Ë¾ÄܽøÐоèÔùÒÔÖ§³ÖÕâÏîÊÂÒµ£¬Çë·ÃÎÊ -<a href= -"http://store.pgsql.com/shopping/">http://store.pgsql.com/shopping/</a> -½øÐоèÔù¡£</p> -<p>ËäÈ»¸ÃÍøÒ³Ìá¼°ÁË PostgreSQL ¹«Ë¾£¬ÕâЩ¾èÔù½«½öÓÃÓÚÖ§³Ö -PostgreSQL -ÏîÄ¿£¬²¢²»»áÓÃÓÚ×ÊÖúû¸öÌØ¶¨µÄ¹«Ë¾¡£Èç¹ûÄãÔ¸Ò⣬Ҳ¿ÉÒÔÓʼÄ֧Ʊµ½ÁªÏµµØÖ·¡£</p> -<hr /> -<center> -<h2>Óû§¿Í»§¶ËÎÊÌâ</h2> -</center> -<h4><a name="2.1"></a>2.1) ÓÐ PostgreSQL µÄ ODBC Çý¶¯Ã´£¿</h4> -ÓÐÁ½¸ö ODBC Çý¶¯¿ÉÒÔ»ñµÃ£¬PsqlODBC ºÍ OpenLink ODBC. -<p>¿ÉÒÔÔÚ<a href= -"http://gborg.postgresql.org/project/psqlodbc/projdisplay.php">http://gborg.postgresql.org/project/psqlodbc/projdisplay.php</a> -ÏÂÔØ PsqlODBC ¡£</p> -<p>OpenLink ODBC ¿ÉÒÔ´Ó <a href= -"http://www.openlinksw.com/">http://www.openlinksw.com/</a> -»ñµÃ¡£ËüÓëËûÃǵıê×¼ ODBC -¿Í»§¶ËÈí¼þ¼æÈÝ£¬Òò¶øÄã¿ÉÒÔÔÚÈκÎËûÃÇÖ§³ÖµÄ¿Í»§¶Ëƽ̨£¨Win, Mac, -Unix, VMS£©ÉÏʹÓà PostgreSQL ODBC¡£</p> -<p>ËûÃÇ¿ÉÄܽ«Õâ¸ö²úÆ·ÏúÊÛ¸øÄÇЩÐèÒªÉÌÒµÖ§³ÖµÄÓû§£¬µ«ÊÇ×ÜÊÇÓÐÒ»¸ö -freeware £¨×ÔÓÉÈí¼þ£©µÄ°æ±¾¿ÉÒԵõ½¡£ÇëѯÎÊ <a href= -"mailto:postgres95@openlink.co.uk">postgres95@openlink.co.uk</a>¡£</p> -<h4><a name="2.2"></a>2.2) ÓÐʲô¹¤¾ß¿ÉÒÔ°Ñ PostgreSQL ÓÃÓÚ Web -Ò³Ãæ£¿</h4> -Ò»¸ö½éÉÜÒÔÊý¾Ý¿âΪºǫ́µÄͦ²»´íµÄ Õ¾µãÊÇ£º<a href= -"http://www.webreview.com">http://www.webreview.com</a> ¡£ -<p>¶ÔÓÚ Web ¼¯³É£¬PHP ÊÇÒ»¸ö¼«ºÃµÄ½Ó¿Ú¡£ËüÔÚ£º<a href= -"http://www.php.net/">http://www.php.net/</a> ¡£</p> -<p>¶ÔÓÚ¸´ÔÓµÄÈÎÎñ£¬ºÜ¶àÈ˲ÉÓà Perl ½Ó¿ÚºÍ CGI.pm »ò mod_perl ¡£</p> -<h4><a name="2.3"></a>2.3) PostgreSQL ÓµÓÐͼÐÎÓû§½çÃæÂð£¿</h4> -Êǵġ£Óм¸¸öÊÊÓÃÓÚ PostgreSQL µÄͼÐνӿڡ£°üÀ¨PgAccess£¨<a href= -"http://www.pgaccess.com">http://www.pgaccess.com</a>)£¬PgAdmin II -£¨<a href= -"http://www.pgadmin.org">http://www.pgadmin.org</a>£¬½öÊÊÓÃÓÚWin32£©£¬ -RHDB Admin (<a href= -"http://sources.redhat.com/rhdb/">http://sources.redhat.com/rhdb/</a>£© -ÒÔ¼° Rekall £¨<a href= -"http://www.thekompany.com/products/rekall/">http://www.thekompany.com/products/rekall/</a>£¬ -רÓеÄ/proprietary)¡£»¹ÓÐPHPPgAdmin £¨<a href= -"http://phppgadmin.sourceforge.net/">http://phppgadmin.sourceforge.net/£©</a> -£¬Ò»¸ö»ùÓÚ web µÄ PostgreSQL ·ÃÎʽӿڡ£ -<p>ÎÒÃÇÓÐÒ»¸ö²»´íµÄͼÐÎÓû§½çÃæ£¬³ÆÎª PgAccess -£¬ËüÒ²¿ÉÒÔÓÃ×÷±¨±íÉú³ÉÆ÷¡£ÍøÒ³ÊÇ <a href= -"http://www.pgaccess.org/">http://www.pgaccess.org/</a>¡£</p> -<h4><a name="2.4"></a>2.4) ÎÒÃÇ¿ÉÒÔÓÃʲôÓïÑÔºÍ PostgreSQL -´ò½»µÀ£¿</h4> -<p>´ó¶àÊýÁ÷Ðеıà³ÌÓïÑÔ¶¼ÓзÃÎÊ PostgreSQL -µÄ½Ó¿Ú¡£Çë¼ì²é±à³ÌÓïÑÔµÄÀ©Õ¹Ä£¿éÁÐ±í¡£</p> -<p>PostgreSQL ·¢²¼°üÖаüº¬ÁËÒÔϽӿڣº</p> -<ul> -<li>C (libpq)</li> -<li>Embedded C (ecpg)</li> -<li>Java (jdbc)</li> -<li>Python (PyGreSQL)</li> -<li>TCL (libpgtcl)</li> -</ul> -<p>ÆäËûµÄ½Ó¿ÚÔÚ <a href= -"http://gborg.postgresql.org">http://gborg.postgresql.org</a> É쵀 -<i>Drivers/Interfaces</i> С½Ú¡£</p> -<hr /> -<center> -<h2>ϵͳ¹ÜÀíÎÊÌâ</h2> -</center> -<h4><a name="3.1"></a>3.1) ÎÒÔõÑùÄÜ°Ñ PostgreSQL ×°ÔÚ -/usr/local/pgsql ÒÔÍâµÄµØ·½£¿</h4> -<p>ÔÚÔËÐÐ configure ʱ¼ÓÉÏ --prefix Ñ¡Ïî¡£</p> -<h4><a name="3.2"></a>3.2) µ±ÎÒÔËÐÐ postmaster ʱ£¬³öÏÖ <i>Bad -System Call</i>£¨ÏµÍ³µ÷ÓÃ´í£©»ò Core Dumped ´íÎó¡£ÎªÊ²Ã´£¿</h4> -<p>Õâ¿ÉÄÜÊÇºÜ¶à·½ÃæµÄÎÊÌ⣬ÇëÏȼì²é²Ù×÷ϵͳºËÐÄÊÇ·ñÖ§³Ö System V -À©Õ¹¡£PostgreSQL ÐèÒªÄÚºËÖ§³Ö¹²ÏíÄÚ´æºÍÐźŵơ£</p> -<h4><a name="3.3"></a>3.3) µ±ÎÒÊÔͼÔËÐÐ postmaster ʱ£¬³öÏÖ -<i>IpcMemoryCreate</i> ´íÎó¡£ÎªÊ²Ã´£¿</h4> -ÄãҪôÊÇûÓÐÔÚÄÚºËÀïÕýÈ·ÅäÖù²ÏíÄڴ棬ҪôÊÇÄãÐèÒªÀ©´óÄãµÄÄں˵ĿÉÓù²ÏíÄÚ´æ¡£ÐèÒªµÄ¹²ÏíÄÚ´æ¾ßÌåµÄÊýÁ¿È¡¾öÓÚÄãµÄÌåϵ½á¹¹ºÍÄãÅäÖÃÄãµÄ -postmaster -ÔËÐÐʱʹÓõĻº³åÇøºÍºó¶Ë½ø³ÌÊýÄ¿¡£¶Ô´ó¶àÊýϵͳ£¬Ê¹ÓÃȱʡ»º³åÇøºÍ½ø³ÌÊýĿʱ£¬Äã×îÉÙÐèÒª~1MB¡£Óйع²ÏíÄÚ´æºÍÐźŵƵÄÏêϸÐÅÏ¢Çë²Î¿¼ -<a href= -"http://www.postgresql.org/idocs/index.php?kernel-resources.html">PostgreSQL -Administrator's Guide</a> ¡£ -<h4><a name="3.4"></a>3.4) µ±ÎÒÊÔͼÔËÐÐ postmaster ʱ£¬³öÏÖ -<i>IpcSemaphoreCreate</i> ´íÎó¡£ÎªÊ²Ã´£¿</h4> -<p>Èç¹û´íÎóÐÅÏ¢ÊÇ <i>IpcSemaphoreCreate: semget failed (No space -left on -device)</i>£¬ÄÇôÔÒòÊÇÄãµÄÄÚºËûÓÐÅäÖÃ×ã¹»µÄÐźŵÆ×ÊÔ´¡£Postgres -µÄÿ¸öDZÔڵĺǫ́½ø³Ì¶¼ÐèÒªÒ»¸öÐźŵơ£Ò»¸öÁÙʱµÄ½â¾ö·½·¨ÊÇÒԱȽÏÉٵĺǫ́½ø³ÌÊý£¨²ÎÊý£©Æô¶¯ -postmaster¡£Ê¹Óÿª¹Ø <i>-N</i> ´øÒ»¸öÉÙÓÚȱʡֵ 32 µÄ²ÎÊýÔËÐÐ -postmaster¡£¸ü³¤¾ÃµÄ½â¾ö·½·¨ÊǼӴóÄãµÄÄÚºËµÄ <font size= -"-1">SEMMNS</font> ºÍ <font size="-1">SEMMNI</font> ²ÎÊý¡£</p> -<p>ÔÚÊý¾Ý¿â·ÃÎÊÁ¿ºÜ´óʱ£¬ÐźŵƲ»¿ÉÓÿÉÄܵ¼ÖÂϵͳ±ÀÀ£¡£</p> -<p> -Èç¹û´íÎóÐÅÏ¢ÊÇÆäËûµÄʲô¶«Î÷£¬Äã¿ÉÄܾ͸ù±¾Ã»ÓÐÔÚÄÚºËÀïÃæÅäÖÃÐźŵÆÖ§³Ö¡£Óйع²ÏíÄÚ´æºÍÐźŵƵÄÏêϸÐÅÏ¢Çë²Î¿¼ -<a href= -"http://www.postgresql.org/idocs/index.php?kernel-resources.html">PostgreSQL -Administrator's Guide</a> ¡£</p> -<h4><a name="3.5"></a>3.5) ÎÒÈçºÎ¿ØÖÆÀ´×ÔÆäËûÖ÷»úµÄÁ¬½Ó£¿</h4> -<p>ȱʡʱ£¬PostgreSQL Ö»ÔÊÐíͨ¹ý unix -ÓòÌ×½Ó×ÖÀ´×Ô±¾»úµÄÁ¬½Ó¡£³ý·ÇÄãʹÓà <i>-i</i> ¿ª¹ØÆô¶¯ -<i>postmaster</i>£¬<b>²¢ÇÒ</b>ͨ¹ý¶ÔÓ¦µÄ±à¼ -<i>$PGDATA/pg_hba.conf</i> Îļþ´ò¿ªÁËÖ÷»úΪ»ù´¡£¨ host-based -£©µÄÈÏÖ¤£¬·ñÔòÆäËû»úÆ÷ÊDz»ÄÜÓëÄãµÄ»úÆ÷Á¬½ÓµÄ¡£ÕâÑù½«ÔÊÐí TCP/IP -Á¬½Ó¡£</p> -<h4><a name="3.6"></a>3.6) -ÎÒÔõÑùµ÷ÕûÊý¾Ý¿âÒýÇæÒÔ»ñµÃ¸üºÃµÄÐÔÄÜ£¿</h4> -<p>µ±È»£¬Ë÷Òý¿ÉÒÔ¼ÓËÙ²éѯ¡£<font size="-1">EXPLAIN</font> -ÃüÁîÔÊÐíÄã¹Û²ì PostgreSQL -ÈçºÎ½âÊÍÄãµÄ²éѯ£¬ÒÔ¼°Ê¹ÓÃÁËÄÄЩË÷Òý¡£</p> -<p>Èç¹ûÄãÕý´¦ÀíÒ»¶Ñ <font size="-1">INSERT</font>£¬¿¼ÂÇʹÓà -<font size="-1">COPY</font> -ÃüÁîÒÔ´óÅúÁ¿µÄ·½Ê½½øÐС£ÕâÑù×ö±Èµ¥¶ÀµÄÒ»¸ö¸ö <font size= -"-1">INSERT</font> ¿ìµÃ¶à¡£Æä´Î£¬Ã»Óд¦ÓÚ <font size="-1">BEGIN -WORK/COMMIT</font> -ÊÂÎñ¿éÖ®¼äµÄÓï¾ä±»ÈÏΪÊôÓÚͬһ¸öÊÂÎñ¡£ÊÔ×ÅÔÚÒ»¸öÊÂÎñ¿éÀïÃæ´¦Àí¸ü¶àµÄÓï¾ä¡£ÕâÑù¿ÉÒÔ¼õÉÙÊÂÎñ´øÀ´µÄ¶îÍ⿪Ïú¡£Í¬Ñù£¬ÔÚ×ö´óÁ¿µÄÊý¾Ý¸Ä±äʱ¿¼ÂÇɾ³ýºÍÖØ½¨Ë÷Òý¡£</p> -<p>»¹Óм¸¸öµ÷½ÚµÄÑ¡Ïî¿ÉÒÔʹÓá£Äã¿ÉÒÔͨ¹ý´ø <i>-o -F</i> Ñ¡ÏîÆô¶¯ -postmaster À´½ûÖ¹ fsync()¡£ÕâÑù½«±ÜÃâÿ´ÎÊÂÎñºóµ÷Óà <i>fsync()</i> -°ÑÊý¾Ýˢе½´ÅÅÌÉÏ¡£</p> -<p>Ä㻹¿ÉÒÔʹÓà postmaster -B -Ñ¡ÏîÔö¼Óºó¶Ë½ø³ÌʹÓõĹ²ÏíÄڴ滺³åµÄÊýÄ¿¡£Èç¹ûÄã°ÑÕâ¸ö²ÎÊýÉèÖõÃÌ«´ó£¬postmaster -¿ÉÄÜÎÞ·¨Æô¶¯£¬ÒòΪÄãÒѾ³¬¹ýÁËÄãµÄÄÚºËÔÚ¹²ÏíÄÚ´æ¿Õ¼äÉϵÄÏÞÖÆ¡£Ã¿¸ö»º³åÇøÊÇ -8K ²¢ÇÒȱʡ 64 ¸ö»º³åÇø¡£</p> -<p>Ä㻹¿ÉÒÔʹÓúǫ́½ø³ÌµÄ -S -Ñ¡ÏîÀ´Ôö¼Óÿ¸öºǫ́½ø³ÌÓÃÓÚÁÙʱÅÅÐòÓõÄ×î´óÄÚ´æÊýÁ¿¡£-S -ÖµÊÇÒÔK×ֽڼƵģ¬È±Ê¡ÊÇ 512 £¨Ò²¾ÍÊÇ˵£¬512K£©¡£</p> -<p>Ä㻹¿ÉÒÔʹÓà <font size="-1">CLUSTER</font> -ÃüÁîÀ´°Ñ±íÀïµÄÊý¾Ý°´ÕÕij¸öË÷Òý½øÐоۼ¯´æ·Å¡£²ÎÔÄ CLUSTER -µÄÊÖ²áÒ³»ñÈ¡¸ü¶àϸ½Ú¡£</p> -<h4><a name="3.7"></a>3.7) PostgreSQL -Àï¿ÉÒÔ»ñµÃʲôÑùµÄµ÷ÊÔÌØÐÔ£¿</h4> -<p>PostgreSQL -Óм¸¸öÌØÐÔÓÃÓÚ±¨¸æ×´Ì¬ÐÅÏ¢£¬ÕâЩÐÅÏ¢¿ÉÄܶԵ÷ÊÔÓÃ;ºÜÓаïÖú¡£</p> -<p>Ê×ÏÈ£¬Í¨¹ý¸½´ø --enable-cassert Ñ¡ÏîÔËÐÐ configure£¬Óкܶà -<i>assert()</i> -¼à¿Øºǫ́½ø³ÌºÍÔÚ·¢ÉúÄ³Ð©Î´ÔøÔ¤ÁϵÄÏÖÏóʱֹͣ³ÌÐòÔËÐС£</p> -<p>postmaster ºÍ postgres ¶¼ÓÐһЩ¿ÉÓõÄÑ¡Ïî¡£Ê×ÏÈ£¬µ±ÄãÆô¶¯ -postmaster -ʱ£¬È·±£Äã°Ñ±ê×¼Êä³öºÍ±ê×¼´íÎóÊä³ö¶¨Ïòµ½ÁËÒ»¸öÈÕÖ¾ÎļþÀïÈ¥ÁË£¬Ïó£º</p> -<pre> - cd /usr/local/pgsql - ./bin/postmaster >server.log 2>&1 & -</pre> -ÕâÑù½«ÔÚ PostgreSQL ¶¥¼¶Ä¿Â¼ÏÂÊä³öÒ»¸ö server.log -Îļþ¡£Õâ¸öÎļþ°üº¬·þÎñÆ÷Åöµ½µÄÎÊÌâºÍ´íÎóµÄÓÐÓÃÐÅÏ¢¡£postmaster -ÓÐÒ»¸ö -d Ñ¡Ï¸ÃÑ¡ÏîÔÊÐíÎÒÃÇ»ñµÃ¸ü¶àµÄϸ½Ú»ã±¨¡£-d -Ñ¡Ïî½ÓÊÜÒ»¸öÊý×Ö±êÃ÷µ÷ÊÔ¼¶±ð¡£ÐèÒª¾¯¸æµÄÊǸߵĵ÷ÊÔ¼¶±ð¿ÉÄÜ»áÉú³É¾Þ´óµÄÈÕÖ¾Îļþ¡£ -<p>Èç¹û postmaster ûÓÐÔËÐУ¬Äã¿ÉÒÔÖ±½ÓÔÚÃüÁîÐÐÉÏÆô¶¯ postgres -ºǫ́½ø³Ì£¬È»ºóÖ±½Ó¼üÈë SQL Óï¾ä¡£ÎÒÃÇ<b>Ö»</b> -ÍÆ¼öÔÚµ÷ÊÔµÄʱºòÕâô¸É¡£Çë×¢ÒâÕâʱÓû»ÐÐÜÞ¶ø²»ÊǷֺűíʾÓï¾ä½áβ¡£Èç¹ûÄã´ø×ŵ÷ÊÔ·ûºÅ±àÒ룬Äã¿ÉÒÔʹÓÃÒ»¸öµ÷ÊÔÆ÷¹Û¿´·¢ÉúÁËʲôÊÂÇé¡£ÒòΪºǫ́½ø³ÌûÓÐÓÉ -postmaster -Æô¶¯µÄ£¬Ëü²»ÊǺÍʵ¼ÊµÄÔËÐл·¾³Ò»Ö£¬¶øÇÒËø¶¨/ºǫ́½»»¥ÎÊÌâ¿ÉÄܲ»ÄÜÖØÏÖ¡£</p> -<p>Èç¹û postmaster ÒѾÔËÐУ¬¿ÉÔÚÒ»¸ö´°¿ÚÖÐÆô¶¯ -<i>psql</i>£¬È»ºóÕÒ³ö <i>psql</i> ¶ÔÓ¦µÄ <i>postgres</i> ½ø³ÌµÄ -<font size="-1">PID</font>¡£Ê¹ÓÃÒ»¸öµ÷ÊÔÆ÷¸½×ÅÔÚÕâ¸ö -<i>postgres</i> <font size="-1">PID</font> -ÉÏ¡£Äã¿ÉÒÔÔÚµ÷ÊÔÆ÷ÀïÉèÖöϵ㲢ÇÒ´Ó <i>psql</i> -ÀïÖ´Ðвéѯ¡£Èç¹ûÄãÔÚµ÷ÊÔ <i>postgres</i> µÄÆô¶¯£¬Äã¿ÉÒÔÉèÖà -PGOPTIONS="-W n"£¬È»ºóÆô¶¯ <i>psql</i>¡£ÕâÑù½«µ¼ÖÂÆô¶¯ÑÓ³Ù <i>n</i> -Ã룬ÕâÑùÄã¾Í¿ÉÒÔ¸½¼ÓÒ»¸öµ÷ÊÔÆ÷²¢ÇÒ¸ú×ÙÆô¶¯Ë³ÐòµÄ¹ý³Ì¡£</p> -<p>postgres ³ÌÐòÓÐ -s£¬-A£¬ºÍ -t -Ñ¡Ïî¿ÉÄÜÔÚµ÷ÊÔºÍÐÔÄܲâÁ¿µÄʱºò·Ç³£ÓÐÓá£</p> -<p>Ä㻹¿ÉÒÔ´ø profiling -Ö§³Ö±àÒëºǫ́£¬ÒÔ±ã¹Û²ìÄÄЩº¯ÊýÕ¼ÓõÄÖ´ÐÐʱ¼ä½Ï¶à¡£profile -Îļþ½«·ÅÔÚ pgsql/data/base/dbname Ŀ¼Ï¡£¿Í»§¶Ë profile -Îļþ½«·ÅÔÚ¿Í»§¶Ëµ±Ç°Ä¿Â¼Ï¡£ÔÚ Linux ÏÂÖ§³Ö profiling -ÒªÔÚ±àÒëʱ¼ÓÉÏ<i>-DLINUX_PROFILE</i> ¡£</p> -<h4><a name="3.8"></a>3.8) ΪʲôÔÚÊÔͼÁ¬½ÓµÇ¼ʱÊÕµ½¡°Sorry, too -many clients¡±ÏûÏ¢£¿</h4> -<p>ÄãÐèÒªÔö´ó postmaster Æô¶¯Ê±Ö§³ÖµÄ²¢·¢ºǫ́½ø³ÌÊý¡£</p> -<p>ȱʡÏÞÖÆÊÇ 32 ½ø³Ì¡£Äã¿ÉÒÔͨ¹ý´ø×ÅÊʵ±µÄ <i>-N</i> Öµ¿ª¹ØÆô¶¯ -postmaster Ôö¼ÓÕâ¸öÊýÄ¿¡£»òÕßÐÞ¸Ä <i>postgresql.conf</i> Îļþ¡£</p> -<p>ҪעÒâÈç¹ûÄã°Ñ <i>-N</i> ÉèÖÃΪ´óÓÚ 32£¬Äã±ØÐëͬÑùÔö´ó -<i>-B</i>£¬³¬¹ýËüȱʡµÄ 64£»-B ±ØÐë×îÉÙÊÇ -N -µÄÁ½±¶£¬¶øÇÒΪÁ˸üºÃµÄÐÔÄÜ¿ÉÄÜÒª±ÈÄǸöÊý×ÖÒª´ó¡£¶ÔÓÚ´óÊýÄ¿µÄºó¶Ë½ø³Ì£¬Äã¿ÉÄÜ»¹»á·¢ÏÖÄ㻹ÐèÒªÔö¼ÓÐí¶à -Unix -ÄÚºËÅäÖòÎÊýÖµ¡£Òª¼ì²éµÄ¶«Î÷°üÀ¨¹²ÏíÄÚ´æ¿éµÄ×î´ó³ß´ç£¬<font size= -"-1">SHMMAX</font>£¬ÐźŵƵÄ×î´óÊýÄ¿£¬<font size="-1">SEMMNS</font> -ºÍ <font size="-1">SEMMNI</font>£¬×î´óµÄ½ø³ÌÊý£¬<font size= -"-1">NPROC</font>£¬µ¥Óû§×î´ó½ø³ÌÊý£¬<font size= -"-1">MAXUPRC</font>£¬ÒÔ¼°´ò¿ªÎļþµÄ×î´óÊýÄ¿£¬<font size= -"-1">NFILE</font> ºÍ <font size="-1">NINODE</font> ¡£Postgres -¶ÔÔÊÐíµÄºǫ́½ø³ÌÊýÓÐÏÞÖÆµÄÔÒòÊÇΪÁËÈ·±£ÄãµÄϵͳ²»»áÓùâ×ÊÔ´¡£</p> -<p>ÔÚ Postgres ÔçÓÚ 6.5 µÄ°æ±¾£¬×î´óºǫ́½ø³ÌÊýȱʡÊÇ -64£¬²¢ÇÒ¶ÔËüµÄÐÞ¸ÄÊ×ÏÈÐèÒªÐÞ¸Ä <i>include/storage/sinvaladt.h</i> -ÀïµÄ MaxBackendId ³£Á¿£¬È»ºóÖØÐ BUILD¡£</p> -<h4><a name="3.9"></a>3.9) pgsql_tmp Ŀ¼Àï¶¼ÓÐЩʲô£¿</h4> -<p>¸ÃĿ¼Ï±£´æÁ˲éѯִÐÐÆ÷Éú³ÉµÄÁÙʱÎļþ¡£ÀýÈ磬Èç¹ûÐèҪΪÂú×ã -<font size="-1">ORDER BY</font> Ìõ¼þ×öÅÅÐò£¬²¢ÇÒÅÅÐòÐèÒª±Èºǫ́µÄ -S -²ÎÊý¸ø³öµÄ¸ü¶àµÄ¿Õ¼ä£¬ÄÇô¾Í»á´´½¨Ò»¸öÁÙʱÎļþ±£´æ¶à³öÀ´µÄÊý¾Ý¡£</p> -<p> -ÁÙʱÎļþÓ¦¸Ã×Ô¶¯É¾³ý£¬²»¹ýÈç¹ûÔÚÅÅÐò¹ý³ÌÖкǫ́±ÀÀ£Á˾ͿÉÄÜÁôÏÂÀ´¡£Í£Ö¹²¢ÖØÆð -postmaster ½«»áɾ³ýÕâЩÎļþ¡£<br /></p> -<h4><a name="3.10"></a>3.10) ΪʲôҪÔÚÉý¼¶ PostgreSQL ·¢²¼°æ±¾Ê±×ö -dump ºÍ restore £¿</h4> -<p>PostgreSQL ¿ª·¢×é¶Ôÿ´ÎСµÄÉý¼¶½ö×öÁ˽ÏÉÙµÄÐÞ¸Ä,Òò´Ë´Ó 7.2 -Éý¼¶µ½ 7.2.1 ²»ÐèÒª dump ºÍ restore¡£µ«ÊÇÖ÷ÒªµÄÉý¼¶£¨ÀýÈç´Ó 7.2 µ½ -7.3£©Í¨³£»áÐÞ¸Äϵͳ±íºÍÊý¾Ý±íµÄÄÚ²¿¸ñʽ¡£ÕâЩ±ä»¯Ò»°ã±È½Ï¸´ÔÓ£¬Òò´ËÎÒÃDz»Î¬Êý¾ÝÎļþµÄÏòºó¼æÈÝ¡£dump -½«Êý¾Ý°´ÕÕͨÓõĸñʽÊä³ö£¬Ëæºó¿ÉÒÔ±»ÖØÐ¼ÓÔØ²¢Ê¹ÓÃеÄÄÚ²¿¸ñʽ¡£</p> -<p>´ÅÅÌÎļþ¸ñʽûÓб仯µÄÉý¼¶£¬¿ÉÒÔÓà <i>pg_upgrade</i> -½Å±¾£¬¶ø²»ÐèÒª×ö dump ºÍ restor¡£·¢²¼ËµÃ÷script »áÖ¸Ã÷ -<i>pg_upgrade</i> ¶Ô¸Ã´ÎÉý¼¶ÊÇ·ñ¿ÉÓá£</p> -<hr /> -<center> -<h2>²Ù×÷ÎÊÌâ</h2> -</center> -<h4><a name="4.1"></a>4.1) -¶þ½øÖÆÓαêºÍÆÕͨÓαêÖ®¼äµÄÇø±ðÊÇʲô£¿</h4> -²ÎÔÄ <font size="-1">DECLARE</font> ÊÖ²áÒ³»ñÈ¡ÐÅÏ¢¡£ -<h4><a name="4.2"></a>4.2)ÈçºÎÖ» <font size="-1">SELECT</font> -Ò»¸ö²éѯ½á¹ûµÄÍ·¼¸ÐУ¿</h4> -²ÎÔÄ <font size="-1">FETCH</font> ÊÖ²áÒ³£¬»òÕßʹÓà SELECT ... -LIMIT.... -<p>¼´Ê¹ÄãÖ»ÐèÒª¿ªÍ·µÄ¼¸ÐУ¬Ò²»áÉæ¼°µ½Õû¸ö²éѯ¡£ÊÔ×ÅʹÓôøÓÐ -<font size="-1">ORDER BY</font> µÄ²éѯ¡£Èç¹ûÓÐÒ»¸öË÷ÒýÓë -<font size="-1">ORDER BY</font> Æ¥Å䣬PostgreSQL -¿ÉÄܾÍÖ»´¦ÀíÒªÇóµÄÍ·¼¸Ìõ¼Ç¼£¬·ñÔò½«¶ÔÕû¸ö²éѯ½øÐд¦ÀíÖ±µ½Éú³ÉÐèÒªµÄÐС£</p> -<h4><a name="4.3"></a>4.3) ÎÒÈçºÎ»ñȡһ¸ö±íµÄÁÐ±í£¬»òÕßÊÇÆäËûÎÒÄÜÔÚ -<i>psql</i> Àï¿´µ½µÄ¶«Î÷£¿</h4> -Äã¿ÉÒÔÔĶÁ <i>psql</i> -µÄÔ´´úÂëÎļþ<i>pgsql/src/bin/psql/describe.c</i> ¡£Ëü°üÀ¨ÎªÉú³É -psql µÄ·´Ð±¸ÜÃüÁîµÄÊä³öµÄ SQL ÃüÁî¡£Ä㻹¿ÉÒÔ´ø <i>-E</i> Ñ¡ÏîÆô¶¯ -<i>psql</i>£¬ÕâÑùËü½«´òÓ¡³öÖ´ÐÐÄã¸ø³öµÄÃüÁîËùÓõIJéѯ¡£ -<h4><a name="4.4"></a>4.4) ÔõÑù´Ó±íÀïÃæÉ¾³ýÒ»ÁУ¿</h4> -<p>7.3 ÀïÔö¼ÓÁË <font size="-1">ALTER TABLE DROP -COLUMN</font>£¬ÒÔÖ§³Ö´ËÏÄÜ¡£ÔÚÒÔǰµÄ°æ±¾ÖУ¬¿ÉÒÔÕâÑù×ö£º</p> -<pre> - 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; -</pre> -<h4><a name="4.5"></a>4.5) -Ò»ÐУ¬Ò»¸ö±í£¬Ò»¸ö¿âµÄ×î´ó³ß´çÊǶàÉÙ£¿</h4> -ÏÂÃæÊÇһЩÏÞÖÆ£º -<pre> - Ò»¸öÊý¾Ý¿â×î´ó³ß´ç£¿ ÎÞÏÞÖÆ£¨´æÔÚ 1TB µÄÊý¾Ý¿â£© - Ò»¸ö±íµÄ×î´ó³ß´ç£¿ 16TB - Ò»ÐеÄ×î´ó³ß´ç£¿ 1.6TB - Ò»¸ö×ֶεÄ×î´ó³ß´ç? 1GB - Ò»¸ö±íÀï×î´óÐÐÊý£¿ ÎÞÏÞÖÆ - Ò»¸ö±íÀï×î´óÁÐÊý£¿ ¸úÁÐÀàÐÍÓйØ,250-1600 - Ò»¸ö±íÀïµÄ×î´óË÷ÒýÊýÁ¿£¿ÎÞÏÞÖÆ -</pre> -µ±È»£¬Êµ¼ÊÉÏûÓÐÕæÕýµÄÎÞÏÞÖÆ£¬»¹ÊÇÒªÊÜ¿ÉÓôÅÅ̿ռ䡢¿ÉÓÃÄÚ´æ/½»»»ÇøµÄÖÆÔ¼¡£ -<p>±íµÄ×î´ó³ß´ç 16 TB ²»ÐèÒª²Ù×÷ϵͳ¶Ô´óÎļþµÄÖ§³Ö¡£´ó±íÓöà¸ö 1 GB -µÄÎļþ´æ´¢£¬Òò´ËÎļþϵͳ³ß´çµÄÏÞÖÆÊDz»ÖØÒªµÄ¡£</p> -<p>Èç¹ûȱʡµÄ¿é´óСÔö³¤µ½ 32K -£¬×î´óµÄ±í³ß´çºÍ×î´óÁÐÊý¿ÉÒÔÔö¼Ó¡£</p> -<h4><a name= -"4.6"></a>4.6)´æ´¢Ò»¸öµäÐÍµÄÆ½ÃæÎļþÀïµÄÊý¾ÝÐèÒª¶àÉÙ´ÅÅ̿ռ䣿</h4> -Ò»¸ö Postgres -Êý¾Ý¿â×î¶à¿ÉÄÜÐèÒªÏ൱ÓÚÔÚÒ»¸öÆ½ÃæÎļþÀï´æ´¢ÏàͬÊý¾ÝµÄ5±¶µÄ´ÅÅ̿ռ䡣 -<p>ÀýÈ磬¼ÙÉèÓÐÒ»¸ö 100,000 -ÐеÄÎļþ£¬Ã¿ÐÐÓÐÒ»¸öÕûÊýºÍÒ»¸öÎı¾ÃèÊö¡£¼ÙÉèÎı¾´®µÄƽ¾ù³¤¶Èλ20×Ö½Ú¡£Æ½ÃæÎļþÕ¼Óà -2.8 MB¡£´æ·ÅÕâЩÊý¾ÝµÄ PostgreSQL Êý¾Ý¿âÎļþ´óÔ¼ÊÇ 6.4 MB:</p> -<pre> - 36 ×Ö½Ú: ÿÐеÄÍ·£¨¹À¼ÆÖµ£© - 24 ×Ö½Ú: Ò»¸öint×ֶκÍÒ»¸öÎı¾ÐÍ×Ö¶Î - + 4 ×Ö½Ú: Ò³ÃæÄÚÖ¸ÏòÔª×éµÄÖ¸Õë - ---------------------------------------- - 64 ×Ö½ÚÿÐÐ - - PostgreSQL Êý¾ÝÒ³µÄ´óСÊÇ 8192 ×Ö½Ú (8 KB)£¬Ôò£º - - 8192 ×Ö½Úÿҳ - ------------------- = 128 ÐÐ/Êý¾ÝÒ³£¨ÏòÏÂÈ¡Õû£© - 64 ×Ö½ÚÿÐÐ - - 100000 Êý¾ÝÐÐ - -------------------- = 782 Êý¾ÝÒ³£¨ÏòÉÏÈ¡Õû£© - 128 ÐÐÿҳ - - 782 Êý¾ÝÒ³ * 8192 ×Ö½Ú/Ò³ = 6,406,144 ×Ö½Ú£¨6.4 MB£© -</pre> -<p> -Ë÷Òý²»ÐèÒªÕâô¶àµÄ¶îÍâÏûºÄ£¬µ«Ò²È·Êµ°üÀ¨±»Ë÷ÒýµÄÊý¾Ý£¬Òò´ËËüÃÇÒ²¿ÉÄܴܺó¡£</p> -<p>¿ÕÖµ´æ·ÅÔÚλͼÖУ¬Òò´ËÕ¼ÓúÜÉٵĿռ䡣</p> -<h4><a name="4.7"></a>4.7) -ÈçºÎ²é¿´±í¡¢Ë÷Òý¡¢Êý¾Ý¿âÒÔ¼°Óû§µÄ¶¨Ò壿</h4> -<i> psql</i> ÓÐÐí¶à·´Ð±¸ÜÃüÁîÓÃÓÚÏÔʾÕâЩÐÅÏ¢¡£Óà \? -¿´¿´¶¼ÓÐÄÄЩ¡£ÒÔ pg_ ´òÍ·µÄϵͳ±íÒ²ÃèÊöÁËÕâЩÐÅÏ¢¡£ psql -l -¿ÉÒÔÁгöËùÓеÄÊý¾Ý¿â¡£ -<p>Ò²¿ÉÒÔÊÔÊÔÎļþ -<i>pgsql/src/tutorial/syscat.source</i>¡£ËüÑÝʾÁËÐí¶à´ÓÊý¾Ý¿âϵͳ±íÀï»ñÈ¡ÐÅÏ¢ÐèÒªµÄ -<font size="-1">SELECT</font>¡£</p> -<h4><a name="4.8"></a>4.8) -ÎҵIJéѯºÜÂý»òÕßûÓÐÀûÓÃË÷Òý¡£ÎªÊ²Ã´£¿</h4> -<p> -²¢·Çÿ¸ö²éѯ¶¼»á×Ô¶¯Ê¹ÓÃË÷Òý¡£Ö»ÓÐÔÚ±íµÄ´óС³¬¹ýÒ»¸ö×îСֵ£¬²¢ÇÒ²éѯֻѡÔñ±íÖнÏС±ÈÀýµÄÐÐʱ²ÉÓÃʹÓÃË÷Òý¡£ÕâÊÇÒòΪË÷ÒýɨÃèÒýÆðµÄËæ¼´´ÅÅÌ´æÈ¡¿ÉÄܱÈÖ±½ÓµØ¶ÁÈ¡±í£¨Ë³ÐòɨÃ裩¸üÂý¡£ÎªÁËÅжÏÊÇ·ñʹÓÃË÷Òý£¬PostgreSQL -±ØÐë»ñµÃÓйرíµÄͳ¼ÆÖµ¡£ÕâЩͳ¼ÆÖµ¿ÉÒÔʹÓà VACUUM ANALYZE£¬»ò -ANALYZE -»ñµÃ¡£Ê¹ÓÃͳ¼ÆÖµ£¬ÓÅ»¯Æ÷ÖªµÀ±íÖÐÓжàÉÙÐУ¬¾ÍÄܹ»¸üºÃµØÅжÏÊÇ·ñÀûÓÃË÷Òý¡£Í³¼ÆÖµ¶ÔÈ·¶¨ÓÅ»¯µÄÁ¬½Ó˳ÐòºÍÁ¬½Ó·½·¨Ò²ºÜÓÐÓá£ÔÚ±íµÄÄÚÈÝ·¢Éú±ä»¯Ê±£¬Ó¦¶¨ÆÚ½øÐÐͳ¼ÆÖµµÄ»ñÈ¡¡£</p> -<p>Ë÷Òýͨ³£²»ÓÃÓÚ ORDER BY -»òÖ´ÐÐÁ¬½Ó¡£¶ÔÒ»¸ö´ó±íµÄÒ»´Î˳ÐòɨÃ裬ÔÙ×öÒ»¸öÏÔʽµÄÅÅÐòͨ³£±ÈË÷ÒýɨÃèÒª¿ì¡£</p> -<p>µ«ÊÇ£¬ÔÚ LIMIT ºÍ ORDER BY -½áºÏʹÓÃʱ¾³£»áʹÓÃË÷Òý£¬ÒòΪֻ»á·µ»Ø±íµÄһС²¿·Ö¡£Êµ¼ÊÉÏ£¬ËäÈ» -MAX() ºÍ MIN() ²¢²»Ê¹ÓÃË÷Òý£¬Í¨¹ý¶Ô ORDER BY ºÍ LLIMIT -ʹÓÃË÷ÒýÈ¡µÃ×î´óÖµºÍ×îСֵҲÊÇ¿ÉÒԵģº<br /> -<br /> - SELECT col<br /> - FROM tab<br /> - ORDER BY col [ DESC ]<br /> - LIMIT 1;</p> -<p>µ±Ê¹ÓÃͨÅä·û²Ù×÷£¬ÀýÈç LIKE »ò ~ -ʱ£¬Ë÷ÒýÖ»ÄÜÔÚÌØ¶¨µÄÇé¿öÏÂʹÓ㺠</p> -<ul> -<li>×Ö·û´®µÄ¿ªÊ¼²¿·Ö±ØÐëÊÇÆÕͨ×Ö·û´®£¬Ò²¾ÍÊÇ˵£º</li> -<li>LIKE ģʽ²»ÄÜÒÔ % ´òÍ·¡£</li> -<li>~ £¨ÕýÔò±í´ïʽ£©Ä£Ê½±ØÐëÒÔ ^ ´òÍ·¡£</li> -<li>×Ö·û´®²»ÄÜÒÔÆ¥Åä¶à¸ö×Ö·ûµÄģʽÀà´òÍ·£¬ÀýÈç [a-e]¡£</li> -<li>´óСдÎ޹صIJéÕÒ£¬Èç ILIKE ºÍ ~* µÈ²»Ê¹ÓÃË÷Òý¡£µ«¿ÉÒÔÓà 4.12 -½ÚÃèÊöµÄº¯ÊýË÷Òý¡£</li> -<li>ÔÚ×ö initdb ʱ±ØÐë²ÉÓÃȱʡµÄ±¾µØÉèÖà C locale¡£</li> -</ul> -<h4><a name="4.9"></a>4.9) -ÎÒÈçºÎ²ÅÄÜ¿´µ½²éѯÓÅ»¯Æ÷ÊÇÔõÑù´¦ÀíÎҵIJéѯµÄ£¿</h4> -²Î¿¼ <font size="-1">EXPLAIN</font> ÊÖ²áÒ³¡£ -<h4><a name="4.10"></a>4.10) R-tree Ë÷ÒýÊÇʲô£¿</h4> -<p>R-tree Ë÷ÒýÓÃÓÚË÷Òý¿Õ¼äÊý¾Ý¡£Ò»¸ö¹þÏ£Ë÷ÒýÎÞ·¨´¦Àí·¶Î§ËÑË÷¡£¶ø -B-tree Ë÷ÒýÖ»ÄÜ´¦ÀíһάµÄ·¶Î§ËÑË÷¡£R-tree -Ë÷Òý¿ÉÒÔ´¦Àí¶àάÊý¾Ý¡£ÀýÈ磬Èç¹û¿ÉÒÔÔÚÒ»¸öÀàÐÍΪ point -µÄ×Ö¶ÎÉϽ¨Á¢Ò»¸ö R-tree Ë÷Òý£¬ÄÇôϵͳÄܸü¸ßЧµØ»Ø´ðÀàËÆ -¡°Ñ¡ÔñÔÚÒ»¸ö³¤·½Ðη¶Î§ÄÚµÄËùÓе㡱¡£<br /> -<br /> -ÃèÊö×î³õµÄ R-Tree Éè¼ÆµÄÕýʽÂÛÎÄÊÇ£º<br /> -<br /> -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.<br /> -<br /> -Ä㻹¿ÉÒÔÔÚ Stonebraker µÄ¡°Readings in Database -Systems¡±ÀïÕÒµ½ÕâÆªÎÄÕ¡£<br /> -<br /> -ϵͳÄÚÖÃµÄ R-Tree ¿ÉÒÔ´¦Àí¶à±ßÐκͷ½ÐΡ£ÀíÂÛÉÏ˵£¬R-tree -¿ÉÒÔÀ©Õ¹Îª´¦Àí¸ü¶àάÊý¡£²»¹ýÔÚʵ¼ùÉÏ£¬À©Õ¹ R-trees -ÐèÒªÒ»¶¨µÄ¹¤×÷Á¿£¬¶øÎÒÃÇĿǰûÓÐÈçºÎ×öµÄÎĵµ¡£</p> -<h4><a name="4.11"></a>4.11) ʲôÊÇ»ùÒò²éѯÓÅ»¯£¨Genetic Query -Optimization£©£¿</h4> -<p>GEQO Ä£¿é²ÉÓûùÒòËã·¨£¨Genetic -Algorithm£¬GA£©¼Ó¿ì¶à±íÁ¬½ÓµÄ²éѯÓÅ»¯¡£ËüÔÊÐíͨ¹ý·ÇÇî¾ÙËÑË÷´¦Àí´óµÄÁ¬½Ó²éѯ¡£</p> -<h4><a name="4.12"></a>4.12) -ÎÒÔõÑù×öÕýÔò±í´ïʽËÑË÷ºÍ´óСдÎ޹صÄÕýÔò±í´ïʽËÑË÷£¿ÔõÑùÀûÓÃË÷Òý½øÐдóСдÎÞ¹ØËÑË÷£¿</h4> -<p>²Ù×÷·û ~ ´¦ÀíÕýÔò±í´ïʽƥÅ䣬¶ø ~* -´¦Àí´óСдÎ޹صÄÕýÔò±í´ïʽƥÅä¡£´óдЩÎÞ¹ØµÄ LIKE ±äÖÖ³ÉΪ -ILIKE¡£<br /> -<br /> -´óСдÎ޹صĵÈʽ±È½Ïͨ³£Ð´×ö£º<br /> -<br /> - SELECT *<br /> - FROM tab<br /> - WHERE lower(col) = 'abc';<br /> -<br /> -ÕâÑù½«²»»áʹÓñê×¼µÄË÷Òý¡£µ«ÊÇ¿ÉÒÔ´´½¨Ò»¸ö¿É±»ÀûÓõĺ¯ÊýË÷Òý:<br /> -<br /> - CREATE INDEX tabindex ON tab (lower(col));</p> -<h4><a name="4.13"></a>4.13) ÔÚÒ»¸ö²éѯÀÎÒÔõÑù¼ì²âÒ»¸ö×Ö¶ÎÊÇ·ñΪ -NULL£¿</h4> -<p>Óà IS NULL ºÍ IS NOT NULL ²âÊÔÕâ¸ö×ֶΡ£ <br /></p> -<h4><a name="4.14"></a>4.14) ¸÷ÖÖ×Ö·ûÀàÐÍÖ®¼äÓÐʲô²»Í¬£¿</h4> -<p> ÀàÐÍ ÄÚ²¿Ãû³Æ ˵Ã÷<br /> - --------------------------------------------------<br /> - "char" char 1¸ö×Ö·û character<br /> - CHAR(#) bpchar -¶¨³¤×Ö·û´®£¬Êµ¼ÊÊý¾Ý²»×㶨Ò峤¶Èʱ£¬ÒÔ¿Õ¸ñ²¹Æë<br /> - VARCHAR(#) varchar -Ö¸¶¨ÁË×î´ó³¤¶È£¬±ä³¤×Ö·û´®£¬²»×㶨Ò峤¶ÈµÄ²¿·Ö²»²¹Æë<br /> - TEXT text ´®³¤¶È½öÊÜÐеÄ×î´ó³¤¶ÈÏÞÖÆ<br /> - BYTEA bytea ±ä³¤×Ö½ÚÐòÁУ¨±ä³¤µÄ¶þ½øÖÆÊý¾Ý£©<br /> -<br /> -ÔÚϵͳ±íºÍÔÚһЩ´íÎóÐÅÏ¢ÀïÄ㽫¿´µ½ÄÚ²¿Ãû³Æ¡£ <br /> -<br /> -ÉÏÃæ×îºóËÄÖÖÀàÐÍÊÇ"varlena"£¨±ä³¤£©ÀàÐÍ£¨Ò²¾ÍÊÇ˵£¬¿ªÍ·µÄËĸö×Ö½ÚÊdz¤¶È£¬ºóÃæ²ÅÊÇÊý¾Ý£©¡£ÓÚÊÇʵ¼ÊÕ¼ÓõĿռä±ÈÉùÃ÷µÄ´óСҪ¶àһЩ¡£È»¶øÕâЩÀàÐͶ¼¿ÉÒÔ±»Ñ¹Ëõ´æ´¢£¬Ò²¿ÉÒÔÓà -TOAST ÍÑ»ú´æ´¢£¬Òò´Ë´ÅÅ̿ռäÒ²¿ÉÄܱÈÔ¤ÏëµÄÒªÉÙ¡£<br /> -<br /> -CHAR(n) ×îÊʺÏÓÚ´æ´¢³¤¶È»ù±¾²î²»¶àµÄ×Ö·û´®¡£VARCHAR(n) -ÔÚ´æ´¢ÏÞÖÆÁË×î´ó³¤¶ÈµÄ±ä³¤×Ö·û´®ÊÇ×îºÃµÄ¡£TEXT -ÊÊÓÃÓÚ´æ´¢²»ÏÞÖÆ³¤¶ÈµÄ×Ö·û´®£¬×î´ó¿É´ï 1G¡£BYTEA -ÓÃÓÚ´æ´¢¶þ½øÖÆÊý¾Ý£¬ÓÈÆäÊǰüº¬ NULL -×Ö½Ú£¨¶þ½øÖƵÄ0£©µÄÖµ¡£ÕâЩÀàÐ;ßÓÐÀàÐ͵ÄÐÔÄÜ¡£</p> -<h4><a name="4.15.1"></a>4.15.1) -ÎÒÔõÑù´´½¨Ò»¸öÐòÁкÅ/×Ô¶¯µÝÔöµÄ×ֶΣ¿</h4> -<p>PostgreSQL Ö§³Ö SERIAL -Êý¾ÝÀàÐÍ¡£ËüÔÚ×Ö¶ÎÉÏ×Ô¶¯´´½¨Ò»¸öÐòÁкÍË÷Òý¡£ÀýÈ磬<br /> - CREATE TABLE person ( <br /> - id SERIAL, <br /> - name TEXT <br /> - );<br /> -<br /> -»á×Ô¶¯×ª»»Îª£º <br /> - <br /> - CREATE SEQUENCE person_id_seq;<br /> - CREATE TABLE person ( <br /> - id INT4 NOT NULL DEFAULT nextval('person_id_seq'),<br /> - name TEXT <br /> - );<br /> - CREATE UNIQUE INDEX person_id_key ON person ( id );<br /> -<br /> -²Î¿¼ create_sequence ÊÖ²áÒ³»ñÈ¡¹ØÓÚÐòÁеĸü¶àÐÅÏ¢¡£Ä㻹¿ÉÒÔÓÃÿÐÐµÄ -oid -×Ö¶Î×÷Ϊһ¸öΨһֵ¡£²»¹ý£¬Èç¹ûÄãÐèÒªÇãµ¹ºÍÖØÔØÊý¾Ý¿â£¬ÄãÐèҪʹÓà -pg_dump µÄ -o Ñ¡Ïî»òÕß COPY WITH OIDS Ñ¡ÏîÒÔ±£Áô OID¡£ </p> -<h4><a name="4.15.2"></a>4.15.2) -ÎÒÈçºÎ»ñµÃÒ»¸ö²åÈëµÄÐòÁкŵÄÖµ£¿</h4> -<p>Ò»ÖÖ·½·¨ÊÇÔÚ²åÈë֮ǰÏÈÓú¯Êý nextval() ´ÓÐòÁжÔÏóÀï¼ìË÷³öÏÂÒ»¸ö -SERIAL Öµ£¬È»ºóÔÙÏÔʽ²åÈ롣ʹÓà <a href="#4.15.1">4.15.1</a> -ÀïµÄÀý±í£¬¿ÉÓÃαÂëÕâÑùÃèÊö£º <br /> -<br /> - new_id = execute("SELECT nextval('person_id_seq')");<br /> - execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise -Pascal')");<br /> -<br /> -ÕâÑù»¹ÄÜÔÚÆäËû²éѯÖÐʹÓôæ·ÅÔÚ new_id ÀïµÄÐÂÖµ£¨ÀýÈ磬×÷Ϊ person -±íµÄÍâ¼ü£©¡£×¢Òâ×Ô¶¯´´½¨µÄ SEQUENCE ¶ÔÏóµÄÃû³Æ½«»áÊÇ -<table>_<serialcolumn>_seq£¬ÕâÀï table ºÍ serialcolumn -·Ö±ðÊÇÄãµÄ±íµÄÃû³ÆºÍÄãµÄ SERIAL ×ֶεÄÃû³Æ¡£ <br /> -<br /> -ÀàËÆµÄ£¬ÔÚ SERIAL ¶ÔÏóȱʡ²åÈëºóÄã¿ÉÒÔÓú¯Êý currval() ¼ìË÷¸Õ¸³ÖµµÄ -SERIAL Öµ£¬ÀýÈ磬 <br /> -<br /> - execute("INSERT INTO person (name) VALUES ('Blaise -Pascal')");<br /> - new_id = execute("SELECT currval('person_id_seq')");<br /> -<br /> -×îºó£¬Äã¿ÉÒÔʹÓÃ´Ó INSERT Óï¾ä·µ»ØµÄ <a href="4.16">OID</a> -²éÕÒȱʡֵ£¬¾¡¹ÜÕâ¿ÉÄÜÊÇ×îȱ·¦ÒÆÖ²ÐԵķ½·¨¡£ÔÚ Perl ÀʹÓôøÓÐ -Edmund Mergl µÄ DBD::Pg Ä£¿éµÄ DBI£¬oid Öµ¿ÉÒÔͨ¹ý -$sth->execute() ºóµÄ $sth->{pg_oid_status} »ñµÃ¡£ </p> -<h4><a name="4.15.3"></a>4.15.3) ʹÓà currval() ºÍ nextval() -»áµ¼ÖÂÒ»¸öÓëÆäËûÓû§Ö®¼äµÄÎÉÂÒÇé¿öÂð£¿</h4> -<p>²»»á¡£currval() -·µ»Øºǫ́½ø³Ì¶ø²»ÊÇËùÓÐÓû§¸³ÓèµÄµ±Ç°Öµ¡£<br /></p> -<h4><a name="4.15.4"></a>4.15.4) -Ϊʲô²»ÔÚÊÂÎñÒì³£ÖÐÖ¹ºóÖØÓÃÐòÁкÅÄØ£¿ÎªÊ²Ã´ÔÚÐòÁкÅ×ֶεÄȡֵÖдæÔÚ¼ä¶ÏÄØ£¿</h4> -<p> -ΪÁËÌá¸ß²¢·¢ÐÔ£¬ÐòÁкÅÔÚÐèÒªµÄʱºò¸³ÓèÕýÔÚÔËÐеÄÊÂÎñ£¬²¢ÇÒÖ»ÔÚÊÂÎñ½áÊøÖ®Ç°²»·âËø¡£Õâ¾Í»áµ¼ÖÂØ²ÕÛÊÂÎñºóµÄÐòÁкųöÏÖ¼ä¸ô¡£</p> -<h4><br /> -<a name="4.16"></a>4.16) ʲôÊÇ OID£¿Ê²Ã´ÊÇ TID£¿</h4> -<p>OID ÊÇ PostgreSQL ÖÐÐеÄΨһ±êʶ¡£PostgreSQL -Àï´´½¨µÄÿһÐж¼»ñµÃÒ»¸öΨһµÄ OID¡£ËùÓÐÔÚ initdb ¹ý³ÌÖд´½¨µÄ OID -¶¼Ð¡ÓÚ 16384 £¨²Î¼û include/access/transam.h£©¡£ËùÓÐÓû§´´½¨µÄ OID -¶¼´óÓÚ»òµÈÓÚÕâ¸öÖµ¡£È±Ê¡Ê±£¬ËùÓÐÕâЩ OID -²»½öÔÚÒ»¸ö±í»òÒ»¸öÊý¾Ý¿âÀïÃæÎ¨Ò»£¬¶øÇÒÔÚÕû¸ö PostgreSQL -°²×°ÀïÒ²ÊÇΨһµÄ¡£ <br /> -<br /> -PostgreSQL ÔÚËüµÄÄÚ²¿ÏµÍ³±íÀïʹÓà OID ÔÚ±íÖ®¼ä½¨Á¢ÁªÏµ¡£ÕâЩ OID -¿ÉÒÔÓÃÓÚ±êÊ¶ÌØ¶¨µÄÓû§ÐÐÒÔ¼°ÓÃÔÚÁ¬½ÓÀï¡£½¨ÒéʹÓÃ×Ö¶ÎÀàÐÍ OID ´æ´¢ -OID Öµ¡£¿ÉÒÔÔÚ OID ×Ö¶ÎÉÏ´´½¨Ò»¸öË÷ÒýÒÔ¿ìËÙ·ÃÎÊ¡£ <br /> -<br /> -OID ´ÓÒ»¸ö±»ËùÓÐÊý¾Ý¿âʹÓõÄÖÐÐÄÇøÓòÀ︳ֵ¸øËùÓÐÐÂÐС£Èç¹ûÄãÏë°Ñ -OID ¸Ä³É±ðµÄÖµ£¬»òÕßÏë×öÒ»·Ý±íµÄ´øÔʼ OID µÄ¿½±´£¬Äã¿ÉÒÔ×öµ½£º -<br /> -<br /> - CREATE TABLE new(old_oid oid, mycol int);<br /> - SELECT old_oid, mycol INTO new FROM old;<br /> - COPY new TO '/tmp/pgtable';<br /> - DELETE FROM new;<br /> - COPY new WITH OIDS FROM '/tmp/pgtable';<br /> -<br /> -OID -ÓÃ4×Ö½ÚµÄÕûÊý±£´æ£¬ÔÚ³¬¹ý40ÒÚʱ½«Òç³ö¡£Ã»ÓÐÈ˱¨¸æ³öÏÖ¹ýÒç³ö£¬¶øÎÒÃÇ´òËãÔÚÓÐÈ˱¨¸æÖ®Ç°Ïû³ýÕâ¸öÏÞÖÆ¡£<br /> - -<br /> -TID ÓÃÓÚ±êʶ´ø×ÅÊý¾Ý¿é£¨µØÖ·£©ºÍ£¨¿éÄÚ£©Æ«ÒƵÄÌØ¶¨µÄÎïÀíÐС£TID -ÔÚÐб»¸ü¸Ä»òÖØÔØºó·¢Éú¸Ä±ä¡£Ë÷ÒýÈë¿ÚʹÓÃËüÃÇÖ¸ÏòÎïÀíÐС£</p> -<h4><a name="4.17"></a>4.17) PostgreSQL -ʹÓõÄһЩÊõÓïµÄº¬ÒåÊÇʲô£¿</h4> -<p> -һЩԴ´úÂëºÍһЩ¾ÉÒ»µãµÄÎĵµÊ¹ÓÃһЩÓиü³£ÓÃÓ÷¨µÄÊõÓï¡£ÏÂÃæÊÇÆäÖÐÒ»²¿·Ö£º -<br /> - table, relation, class <br /> - row, record, tuple <br /> - column, field, attribute <br /> - retrieve, select <br /> - replace, update <br /> - append, insert <br /> - OID, serial value <br /> - portal, cursor <br /> - range variable, table name, table alias <br /> -<br /> -ÓÐÒ»¸öͨÓÃÊý¾Ý¿âÊõÓïµÄÁÐ±í£º<a href= -"http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html">http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html</a> -¡£ </p> -<h4><a name="4.18"></a>4.18) ΪʲôÎÒÊÕµ½´íÎó¡°<i>ERROR: Memory -exhausted in AllocSetAlloc()</i>¡±£¿</h4> -<p> -ÕâºÜ¿ÉÄÜÊÇϵͳµÄÐéÄâÄÚ´æÓùâÁË£¬»òÕßÄں˶ÔijЩ×ÊÔ´Óнϵ͵ÄÏÞÖÆÖµ¡£ÔÚÆô¶¯ -postmaster ֮ǰÊÔÊÔÏÂÃæµÄÃüÁ <br /> -<br /> - ulimit -d 262144<br /> - limit datasize 256m<br /> -<br /> -È¡¾öÓÚÄãÓÃµÄ -shell£¬ÉÏÃæÃüÁîÖ»ÓÐÒ»ÌõÄܳɹ¦£¬µ«ÊÇËü½«°ÑÄãµÄ½ø³ÌÊý¾Ý¶ÎÏÞÖÆÉèµÃ±È½Ï¸ß£¬Òò¶øÒ²ÐíÄÜÈòéѯÍê³É¡£ÕâÌõÃüÁîÓ¦ÓÃÓÚµ±Ç°½ø³Ì£¬ÒÔ¼°ËùÓÐÔÚÕâÌõÃüÁîÔËÐк󴴽¨µÄ×Ó½ø³Ì¡£Èç¹ûÄãÊÇÔÚÔËÐÐSQL¿Í»§¶ËʱÒòΪºǫ́·µ»ØÁËÌ«¶àµÄÊý¾Ý¶ø³öÏÖÎÊÌ⣬ÇëÔÚÔËÐпͻ§¶Ë֮ǰִÐÐÉÏÊöÃüÁî¡£</p> -<h4><a name="4.19"></a>4.19) ÎÒÈçºÎ²ÅÄÜÖªµÀËùÔËÐÐµÄ PostgreSQL -µÄ°æ±¾£¿</h4> -<p>´Ó psql À¼üÈë SELECT version()£»<br /></p> -<h4><a name="4.20"></a>4.20) -ΪʲôÎҵĴó¶ÔÏó²Ù×÷µ¼Ö´íÎó¡°<i>invalid large obj -descriptor¡±£¨·Ç·¨µÄ´ó¶ÔÏóÃèÊö·û£©</i>£¿</h4> -<p>ÄãÐèÒªÔÚʹÓÃÈκδó¶ÔÏó¾ä±úµÄǰºó·ÅÉÏ BEGIN WORK ºÍ -COMMIT£¬Ò²¾ÍÊÇ˵£¬°üΧ lo_open ... lo_close¡£ <br /> -<br /> -Ŀǰ PostgreSQL -Ç¿ÖÆÊµÊ©ÕâÌõ¹æÔò£ºÔÚÊÂÎñÌύʱ¹Ø±Õ´ó¶ÔÏó¾ä±ú£¬ÕâÑù£¬£¨Ã»ÓвÉÓÃÊÂÎñʱ£©£¬Ê״ζԴó¶ÔÏó¾ä±ú×öÈκÎÊÂÇéµÄÆóͼ¶¼»áµ¼ÖÂÒ»¸ö -invalid large obj -descriptor¡£ËùÒÔ£¬Èç¹ûÄãûÓÐʹÓÃÒ»¸öÊÂÎñ£¬ÒÔǰÄܹ¤×÷µÄ´úÂ루ÖÁÉÙÊÇ´ó¶àÊýʱ¼ä£©½«»áÉú³ÉÕâôһ¸ö´íÎóÐÅÏ¢¡£ -<br /> -<br /> -Èç¹ûÄãʹÓÿͻ§¶Ë½Ó¿Ú£¬Èç ODBC£¬Äã¿ÉÄÜÐèÒª set auto-commit off¡£</p> -<h4><a name="4.21"></a>4.21) -ÎÒÈçºÎ´´½¨Ò»¸öȱʡֵÊǵ±Ç°Ê±¼äµÄ×ֶΣ¿</h4> -<p>ʹÓà CURRENT_TIMESTAMP£º<br /> -<br /> - CREATE TABLE test(x int, modtime timestamp DEFAULT -CURRENT_TIMESTAMP);</p> -<h4><a name="4.22"></a>4.22) ΪʲôʹÓà IN µÄ×Ó²éѯÕâôÂý£¿</h4> -<p> -Ŀǰ£¬ÎÒÃÇͨ¹ýΪÍâ²éѯµÄÿһÐÐ˳ÐòɨÃè×Ó²éѯµÄ½á¹ûÀ´Á¬½Ó×Ó²éѯºÍÍâ²éѯ¡£Èç¹û×Ó²éѯ·µ»ØÉÙÊý¼¸ÐУ¬¶øÍâ²éѯ·µ»ØºÜ¶àÐУ¬IN -Ö´Ðеúܿ졣ΪÁ˼ӿìÆäËû IN ²éѯµÄÖ´ÐУ¬¿ÉÒÔÓà EXISTS Ìæ»» IN£º -<br /> -<br /> - SELECT *<br /> - FROM tab<br /> - WHERE col IN (SELECT subcol FROM subtab);<br /> -<br /> -¸ÄΪ£º <br /> -<br /> - SELECT *<br /> - FROM tab<br /> - WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = -col);<br /> -<br /> -ºóÕßÒªÏëÖ´Ðеøü¿ì£¬subcol -Ó¦¸ÃÊÇÒ»¸öË÷ÒýÁС£ÎÒÃÇÏ£ÍûÔÚδÀ´µÄ·¢²¼°æ±¾ÖÐÐÞ²¹Õâ¸öÏÞÖÆ¡£</p> -<h4><a name="4.23"></a>4.23) ÎÒÔõÑù½øÐÐ outer join -£¨ÍâÁ¬½Ó£©£¿</h4> -<p>PostgreSQL ²ÉÓñê×¼µÄ SQL Óï·¨Ö§³ÖÍâÁ¬½Ó¡£ÕâÀïÊÇÁ½¸öÀý×Ó£º<br /> -<br /> - SELECT *<br /> - FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);<br /> -<br /> -»ò <br /> - SELECT *<br /> - FROM t1 LEFT OUTER JOIN t2 USING (col);<br /> -<br /> -ÕâÁ½¸öµÈ¼ÛµÄ²éѯÔÚ t1.col ºÍ t2.col ÉÏ×öÁ¬½Ó£¬²¢ÇÒ·µâ»?t1 -ÖÐËùÓÐδÁ¬½ÓµÄÐУ¨ÄÇЩÔÚ t2 ÖÐûÓÐÆ¥ÅäµÄÐУ©¡£ÓÒ[Íâ]Á¬½Ó(RIGHT -OUTER JOIN)½«·µ»Ø t2 ÖÐδÁ¬½ÓµÄÐС£ÍêÈ«ÍâÁ¬½Ó£¨FULL OUTER -JOIN£©½«·µ»Ø t1 ºÍ t2 ÖÐδÁ¬½ÓµÄÐС£¹Ø¼ü×Ö OUTER -ÔÚ×ó[Íâ]Á¬½Ó¡¢ÓÒ[Íâ]Á¬½ÓºÍÍêÈ«[Íâ]Á¬½ÓÖÐÊÇ¿ÉÑ¡µÄ£¬ÆÕͨÁ¬½Ó±»³ÉΪÄÚÁ¬½Ó£¨INNER -JOIN£©¡£<br /> -<br /> -ÔÚ´ËǰµÄ°æ±¾ÖУ¬ÍâÁ¬½Ó¿ÉÒÔÓà UNION ºÍ NOT IN -À´Ä£Äâ¡£ÀýÈ磬ÏÂÃæµÄÀý×ÓÔÚ±í tab1 ºÍ tab2 Ö®¼ä×öÍâÁ¬½Ó£º<br /> -<br /> - SELECT tab1.col1, tab2.col2<br /> - FROM tab1, tab2<br /> - WHERE tab1.col1 = tab2.col1<br /> -<br /> - UNION ALL<br /> -<br /> - SELECT tab1.col1, NULL<br /> - FROM tab1<br /> - WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)<br /> - ORDER BY col1</p> -<h4><a name="4.24"></a>4.24) ÈçºÎʹÓÃÉæ¼°¶à¸öÊý¾Ý¿âµÄ²éѯ£¿</h4> -<p>ûÓа취²éѯµ±Ç°Êý¾Ý¿âÖ®ÍâµÄÊý¾Ý¿â¡£ÒòΪ PostgreSQL -¼ÓÔØÊý¾Ý¿âÏà¹ØµÄϵͳĿ¼£¨ÏµÍ³±í£©£¬¿çÊý¾Ý¿âµÄ²éѯÈçºÎÖ´ÐÐҲδÃ÷È·¡£<br /> - -<br /> -contrib/dblink -ÔÊÐí²ÉÓú¯Êýµ÷ÓÃʵÏÖ¿ç¿â²éѯ¡£µ±È»¿ÉÒÔͬʱÁ¬½Óµ½²»Í¬µÄÊý¾Ý¿â²¢ÔÚ¿Í»§¶ËºÏ²¢½á¹û¡£</p> -<h4><a name="4.25"></a>4.25) ÈçºÎÈú¯Êý·µ»Ø¶àÐлò¶àÁУ¿</h4> -<p>¿ÉÒÔÔÚ PL/pgSQL º¯ÊýÖÐʹÓà refcursors ·µ»Ø½á¹û¼¯¡£²Î¿´ <a href= -"http://www.PostgreSQL.org/idocs/index.php?plpgsql-cursors.html">http://www.PostgreSQL.org/idocs/index.php?plpgsql-cursors.html</a>, -23.7.3.3½Ú¡£<br /></p> -<h4><a name="4.26"></a>4.26) ΪʲôÔÚ PL/PgSQL -º¯ÊýÖв»Äܿɿ¿µØ´´½¨»òɾ³ýÁÙʱ±í£¿</h4> -<p>PL/PgSQL »º´æº¯ÊýµÄÄÚÈÝ£¬ÓÉ´Ë´øÀ´µÄÒ»¸ö²»ºÃµÄ¸±×÷ÓÃÊÇÈôÒ»¸ö -PL/PgSQL -º¯Êý·ÃÎÊÁËÒ»¸öÁÙʱ±í£¬È»ºó¸Ã±í±»É¾³ý²¢Öؽ¨ÁË£¬ÔòÔٴε÷Óøú¯Êý½«Ê§°Ü£¬ÒòΪ»º´æµÄº¯ÊýÄÚÈÝÈÔȻָÏò¾ÉµÄÁÙʱ±í¡£½â¾öµÄ·½·¨ÊÇÔÚ -PL/PgSQL ÖÐÓà EXECUTE -¶ÔÁÙʱ±í½øÐзÃÎÊ¡£ÕâÑù»á±£Ö¤²éѯÔÚÖ´ÐÐǰ×ÜÊÇÖØÐ·ÖÎö¡£</p> -<h4><a name="4.27"></a>4.27) ÓÐÄÄЩÊý¾Ý¸´ÖÆÑ¡Ï</h4> -<p> -Óм¸ÖÖÖ÷/´Ó·½Ê½µÄ¸´ÖÆÑ¡Ïî¡£ÕâЩѡÏîÖ»ÔÊÐíÖ÷Êý¾Ý¿â½øÐиüУ¬´ÓÊý¾Ý¿âÖ»ÄܽøÐжÁ¡£ÍøÒ³ -<a href= -"http://gborg.PostgreSQL.org/genpage?replication_research">http://gborg.PostgreSQL.org/genpage?replication_research</a> - µÄ×îºóÁгöÁËÕâЩѡÏî¡£ÔÚ <a href= -"http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php"> -http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php</a> -ÕýÔÚ½øÐÐÒ»¸ö¶àÖ÷±¾¸´ÖƵĽâ¾ö·½°¸¡£</p> -<h4><a name="4.28"></a>4.28) ÓÐÄÄЩÊý¾Ý¼ÓÃÜÑ¡Ï</h4> -<p>contrib/pgcrypto °üº¬Á˺ܶàÔÚ SQL -²éѯÖÐʹÓõļÓÃܺ¯Êý¡£¼ÓÃܿͻ§¶Ëµ½·þÎñÆ÷¶Ë´«ÊäÊý¾ÝµÄΨһ·½·¨ÊÇÔÚ -pg_hba.conf ÖвÉÓà hostss ¡£ <br /> -<br /> -7.3 °æ±¾ÖÐ×Ô¶¯¶ÔÊý¾Ý¿âÓû§ÃÜÂë½øÐмÓÃÜ¡£ÔÚÒÔǰµÄ°æ±¾ÖУ¬±ØÐëÔÚ -postgresql.conf Öдò¿ª PASSWORD_ENCRYPTION -Ñ¡Ïî¡£·þÎñÆ÷¿ÉÒÔÔËÐÐÔÚ¼ÓÃܵÄÎļþϵͳÉÏ£¨ÒÔ´ïµ½¼ÓÃܵÄÄ¿µÄ£©¡£<br /> -<br /> ---------------------------------------------------------------------------------</p> -<h2 align="center">À©Õ¹ PostgreSQL</h2> -<h4><a name="5.1"></a>5.1) ÎÒдÁËÒ»¸öÓû§¶¨Ò庯Êý¡£µ±ÎÒÔÚ psql -ÀïÔËÐÐʱ£¬ÎªÊ²Ã´»áµ¼Ö core dump£¿</h4> -<p> -²úÉúÕâ¸öÎÊÌâµÄÔÒòºÜ¶à¡£ÇëÏÈÔÚÒ»¸öµ¥¶ÀµÄ²âÊÔ³ÌÐòÖвâÊÔÄãµÄ×Ô¶¨Ò庯Êý¡£</p> -<h4><a name="5.2"></a>5.2) ÎÒÈçºÎÄܸø PostgreSQL -¹±Ï×һЩͦ²»´íµÄÐÂÀàÐͺͺ¯Êý£¿</h4> -<p>½«ÄãµÄÀ©Õ¹·¢Ë͵½ pgsql-hackers ÓʼþÁÐ±í£¬ËüÃÇ×îÖջᱻ·Åµ½ -contrib/ ×ÓĿ¼¡£<br /></p> -<h4><a name="5.3"></a>5.3) ÎÒÔõÑùдһ¸ö·µ»ØÒ»ÌõÔª×éµÄ C º¯Êý£¿</h4> -<p>ÔÚ PostgreSQL 7.3 ÒÔºóµÄ°æ±¾ÖУ¬C, PL/PgSQL ºÍ SQL -Íêȫ֧³Ö·µ»ØÖµÎª±íµÄº¯Êý¡£¸ü¶àÐÅÏ¢Çë²Î¿¼ ³ÌÐòÔ±Ö¸ÄÏ£¨the -Programmer's Guide£©¡£ÔÚ contrib/tablefunc ÖÐÓÐÒ»¸öÀý×ÓÊÇÓà C -дµÄ·µ»ØÖµÎª±íµÄº¯Êý¡£</p> -<h4><a name="5.4"></a>5.4) -ÎÒÐÞ¸ÄÁËÒ»¸öÔ´Îļþ£¬ÎªÊ²Ã´ÖØÐ±àÒëºóûÓп´µ½¸Ä±ä£¿</h4> -<p>Makefiles ÖÐûÓаüº¬Í·ÎļþµÄÕýÈ·ÒÀÀµ¡£Äú±ØÐëÏÈ×ömake clean£¬ -ÔÙ×öÒ»´Î make ¡£Èç¹ûÄúʹÓõÄÊÇ GCC £¬Ôò¿ÉÒÔ²ÉÓÃÑ¡Ïî --enable-depend -ÈñàÒëÆ÷×Ô¶¯Éú³ÉÍ·ÎļþµÄÒÀÀµ¹ØÏµ¡£</p> -</body> -</html> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en" dir="ltr">
+ <head>
+ <title>
+ PostgreSQL: PostgreSQL ³£¼ûÎÊÌ⣨FAQ£©
+ </title>
+ <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
+ </head>
+
+ <body>
+
+<h1>PostgreSQL ³£¼ûÎÊÌ⣨FAQ£©</h1>
+<p>
+×î½ü¸üУº2005 Äê 06 Ô 02 ÈÕ ÐÇÆÚÎå 22:27:35 CST
+</p>
+<p>
+ Ŀǰά»¤ÈËÔ±£ºBruce Momjian (<a href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>)<br/>
+ ÖÐÎİæÎ¬»¤ÈËÔ±£ºdoudou586 £¨doudou586_2005@yahoo.com.cn£©
+</p>
+<p>
+ ±¾ÎĵµµÄ×îа汾¿ÉÒÔÔÚ
+ <a href="http://www.postgresql.org/files/documentation/faqs/FAQ.html">http://www.postgresql.org/files/documentation/faqs/FAQ.html</a>²é¿´¡£
+</p>
+<p>
+ Óë²Ù×÷ϵͳƽ̨Ïà¹ØµÄÎÊÌâÔÚ<a href="http://www.postgresql.org/docs/faq/">http://www.postgresql.org/docs/faq/</a>Àï»Ø´ð¡£<br/>
+</p>
+<hr/>
+
+<div><h2>³£¼ûÎÊÌâ</h2></div>
+
+<p>
+<a href="#1.1">1.1</a>)PostgreSQL ÊÇʲô£¿¸ÃÔõô·¢Òô£¿<br/>
+<a href="#1.2">1.2</a>)PostgreSQL µÄ°æÈ¨ÊÇʲô£¿<br/>
+<a href="#1.3">1.3</a>)PostgreSQL ¿ÉÒÔÔËÐÐÔÚÄÄЩ²Ù×÷ϵͳƽ̨ÉÏ£¿<br/>
+<a href="#1.4">1.4</a>)ÎÒ´ÓÄÄÀïÄܵõ½ PostgreSQL£¿<br/>
+<a href="#1.5">1.5</a>)ÎÒ´ÓÄÄÀïÄܵõ½¶Ô PostgreSQL µÄÖ§³Ö£¿<br/>
+<a href="#1.6">1.6</a>)ÎÒÈçºÎÌá½»Ò»¸öBUG±¨¸æ£¿<br/>
+<a href="#1.7">1.7</a>)×îаæµÄPostgreSQL ÊÇʲô£¿<br/>
+<a href="#1.8">1.8</a>)Äܹ»»ñÈ¡µÄ×îÐÂÎĵµÓÐÄÄЩ£¿<br/>
+<a href="#1.9">1.9</a>)ÎÒÈçºÎÁ˽âÒÑÖªµÄ BUG »òÔÝȱµÄ¹¦ÄÜ£¿<br/>
+<a href="#1.10">1.10</a>)ÎÒÓ¦¸ÃÔõÑùѧϰ SQL £¿<br/>
+<a href="#1.11">1.11</a>)ÎÒÓ¦¸ÃÔõÑù¼ÓÈ뿪·¢¶ÓÎ飿<br/>
+<a href="#1.12">1.12</a>)PostgreSQL ºÍÆäËûÊý¾Ý¿âϵͳ±ÈÆðÀ´ÈçºÎ£¿<br/>
+<a href="#1.13">1.13</a>)Ë¿ØÖƺ͹ÜÀíPostgreSQL £¿
+</p>
+
+<div><h2>Óû§¿Í»§¶ËÎÊÌâ</h2></div>
+<p>
+<a href="#2.1">2.1</a>)ÎÒÃÇ¿ÉÒÔÓÃʲôÓïÑÔºÍ PostgreSQL ´ò½»µÀ£¿<br/>
+<a href="#2.2">2.2</a>)ÓÐʲô¹¤¾ß¿ÉÒÔ°Ñ PostgreSQL ÓÃÓÚ Web Ò³Ãæ£¿<br/>
+<a href="#2.3">2.3</a>)PostgreSQL ÓµÓÐͼÐÎÓû§½çÃæÂð£¿<br/>
+</p>
+
+<div><h2>ϵͳ¹ÜÀíÎÊÌâ</h2></div>
+<p>
+<a href="#3.1">3.1</a>)ÎÒÔõÑù²ÅÄÜ°Ñ PostgreSQL ×°ÔÚ /usr/local/pgsql ÒÔÍâµÄµØ·½£¿<br/>
+<a href="#3.2">3.2</a>)ÎÒÈçºÎ¿ØÖÆÀ´×ÔÆäËûÖ÷»úµÄÁ¬½Ó£¿<br/>
+<a href="#3.3">3.3</a>)ÎÒÔõÑùµ÷ÕûÊý¾Ý¿âÒýÇæÒÔ»ñµÃ¸üºÃµÄÐÔÄÜ£¿<br/>
+<a href="#3.4">3.4</a>)PostgreSQL Àï¿ÉÒÔ»ñµÃʲôÑùµÄµ÷ÊÔÌØÐÔ£¿<br/>
+<a href="#3.5">3.5</a>)ΪʲôÔÚÊÔͼÁ¬½ÓµÇ¼ʱÊÕµ½¡°Sorry, too many clients¡± ÏûÏ¢£¿<br/>
+<a href="#3.6">3.6</a>)ΪʲôҪÔÚÉý¼¶ PostgreSQL Ö÷Òª·¢²¼°æ±¾Ê±×ö dump ºÍ restore £¿<br/>
+<a href="#3.7">3.7</a>)(ʹÓÃPostgreSQL)ÎÒÐèҪʹÓÃʲô¼ÆËã»úÓ²¼þ £¿<br/>
+</p>
+
+<div><h2>²Ù×÷ÎÊÌâ</h2></div>
+<p>
+<a href="#4.1">4.1</a>)ÈçºÎֻѡÔñÒ»¸ö²éѯ½á¹ûµÄÍ·¼¸ÐУ¿»òÊÇËæ»úµÄÒ»ÐУ¿<br/>
+<a href="#4.2">4.2</a>)ÈçºÎ²é¿´±í¡¢Ë÷Òý¡¢Êý¾Ý¿âÒÔ¼°Óû§µÄ¶¨Ò壿ÈçºÎ²é¿´<i>psql</i>ÀïÓõ½µÄ²éѯָÁî²¢ÏÔʾËüÃÇ£¿<br/>
+<a href="#4.3">4.3</a>)ÈçºÎ¸ü¸ÄÒ»¸ö×ֶεÄÊý¾ÝÀàÐÍ£¿<br/>
+<a href="#4.4">4.4</a>)Ò»ÐмǼ£¬Ò»¸ö±í£¬Ò»¸ö¿âµÄ×î´ó³ß´çÊǶàÉÙ£¿<br/>
+<a href="#4.5">4.5</a>)´æ´¢Ò»¸öµäÐ͵ÄÎı¾ÎļþÀïµÄÊý¾ÝÐèÒª¶àÉÙ´ÅÅ̿ռ䣿<br/>
+<a href="#4.6">4.6</a>)ΪʲôÎҵIJéѯºÜÂý£¿ÎªÊ²Ã´ÕâЩ²éѯûÓÐÀûÓÃË÷Òý£¿<br/>
+<a href="#4.7">4.7</a>)ÎÒÈçºÎ²ÅÄÜ¿´µ½²éѯÓÅ»¯Æ÷ÊÇÔõÑùÆÀ¹À´¦ÀíÎҵIJéѯµÄ£¿<br/>
+<a href="#4.8">4.8</a>)ÎÒÔõÑù×öÕýÔò±í´ïʽËÑË÷ºÍ´óСдÎ޹صÄÕýÔò±í´ïʽ²éÕÒ£¿ÔõÑùÀûÓÃË÷Òý½øÐдóСдÎ޹زéÕÒ£¿<br/>
+<a href="#4.9">4.9</a>)ÔÚÒ»¸ö²éѯÀÎÒÔõÑù¼ì²âÒ»¸ö×Ö¶ÎÊÇ·ñΪ NULL£¿ÎÒÈçºÎ²ÅÄÜ׼ȷÅÅÐò¶ø²»ÂÛij×Ö¶ÎÊÇ·ñº¬NULLÖµ£¿<br/>
+<a href="#4.10">4.10</a>)¸÷ÖÖ×Ö·ûÀàÐÍÖ®¼äÓÐʲô²»Í¬£¿<br/>
+<a href="#4.11.1">4.11.1</a>)ÎÒÔõÑù´´½¨Ò»¸öÐòÁкÅ/×Ô¶¯µÝÔöµÄ×ֶΣ¿<br/>
+<a href="#4.11.2">4.11.2</a>)ÎÒÈçºÎ»ñµÃÒ»¸ö²åÈëµÄÐòÁкŵÄÖµ£¿<br/>
+<a href="#4.11.3">4.11.3</a>)ʹÓà currval() »áµ¼ÖÂºÍÆäËûÓû§µÄÎÉÂÒÇé¿ö£¨race condition£©Âð£¿<br/>
+<a href="#4.11.4">4.11.4</a>)Ϊʲô²»ÔÚÊÂÎñÒì³£ÖÐÖ¹ºóÖØÓÃÐòÁкÅÄØ£¿ÎªÊ²Ã´ÔÚÐòÁкÅ×ֶεÄȡֵÖдæÔÚ¼ä¶ÏÄØ£¿<br/>
+<a href="#4.12">4.12</a>)ʲôÊÇ OID£¿Ê²Ã´ÊÇ CTID £¿<br/>
+<a href="#4.13">4.13</a>)ΪʲôÎÒÊÕµ½´íÎóÐÅÏ¢¡°<i>ERROR: Memory exhausted in AllocSetAlloc()</i>¡±£¿<br/>
+<a href="#4.14">4.14</a>)ÎÒÈçºÎ²ÅÄÜÖªµÀËùÔËÐÐµÄ PostgreSQL µÄ°æ±¾£¿<br/>
+<a href="#4.15">4.15</a>)ÎÒÈçºÎ´´½¨Ò»¸öȱʡֵÊǵ±Ç°Ê±¼äµÄ×ֶΣ¿<br/>
+<a href="#4.16">4.16</a>)ÈçºÎ½øÐÐ outer join £¨ÍâÁ¬½Ó£©£¿<br/>
+<a href="#4.17">4.17</a>)ÈçºÎʹÓÃÉæ¼°¶à¸öÊý¾Ý¿âµÄ²éѯ£¿<br/>
+<a href="#4.18">4.18</a>)ÈçºÎÈú¯Êý·µ»Ø¶àÐлò¶àÁУ¿<br/>
+<a href="#4.19">4.19</a>)ΪʲôÎÒÔÚʹÓÃPL/PgSQLº¯Êý´æÈ¡ÁÙʱ±íʱ»áÊÕµ½´íÎóÐÅÏ¢¡°relation with OID ##### does not exist¡±£¿<br/>
+<a href="#4.20">4.20</a>)ĿǰÓÐÄÄЩÊý¾Ý¸´ÖÆ·½°¸¿ÉÓã¿<br/>
+</p>
+
+<hr/>
+
+<div><h2>³£¼ûÎÊÌâ</h2></div>
+
+<h4><a name="1.1"></a>1.1)PostgreSQL ÊÇʲô£¿¸ÃÔõô·¢Òô£¿</h4>
+<p>
+PostgreSQL ¶Á×÷ <i>Post-Gres-Q-L</i>£¬ÓÐʱºòÒ²¼ò³ÆÎª<i>Postgres</i> ¡£
+</p>
+<p>
+ PostgreSQL ÊÇÃæÏòÄ¿±êµÄ¹ØÏµÊý¾Ý¿âϵͳ£¬Ëü¾ßÓд«Í³ÉÌÒµÊý¾Ý¿âϵͳµÄËùÓй¦ÄÜ£¬Í¬Ê±ÓÖº¬Óн«ÔÚÏÂÒ»´ú DBMS ϵͳµÄʹÓõÄÔöÇ¿ÌØÐÔ¡£
+ PostgreSQL ÊÇ×ÔÓÉÃâ·ÑµÄ£¬²¢ÇÒËùÓÐÔ´´úÂë¶¼¿ÉÒÔ»ñµÃ¡£
+</p>
+
+<p>
+ PostgreSQL µÄ¿ª·¢¶ÓÎéÖ÷ҪΪ־ԸÕߣ¬ËûÃDZ鲼ÊÀ½ç¸÷µØ²¢Í¨¹ý»¥ÁªÍø½øÐÐÁªÏµ£¬ÕâÊÇÒ»¸öÉçÇø¿ª·¢ÏîÄ¿£¬Ëü²»±»Èκι«Ë¾¿ØÖÆ¡£
+ ÈçÏë¼ÓÈ뿪·¢¶ÓÎ飬Çë²Î¼û¿ª·¢ÈËÔ±³£¼ûÎÊÌ⣨FAQ£©
+ <a href="http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html">http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html</a>
+</p>
+
+
+<h4><a name="1.2"></a>1.2)PostgreSQL µÄ°æÈ¨ÊÇʲô?</h4>
+<p>
+PostgreSQLµÄ·¢²¼×ñ´Ó¾µäµÄBSD°æÈ¨¡£¹ØÓÚÔ´´úÂëµÄÈçºÎʹÓÃûÓÐÈκÎÏÞÖÆ£¬ÎÒÃǺÜϲ»¶ÕâÖÖ·½Ê½²¢ÇÒ»¹Ã»ÓдòËã¸Ä±äËü¡£
+</p>
+<p>
+ÏÂÃæ¾ÍÊÇÎÒÃÇʹÓõÄBSD°æÈ¨ÄÚÈÝ£º
+</p>
+
+<p>
+ ²¿·Ö°æÈ¨£¨c£©1996-2005£¬PostgreSQL È«Çò¿ª·¢Ð¡×飬²¿·Ö°æÈ¨£¨c£©1994-1996 ¼ÓÖÝ´óѧ¶ÊÂ
+</p>
+
+<p>
+ £¨Portions copyright (c) 1996-2005, PostgreSQL Global Development Group Portions Copyright (c) 1994-6 Regents of the University of California£©
+</p>
+
+<p>
+ ÔÊÐíΪÈκÎÄ¿µÄʹÓ㬿½±´£¬Ð޸ĺͷַ¢Õâ¸öÈí¼þºÍËüµÄÎĵµ¶ø²»ÊÕÈ¡ÈκηÑÓã¬
+ ²¢ÇÒÎÞÐëÇ©ÊðÒò´Ë¶ø²úÉúµÄÖ¤Ã÷£¬Ç°ÌáÊÇÉÏÃæµÄ°æÈ¨ÉùÃ÷ºÍ±¾¶ÎÒÔ¼°ÏÂÃæÁ½¶ÎÎÄ×Ö³öÏÖÔÚËùÓп½±´ÖС£
+</p>
+
+<p>
+ £¨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.£©
+</p>
+
+<p>
+ ÔÚÈκÎÇé¿öÏ£¬¼ÓÖÝ´óѧ¶¼²»³Ðµ£ÒòʹÓôËÈí¼þ¼°ÆäÎĵµ¶øµ¼ÖµĶÔÈκε±ÊÂÈ˵ÄÖ±½ÓµÄ£¬
+ ¼ä½ÓµÄ£¬ÌØÊâµÄ£¬¸½¼ÓµÄ»òÕßÏà°é¶øÉúµÄË𻵣¬°üÀ¨ÀûÒæËðʧµÄÔðÈΣ¬¼´Ê¹¼ÓÖÝ´óѧÒѾ½¨ÒéÁËÕâЩËðʧµÄ¿ÉÄÜÐÔʱҲÊÇÈç´Ë¡£
+</p>
+
+<p>
+ £¨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.£©
+</p>
+
+<p>
+ ¼ÓÖÝ´óѧÃ÷È··ÅÆúÈκα£Ö¤£¬°üÀ¨µ«²»¾ÖÏÞÓÚÄ³Ò»ÌØ¶¨ÓÃ;µÄÉÌÒµºÍÀûÒæµÄÒþº¬±£Ö¤¡£
+ ÕâÀïÌṩµÄÕâ·ÝÈí¼þÊÇ»ùÓÚ¡°µ±×÷ÊÇ¡±µÄ»ù´¡µÄ£¬Òò¶ø¼ÓÖÝ´óѧûÓÐÔðÈÎÌṩά»¤£¬Ö§³Ö£¬¸üУ¬ÔöÇ¿»òÕßÐ޸ĵķþÎñ¡£
+</p>
+
+<p>
+ £¨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.£©<br/>
+
+</p>
+
+<h4><a name="1.3"></a>1.3)PostgreSQL ¿ÉÒÔÔËÐÐÔÚÄÄЩ²Ù×÷ϵͳƽ̨ÉÏ£¿</h4>
+
+<p>
+ Ò»°ã˵À´£¬Ò»¸öÏÖ´úµÄ UNIX ¼æÈÝµÄÆ½Ì¨¶¼ÄÜÔËÐÐ PostgreSQL ¡£ÔÚ°²×°Ö¸ÄÏÀïÁгöÁË·¢²¼Ê±¾¹ýÃ÷È·²âÊÔµÄÆ½Ì¨¡£
+</p>
+
+<p>
+ PostgreSQlÒ²¿ÉÒÔÖ±½ÓÔËÐÐÔÚ»ùÓÚ΢ÈíWindows-NTµÄ²Ù×÷ϵͳ£¬ÈçWin2000£¬WinXP ºÍ Win2003£¬ÒÑÖÆ×÷Íê³ÉµÄ°²×°°ü¿É´Ó
+ <a href="http://pgfoundry.org/projects/pginstaller">http://pgfoundry.org/projects/pginstaller</a>ÏÂÔØ£¬»ùÓÚMSDOSµÄWindows²Ù×÷ϵͳ
+ £¨Win95£¬Win98£¬WinMe£©ÐèҪͨ¹ýCygwinÄ£Äâ»·¾³ÔËÐÐPostgreSQL¡£
+</p>
+
+<p>
+ ͬʱҲÓÐÒ»¸öΪNovell Netware 6¿ª·¢µÄ°æ±¾¿É´Ó<a href="http://forge.novell.com"> http://forge.novell.com </a>»ñÈ¡£¬ÎªOS/2¿ª·¢µÄ°æ±¾¿É´Ó
+ <a href="http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgreSQL&stype=all&sort=type&dir=%2F">
+ http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgreSQL&stype=all&sort=type&dir=%2F</a>
+</p>
+
+<h4><a name="1.4"></a>1.4)ÎÒ´ÓÄÄÀïÄܵõ½ PostgreSQL£¿</h4>
+
+<p>
+ ͨ¹ýä¯ÀÀÆ÷¿É´Ó<a href="http://www.postgresql.org/ftp/">http://www.postgresql.org/ftp/</a>ÏÂÔØ£¬Ò²¿Éͨ¹ýFTP£¬´Ó
+ <a href="ftp://ftp.PostgreSQL.org/pub/">ftp://ftp.PostgreSQL.org/pub/</a>Õ¾µãÏÂÔØ¡£
+</p>
+
+
+<h4><a name="1.5"></a>1.5)ÎÒ´ÓÄÄÀïÄܵõ½¶Ô PostgreSQL µÄÖ§³Ö£¿</h4>
+<p>
+ PostgreSQLÉçÇøÍ¨¹ýÓʼþÁбíΪÆä´ó¶àÊýÓû§Ìṩ°ïÖú£¬¼ÓÈëÓʼþÁбíµÄÖ÷Õ¾µãÊÇ<a href="http://www.postgresql.org/community/lists/"> http://www.postgresql.org/community/lists/</a>£¬Ò»°ãÇé¿öÏ£¬ÏȼÓÈë<i>General</i> »ò <i>Bug</i>ÓʼþÁбíÊÇÒ»¸ö½ÏºÃµÄ¿ªÊ¼¡£
+</p>
+
+<p>
+ Ö÷ÒªµÄIRCƵµÀÊÇÔÚFreeNode(<i>irc.freenode.net</i>)µÄ<i>#postgresql</i>£¬ÎªÁËÁ¬ÉÏ´ËÆµµÀ£¬¿ÉÒÔʹÓÃUNIX³ÌÐòirc£¬ÆäÖ¸Áî¸ñʽ£º
+ irc -c '#postgresql' "$USER" irc.freenode.net £¬»òÕßʹÓÃÆäËûIRC¿Í»§¶Ë³ÌÐò¡£ÔÚ´ËÍøÂçÖл¹´æÔÚÒ»¸öPostgreSQLµÄÎ÷°àÑÀƵµÀ(<i>#postgersql-es</i>)ºÍ·¨ÓïÆµµÀ
+ (<i>#postgresql-fr</i>)¡£Í¬ÑùµØ£¬ÔÚEFNETÉÏÒ²ÓÐÒ»¸öPostgreSQLµÄ½»Á÷ƵµÀ¡£
+</p>
+
+<p>
+ ÉÌÒµÖ§³Ö¹«Ë¾µÄÁбíÔÚ<a href=" http://techdocs.postgresql.org/companies.php"> http://techdocs.postgresql.org/companies.php</a>¡£
+</p>
+
+
+
+<h4><a name="1.6"></a>1.6)ÎÒÈçºÎÌá½»Ò»¸öBUG±¨¸æ£¿</h4>
+<p>
+ ¿É·ÃÎÊ <a href="http://www.postgresql.org/support/submitbug">http://www.postgresql.org/support/submitbug</a>£¬ÌîдBugÉϱ¨±í¸ñ¼´¿É¡£
+</p>
+
+<p>
+ ͬÑùÒ²¿É·ÃÎÊftpÕ¾µã<a href="ftp://ftp.PostgreSQL.org/pub/">ftp://ftp.PostgreSQL.org/pub/</a> ¼ì²éÓÐÎÞ¸üеÄPostgreSQL°æ±¾»ò²¹¶¡¡£
+</p>
+
+
+
+<h4><a name="1.7"></a>1.7)×îаæµÄPostgreSQL ÊÇʲô£¿</h4>
+<p>
+ PostgreSQL ×îеİ汾Êǰ汾 8.0.2 £¨Òë×¢£ºÏÖ×îа汾Ϊ8.0.3£©¡£
+</p>
+
+<p>
+ ÎÒÃǼƻ®Ã¿Äê·¢²¼Ò»¸öÖ÷Òª°æ±¾£¬Ã¿¼¸¸öÔ·¢²¼Ò»¸öС°æ±¾¡£
+</p>
+
+
+<h4><a name="1.8"></a>1.8)Äܹ»»ñÈ¡µÄ×îÐÂÎĵµÓÐÄÄЩ£¿</h4>
+
+<p>
+ PostgreSQL°üº¬´óÁ¿µÄÎĵµ£¬Ö÷ÒªÓÐһЩÊֲᣬÊÖ²áÒ³ºÍһЩµÄ²âÊÔÀý×Ó¡£²Î¼û /doc Ŀ¼£¨Òë×¢£ºÓ¦Îª $PGHOME/doc£©¡£
+ Ä㻹¿ÉÒÔÔÚÏßä¯ÀÀ PostgreSQL µÄÊֲᣬÆäµØÖ·ÊÇ£º<a href="http://www.PostgreSQL.org/docs">http://www.PostgreSQL.org/docs</a>¡£
+</p>
+<p>
+ ÓÐÁ½±¾¹ØÓÚ PostgreSQL µÄÊéÔÚÏßÌṩ£¬ÔÚ
+ <a href="http://www.PostgreSQL.org/docs/awbook.html">http://www.PostgreSQL.org/docs/awbook.html</a>
+ ºÍ <a href="http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook/</a> ¡£
+ Ò²ÓдóÁ¿µÄPostgreSQLÊé¼®¿É¹©¹ºÂò£¬ÆäÖÐ×îΪÁ÷ÐеÄÒ»±¾ÊÇÓÉKorry Douglas±àдµÄ¡£ÔÚ
+ <a href="http://techdocs.PostgreSQL.org/techdocs/bookreviews.php">http://techdocs.PostgreSQL.org/techdocs/bookreviews.php</a>ÉÏ
+ ÉÏÓдóÁ¿ÓйØPostgreSQLÊé¼®µÄ¼ò½é¡£
+ ÔÚ <a href="http://techdocs.PostgreSQL.org/">http://techdocs.PostgreSQL.org/</a>ÉÏÊÕ¼¯ÁËÓÐ¹Ø PostgreSQL µÄ´óÁ¿¼¼ÊõÎÄÕ¡£
+</p>
+
+<p>
+ ¿Í»§¶ËµÄÃüÁîÐгÌÐò<i>psql</i>ÓÐһЩÒÔ \d ¿ªÍ·µÄÃüÁ¿ÉÏÔʾ¹ØÓÚÀàÐÍ£¬²Ù×÷·û£¬º¯Êý£¬»ã×ܵȵÄÐÅÏ¢£¬Ê¹Óà \? ¿ÉÒÔÏÔʾËùÓпÉÓõÄÃüÁî¡£
+</p>
+
+<p>
+ ÎÒÃÇµÄ web Õ¾µã°üº¬¸ü¶àµÄÎĵµ¡£
+</p>
+
+<h4><a name="1.9"></a>1.9)ÎÒÈçºÎÁ˽âÒÑÖªµÄ BUG »òÔÝȱµÄ¹¦ÄÜ£¿</h4>
+<p>
+ PostgreSQL Ö§³ÖÒ»¸öÀ©Õ¹Á赀 SQL-92 µÄ×Ó¼¯¡£²ÎÔÄÎÒÃǵÄ<a href="http://www.postgresql.org/docs/faqs.TODO.html">TODO</a> ÁÐ±í£¬»ñȡһ¸öÒÑÖªBug£¬ÔÝȱµÄ¹¦Äܺͽ«À´µÄ¼Æ»®¡£
+</p>
+
+
+<h4><a name="1.10"></a>1.10)ÎÒÓ¦¸ÃÔõÑùѧϰ SQL £¿</h4>
+<p>
+ Ê×ÏÈ¿¼ÂÇÉÏÊöÌáµ½µÄÓëPostgreSQLÏà¹ØµÄÊé¼®£¬ÁíÍâÒ»±¾ÊÇ<i>Teach Yourself SQL in 21 Days, Second Edition</i>£¬
+ ÎÒÃǵÄÐí¶àÓû§Ï²»¶<i>The Practical SQL Handbook</i> Bowman, Judith S., et al., Addison-Wesley£¬ÆäËûµÄÔòϲ»¶
+ <i>The Complete Reference SQL</i>, Groff et al., McGraw-Hill¡£
+</p>
+
+
+<h4><a name="1.11"></a>1.11)ÎÒÓ¦¸ÃÔõÑù¼ÓÈ뿪·¢¶ÓÎ飿</h4>
+<p>
+ Ïê¼û<a href="http://www.postgresql.org/docs/faqs.FAQ_DEV.html"> Developer's FAQ </a>¡£
+</p>
+
+
+<h4><a name="1.12"></a>1.12)PostgreSQL ºÍÆäËûÊý¾Ý¿âϵͳ±ÈÆðÀ´ÈçºÎ£¿</h4>
+<p>
+ÆÀ¼ÛÈí¼þÓкü¸ÖÖ·½·¨£ºÌØÐÔ£¬ÐÔÄÜ£¬¿É¿¿ÐÔ£¬Ö§³ÖºÍ¼Û¸ñ¡£
+</p>
+<dl>
+ <dt><b>ÌØÐÔ</b></dt>
+ <dd>
+ PostgreSQL ÓµÓдóÐÍÉÌÓà DBMS Àï´ó¶àÊýÌØÐÔ£¬
+ ÀýÈ磺ÊÂÎñ£¬×Ó²éѯ£¬´¥·¢Æ÷£¬ÊÓͼ£¬Íâ¼ü²Î¿¼ÍêÕûÐԺ͸´ÔÓµÄËøµÈ¡£
+ ÎÒÃÇ»¹ÓÐһЩËüÃÇûÓеÄÌØÐÔ£¬ÈçÓû§¶¨ÒåÀàÐÍ£¬¼Ì³Ð£¬¹æÔòºÍ¶à°æ±¾²¢ÐпØÖÆÒÔ¼õÉÙËøµÄÕùÓõȡ£<br/>
+ </dd>
+
+ <dt><b>ÐÔÄÜ</b></dt>
+ <dd>
+ PostgreSQL ºÍÆäËûÉÌÓúͿªÔ´µÄÊý¾Ý¿â¾ßÓÐÀàËÆµÄÐÔÄÜ¡£
+ ¶ÔijЩ´¦ÀíËü±È½Ï¿ì£¬¶ÔÆäËûһЩ´¦ÀíËü±È½ÏÂý¡£
+ ÓëÆäËûÊý¾Ý¿âÏà±È£¬ÎÒÃǵÄÐÔÄÜͨ³£ÔÚ +/- 10%Ö®¼ä¡£<br/>
+ </dd>
+
+ <dt><b>¿É¿¿ÐÔ</b></dt>
+ <dd>
+ ÎÒÃÇÖªµÀ DBMS ±ØÐëÊǿɿ¿µÄ£¬·ñÔòËü¾ÍÒ»µãÓö¼Ã»ÓС£
+ ÎÒÃÇŬÁ¦×öµ½·¢²¼¾¹ýÈÏÕæ²âÊԵģ¬Îȶ¨µÄ³ô³æ×îÉٵĴúÂ롣ÿ¸ö°æ±¾ÖÁÉÙÓÐÒ»¸öÔ嵀 beta
+ ²âÊÔʱ¼ä£¬²¢ÇÒÎÒÃǵķ¢²¼ÀúÊ·ÏÔʾÎÒÃÇ¿ÉÒÔÌṩÎȶ¨µÄ£¬Àι̵ģ¬¿ÉÓÃÓÚÉú²úʹÓõİ汾¡£ÎÒÃÇÏàÐÅ
+ ÔÚÕâ·½ÃæÎÒÃÇÓëÆäËûµÄÊý¾Ý¿âÈí¼þÊÇÏ൱µÄ¡£<br/>
+ </dd>
+
+ <dt><b>Ö§³Ö</b></dt>
+ <dd>
+ ÎÒÃǵÄÓʼþÁбíÌṩһ¸ö·Ç³£´óµÄ¿ª·¢ÈËÔ±ºÍÓû§µÄ×éÒÔ°ïÖú½â¾öËùÅöµ½µÄÈκÎÎÊÌâ¡£
+ ÎÒÃDz»Äܱ£Ö¤¿Ï¶¨Äܽâ¾öÎÊÌ⣬Ïà±È֮ϣ¬ÉÌÓà DBMS Ò²²¢²»ÊÇ×ÜÄܹ»Ìṩ½â¾ö·½·¨¡£
+ Ö±½ÓÓ뿪·¢ÈËÔ±£¬Óû§Èº£¬ÊÖ²áºÍÔ´³ÌÐò½Ó´¥Áî PostgreSQL µÄÖ§³Ö±ÈÆäËû DBMS
+ »¹ÒªºÃ¡£»¹ÓÐһЩÉÌÒµÐÔµÄÔ¤°ü×°µÄÖ§³Ö£¬¿ÉÒÔ¸øÌṩ¸øÄÇЩÐèÒªµÄÈË¡££¨²ÎÔÄ FAQ Ìõ¿î 1.5 С½Ú£©<br/>
+ </dd>
+
+ <dt><b>¼Û¸ñ</b></dt>
+ <dd>
+ ÎÒÃǶÔÈκÎÓÃ;¶¼Ãâ·Ñ£¬°üÀ¨ÉÌÓúͷÇÉÌÓÃÄ¿µÄ¡£
+ Äã¿ÉÒÔ²»¼ÓÏÞÖÆµØÏòÄãµÄ²úÆ·Àï¼ÓÈëÎÒÃǵĴúÂ룬³ýÁËÄÇЩÎÒÃÇÔÚÉÏÃæµÄ°æÈ¨ÉùÃ÷ÀïÉùÃ÷µÄ BSD ·ç¸ñµÄ°æÈ¨Íâ¡£
+ </dd>
+
+</dl>
+
+
+<h4><a name="1.13"></a>1.13)Ë¿ØÖÆPostgreSQL £¿</h4>
+<p>
+ Èç¹ûÄãÔÚѰÕÒPostgreSQLµÄÕÆÃÅÈË£¬»òÊÇʲôÖÐÑëίԱ»á£¬»òÊÇʲôËùÊô¹«Ë¾£¬ÄãÖ»ÄÜ·ÅÆúÁË---ÒòΪһ¸öÒ²²»´æÔÚ£¬µ«ÎÒÃǵÄÈ·ÓÐÒ»¸ö
+ ίԱ»áºÍCVS¹ÜÀí×飬µ«ÕâЩ¹¤×÷×éµÄÉèÁ¢Ö÷ÒªÊÇΪÁ˽øÐйÜÀí¹¤×÷¶ø²»ÊǶÔPostgreSQL½øÐпØÖÆ£¬PostgreSQLÏîÄ¿ÊÇÓÉÈκÎÈ˾ù
+ ¿É²Î¼ÓµÄ¿ª·¢ÈËÔ±ÉçÇøºÍËùÓÐÓû§¿ØÖƵģ¬ÄãËùÐèÒª×öµÄ¾ÍÊǼÓÈëÓʼþÁÐ±í£¬²ÎÓëÌÖÂÛ¼´¿É£¨Òª²ÎÓëPostgreSQLµÄ¿ª·¢Ïê¼û
+ <a href="http://www.postgresql.org/docs/faqs.FAQ_DEV.html"> Developer's FAQ </a>»ñÈ¡ÐÅÏ¢£©¡£
+</p>
+
+<hr/>
+
+
+<div> <h2>Óû§¿Í»§¶ËÎÊÌâ</h2> </div>
+
+<h4><a name="2.1"></a>2.1)ÎÒÃÇ¿ÉÒÔÓÃʲôÓïÑÔºÍ PostgreSQL ´ò½»µÀ£¿</h4>
+<p>
+ PostgreSQL(ȱʡÇé¿ö)Ö»°²×°ÓÐCºÍÄÚǶʽCµÄ½Ó¿Ú£¬ÆäËûµÄ½Ó¿Ú¶¼ÊǶÀÁ¢µÄÏîÄ¿£¬Äܹ»·Ö±ðÏÂÔØ£¬ÕâЩ½Ó¿ÚÏîÄ¿¶ÀÁ¢µÄºÃ´¦
+ ÊÇËûÃÇ¿ÉÒÔÓи÷×Եķ¢²¼¼Æ»®ºÍ¸÷×Ô¶ÀÁ¢µÄ¿ª·¢×é¡£
+</p>
+<p>
+ һЩ±à³ÌÓïÑÔÈçPHP¶¼ÓзÃÎÊ PostgreSQL µÄ½Ó¿Ú£¬Perl,TCL,PythonÒÔ¼°ºÜ¶àÆäËûÓïÑԵĽӿÚÔÚ
+ <a href="http://gborg.postgresql.org/"> http://gborg.postgresql.org </a>ÉϵÄ<i>Drivers/Interfaces</i>С½Ú¿ÉÕÒµ½£¬
+ ²¢ÇÒͨ¹ýInternetºÜÈÝÒ×ËÑË÷µ½¡£
+</p>
+
+
+
+<h4><a name="2.2"></a>2.2)ÓÐʲô¹¤¾ß¿ÉÒÔ°Ñ PostgreSQL ÓÃÓÚ Web Ò³Ãæ£¿</h4>
+<p>
+ Ò»¸ö½éÉÜÒÔÊý¾Ý¿âΪºǫ́µÄͦ²»´íµÄÕ¾µãÊÇ£º<a href="http://www.webreview.com">http://www.webreview.com</a>¡£
+</p>
+<p>
+ ¶ÔÓÚ Web ¼¯³É£¬PHP ÊÇÒ»¸ö¼«ºÃµÄ½Ó¿Ú¡£ËüÔÚ£º<a href="http://www.php.net/">http://www.php.net/</a>¡£
+</p>
+<p>
+ ¶ÔÓÚ¸´ÔÓµÄÈÎÎñ£¬ºÜ¶àÈ˲ÉÓà Perl ½Ó¿ÚºÍ CGI.pm »ò mod_perl ¡£
+</p>
+
+
+<h4><a name="2.3"></a>2.3)PostgreSQL ÓµÓÐͼÐÎÓû§½çÃæÂð£¿</h4>
+<p>
+ Êǵģ¬ÔÚ <a href="http://techdocs.postgresql.org/guides/GUITools">http://techdocs.postgresql.org/guides/GUITools</a>ÓÐÒ»¸öÏêϸµÄÁÐ±í¡£
+</p>
+
+
+
+<hr/>
+
+<div> <h2>ϵͳ¹ÜÀíÎÊÌâ</h2> </div>
+
+<h4><a name="3.1"></a>3.1)ÎÒÔõÑùÄÜ°Ñ PostgreSQL ×°ÔÚ /usr/local/pgsql ÒÔÍâµÄµØ·½£¿</h4>
+<p>
+ ÔÚÔËÐÐ configure ʱ¼ÓÉÏ --prefix Ñ¡Ïî¡£
+</p>
+
+
+<h4><a name="3.2"></a>3.2)ÎÒÈçºÎ¿ØÖÆÀ´×ÔÆäËûÖ÷»úµÄÁ¬½Ó£¿</h4>
+<p>
+ ȱʡʱ£¬PostgreSQL Ö»ÔÊÐíͨ¹ý unix ÓòÌ×½Ó×Ö»òTCP/IP·½Ê½ÇÒÀ´×Ô±¾»úµÄÁ¬½Ó¡£
+ ÄãÖ»ÓÐÔÚÐÞ¸ÄÁËÅäÖÃÎļþ<i>postgresql.conf</i>ÖеÄ<i>listen_addresses</i>£¬ÇÒÒ²ÔÚÅäÖÃÎļþ<i>pg_hba.conf</i>Öдò¿ªÁË
+ Ö÷»úΪ»ù´¡£¨ host-based £©µÄÉí·ÝÈÏÖ¤£¬²¢ÖØÐÂÆô¶¯PostgreSQL£¬·ñÔòÆäËû»úÆ÷ÊDz»ÄÜÓëÄãµÄPostgreSQL·þÎñÆ÷Á¬½ÓµÄ¡£
+</p>
+
+
+<h4><a name="3.3"></a>3.3)ÎÒÔõÑùµ÷ÕûÊý¾Ý¿âÒýÇæÒÔ»ñµÃ¸üºÃµÄÐÔÄÜ£¿</h4>
+<p>
+ ÓÐÈý¸öÖ÷Òª·½Ãæ¿ÉÒÔÌáÉýPostgreSQLµÄDZÄÜ¡£
+</p>
+
+<dl>
+ <dt><b>²éѯ·½Ê½µÄ±ä»¯</b></dt>
+ <dd>
+ ÕâÖ÷񻃾¼°Ð޸IJéѯ·½Ê½ÒÔ»ñÈ¡¸üºÃµÄÐÔÄÜ:
+ <ul>
+ <li>´´½¨Ë÷Òý£¬°üÀ¨±í´ïʽºÍ²¿·ÖË÷Òý£»</li>
+ <li>ʹÓÃCOPYÓï¾ä´úÌæ¶à¸öInsertÓï¾ä£»</li>
+ <li>½«¶à¸öSQLÓï¾ä×é³ÉÒ»¸öÊÂÎñÒÔ¼õÉÙÌá½»ÊÂÎñµÄ¿ªÏú£»</li>
+ <li>´ÓÒ»¸öË÷ÒýÖÐÌáÈ¡¶àÌõ¼Ç¼ʱʹÓÃCLUSTER£»</li>
+ <li>´ÓÒ»¸ö²éѯ½á¹ûÖÐÈ¡³ö²¿·Ö¼Ç¼ʱʹÓÃLIMIT£»</li>
+ <li>ʹÓÃÔ¤±àÒëʽ²éѯ£¨Prepared Query)£»</li>
+ <li>ʹÓÃANALYZEÒÔ±£³Ö¾«È·µÄÓÅ»¯Í³¼Æ£»</li>
+ <li>¶¨ÆÚʹÓà VACUUM »ò <i>pg_autovacuum</i></li>
+ <li>½øÐдóÁ¿Êý¾Ý¸ü¸ÄʱÏÈɾ³ýË÷Òý£¨È»ºóÖØ½¨Ë÷Òý£©</li>
+ </ul>
+ </dd>
+
+ <dt><b>·þÎñÆ÷µÄÅäÖÃ</b></dt>
+ <dd>
+ ÅäÖÃÎļþ<i>postgres.conf</i>ÖеĺܶàÉèÖö¼»áÓ°ÏìÐÔÄÜ£¬ËùÓвÎÊýµÄÁбí¿É¼û£º
+ <a href="http://www.postgresql.org/docs/current/static/runtime.html">Administration Guide/Server Run-time Environment/Run-time Configuration</a>£¬
+ ÓйزÎÊýµÄ½âÊͿɼû£º<a href="http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_conf_e.html">
+ http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_conf_e.html </a> ºÍ
+ <a href="http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html">http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html</a>¡£
+ </dd>
+
+ <dt><b>Ó²¼þµÄÑ¡Ôñ</b></dt>
+ <dd>
+ ¼ÆËã»úÓ²¼þ¶ÔÐÔÄܵÄÓ°Ïì¿Éä¯ÀÀ <a href="http://candle.pha.pa.us/main/writings/pgsql/hw_performance/index.html">
+ http://candle.pha.pa.us/main/writings/pgsql/hw_performance/index.html</a> ºÍ
+ <a href="http://www.powerpostgresql.com/PerfList/">http://www.powerpostgresql.com/PerfList/</a>¡£
+ </dd>
+
+</dl>
+
+
+<h4><a name="3.4"></a>3.4)PostgreSQL Àï¿ÉÒÔ»ñµÃʲôÑùµÄµ÷ÊÔÌØÐÔ£¿</h4>
+<p>
+ PostgreSQL ÓкܶàÀàËÆ<i> log_* </i>µÄ·þÎñÆ÷ÅäÖñäÁ¿¿ÉÓÃÓÚ²éѯµÄ´òÓ¡ºÍ½ø³Ìͳ¼Æ£¬¶øÕâЩ¹¤×÷¶Ôµ÷ÊÔºÍÐÔÄܲâÊÔºÜÓаïÖú¡£
+</p>
+
+
+
+<h4><a name="3.5"></a>3.5)ΪʲôÔÚÊÔͼÁ¬½ÓʱÊÕµ½¡°Sorry, too many clients¡±ÏûÏ¢£¿</h4>
+<p>
+ Õâ±íʾÄãÒѴﵽȱʡ100¸ö²¢·¢ºǫ́½ø³ÌÊýµÄÏÞÖÆ£¬ÄãÐèҪͨ¹ýÐÞ¸Ä<i>postgresql.conf</i>ÎļþÖеÄ<i>max_connections</i>ÖµÀ´
+ Ôö¼ÓpostmasterµÄºǫ́²¢·¢´¦ÀíÊý£¬Ð޸ĺóÐèÖØÐÂÆô¶¯<i>postmaster</i>¡£
+</p>
+
+
+<h4><a name="3.6"></a>3.6)ΪʲôҪÔÚÉý¼¶ PostgreSQL Ö÷Òª·¢²¼°æ±¾Ê±×ö dump ºÍ restore £¿</h4>
+<p>
+ PostgreSQL ¿ª·¢×é¶Ôÿ´ÎСµÄÉý¼¶½ö×öÁ˽ÏÉÙµÄÐ޸ģ¬Òò´Ë´Ó 7.4.0 Éý¼¶µ½ 7.4.1 ²»ÐèÒª dump ºÍ restore¡£
+ µ«ÊÇÖ÷ÒªµÄÉý¼¶£¨ÀýÈç´Ó 7.3 µ½ 7.4£©Í¨³£»áÐÞ¸Äϵͳ±íºÍÊý¾Ý±íµÄÄÚ²¿¸ñʽ¡£
+ ÕâЩ±ä»¯Ò»°ã±È½Ï¸´ÔÓ£¬Òò´ËÎÒÃDz»Î¬Êý¾ÝÎļþµÄÏòºó¼æÈÝ¡£
+ dump ½«Êý¾Ý°´ÕÕͨÓõĸñʽÊä³ö£¬Ëæºó¿ÉÒÔ±»ÖØÐ¼ÓÔØ²¢Ê¹ÓÃеÄÄÚ²¿¸ñʽ¡£
+</p>
+
+<h4><a name="3.7"></a>3.7)(ʹÓÃPostgreSQL)ÎÒÐèҪʹÓÃʲô¼ÆËã»úÓ²¼þ £¿</h4>
+<p>
+ ÓÉÓÚ¼ÆËã»úÓ²¼þ´ó¶àÊýÊǼæÈݵģ¬ÈËÃÇ×ÜÊÇÇãÏòÓÚÏàÐÅËùÓмÆËã»úÓ²¼þÖÊÁ¿Ò²ÊÇÏàͬµÄ¡£ÊÂʵÉϲ»ÊÇ£¬
+ ECC RAM£¨´øÆæÅ¼Ð£ÑéµÄÄڴ棩£¬SCSI £¨Ó²ÅÌ£©ºÍÓÅÖʵÄÖ÷°å±ÈһЩ±ãÒË»õÒª¸ü¼Ó¿É¿¿ÇÒ¾ßÓиüºÃµÄÐÔÄÜ¡£PostgreSQL¼¸ºõ¿ÉÒÔÔËÐÐÔÚÈκÎÓ²¼þÉÏ£¬
+ µ«Èç¹û¿É¿¿ÐÔºÍÐÔÄܶÔÄãµÄϵͳºÜÖØÒª£¬Äã¾ÍÐèÒªÈ«ÃæµÄÑо¿Ò»ÏÂÄãµÄÓ²¼þÅäÖÃÁË¡£ÔÚÎÒÃǵÄÓʼþÁбíÉÏÒ²ÓйØÓÚ
+ Ó²¼þÅäÖúÍÐԼ۱ȵÄÌÖÂÛ¡£
+</p>
+
+
+<hr/>
+
+<div><h2>²Ù×÷ÎÊÌâ</h2> </div>
+
+
+<h4><a name="4.1"></a>4.1)ÈçºÎֻѡÔñÒ»¸ö²éѯ½á¹ûµÄÍ·¼¸ÐУ¿»òÊÇËæ»úµÄÒ»ÐУ¿</h4>
+<p>
+ Èç¹ûÄãÖ»ÊÇÒªÌáÈ¡¼¸ÐÐÊý¾Ý£¬²¢ÇÒÄãÔÚÖ´ÐвéѯÖÐÖªµÀÈ·ÇеÄÐÐÊý£¬Äã¿ÉÒÔʹÓÃLIMIT¹¦ÄÜ¡£
+ Èç¹ûÓÐÒ»¸öË÷ÒýÓë <i> ORDER BY</i>ÖеÄÌõ¼þÆ¥Å䣬PostgreSQL ¿ÉÄܾÍÖ»´¦ÀíÒªÇóµÄÍ·¼¸Ìõ¼Ç¼£¬
+ £¨·ñÔò½«¶ÔÕû¸ö²éѯ½øÐд¦ÀíÖ±µ½Éú³ÉÐèÒªµÄÐУ©¡£Èç¹ûÔÚÖ´Ðвéѯ¹¦ÄÜʱ²»ÖªµÀÈ·ÇеļǼÊý£¬
+ ¿ÉʹÓÃÓαê(cursor)ºÍFETCH¹¦ÄÜ¡£
+</p>
+<p>
+ ¿ÉʹÓÃÒÔÏ·½·¨ÌáȡһÐÐËæ»ú¼Ç¼µÄ£º
+</p>
+<pre>
+ SELECT cols
+ FROM tab
+ ORDER BY random()
+ LIMIT 1 ;
+</pre>
+
+
+
+<h4><a name="4.2"></a>4.2)ÈçºÎ²é¿´±í¡¢Ë÷Òý¡¢Êý¾Ý¿âÒÔ¼°Óû§µÄ¶¨Ò壿ÈçºÎ²é¿´<i>psql</i>ÀïÓõ½µÄ²éѯָÁî²¢ÏÔʾËüÃÇ£¿</h4>
+<p>
+ ÔÚ<i>psql</i>ÖÐʹÓà \dt ÃüÁîÀ´ÏÔʾÊý¾Ý±íµÄ¶¨Ò壬ҪÁ˽â<i>psql</i>ÖеÄÍêÕûÃüÁîÁбí¿ÉʹÓÃ\? £¬ÁíÍ⣬ÄãÒ²¿ÉÒÔÔĶÁ <i>psql</i> µÄÔ´´úÂë
+ Îļþ<i>pgsql/src/bin/psql/describe.c</i>£¬Ëü°üÀ¨ÎªÉú³É<i>psql</i>·´Ð±¸ÜÃüÁîµÄÊä³öµÄËùÓÐ SQL ÃüÁî¡£Ä㻹¿ÉÒÔ´ø <i>-E</i> Ñ¡ÏîÆô¶¯ <i>psql</i>£¬
+ ÕâÑùËü½«´òÓ¡³öÖ´ÐÐÄãÔÚ<i>psql</i>ÖÐËù¸ø³öµÄÃüÁîµÄÄÚ²¿Êµ¼ÊʹÓõÄSQL²éѯ¡£PostgreSQLÒ²ÌṩÁËÒ»¸ö¼æÈÝSQLµÄINFORMATION SCHEMA½Ó¿Ú£¬
+ Äã¿ÉÒÔ´ÓÕâÀï»ñÈ¡¹ØÓÚÊý¾Ý¿âµÄÐÅÏ¢¡£
+</p>
+<p>
+ ÔÚϵͳÖÐÓÐһЩÒÔ<i>pg_</i> ´òÍ·µÄϵͳ±íÒ²ÃèÊöÁ˱íµÄ¶¨Òå¡£
+</p>
+<p>
+ ʹÓà <i>psql -l</i> Ö¸Áî¿ÉÒÔÁгöËùÓеÄÊý¾Ý¿â¡£
+</p>
+<p>
+ Ò²¿ÉÒÔä¯ÀÀһϠ<i>pgsql/src/tutorial/syscat.source</i>Îļþ£¬ËüÁоÙÁ˺ܶà¿É´ÓÊý¾Ý¿âϵͳ±íÖлñÈ¡ÐÅÏ¢µÄSELECTÓï·¨¡£
+</p>
+
+
+<h4><a name="4.3"></a>4.3)ÈçºÎ¸ü¸ÄÒ»¸ö×ֶεÄÊý¾ÝÀàÐÍ£¿</h4>
+<p>
+ ÔÚ8.0°æ±¾Àï¸ü¸ÄÒ»¸ö×ֶεÄÊý¾ÝÀàÐͺÜÈÝÒ×£¬¿ÉʹÓà ALTER TABLE ALTER COLUMN TYPE ¡£
+</p>
+<p>
+ ÔÚÒÔǰµÄ°æ±¾ÖУ¬¿ÉÒÔÕâÑù×ö£º
+</p>
+<pre>
+ 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;
+</pre>
+<p>
+ ÄãÈ»ºó¿ÉÒÔʹÓÃ<i>VACUUM FULL tab </i>Ö¸ÁîÀ´Ê¹ÏµÍ³ÊÕ»ØÎÞЧÊý¾ÝËùÕ¼ÓõĿռ䡣
+</p>
+
+<h4><a name="4.4"></a>4.4)Ò»ÐмǼ£¬Ò»¸ö±í£¬Ò»¸ö¿âµÄ×î´ó³ß´çÊǶàÉÙ£¿</h4>
+<p>
+ ÏÂÃæÊÇһЩÏÞÖÆ£º
+</p>
+<blockquote>
+ <table>
+ <tbody>
+ <tr><td>Ò»¸öÊý¾Ý¿â×î´ó³ß´ç£¿</td><td>ÎÞÏÞÖÆ£¨ÒÑ´æÔÚÓÐ 32TB µÄÊý¾Ý¿â£©</td></tr>
+ <tr><td>Ò»¸ö±íµÄ×î´ó³ß´ç£¿</td><td>32 TB</td></tr>
+ <tr><td>Ò»ÐмǼµÄ×î´ó³ß´ç£¿</td><td>1.6 TB</td></tr>
+ <tr><td>Ò»¸ö×ֶεÄ×î´ó³ß´ç?</td><td>1 GB</td></tr>
+ <tr><td>Ò»¸ö±íÀï×î´óÐÐÊý£¿</td><td>ÎÞÏÞÖÆ</td></tr>
+ <tr><td>Ò»¸ö±íÀï×î´óÁÐÊý£¿</td><td>250-1600 £¨ÓëÁÐÀàÐÍÓйأ©</td></tr>
+ <tr><td>Ò»¸ö±íÀïµÄ×î´óË÷ÒýÊýÁ¿£¿</td><td>ÎÞÏÞÖÆ</td></tr>
+ </tbody>
+</table>
+</blockquote>
+
+<p>
+ µ±È»£¬Êµ¼ÊÉÏûÓÐÕæÕýµÄÎÞÏÞÖÆ£¬»¹ÊÇÒªÊÜ¿ÉÓôÅÅ̿ռ䡢¿ÉÓÃÄÚ´æ/½»»»ÇøµÄÖÆÔ¼¡£
+ ÊÂʵÉÏ£¬µ±ÕâЩÊýÖµ±äµÃÒì³£µØ´óʱ£¬ÏµÍ³ÐÔÄÜÒ²»áÊܴܺóÓ°Ïì¡£
+</p>
+
+<p>
+ ±íµÄ×î´ó³ß´ç 32 TB ²»ÐèÒª²Ù×÷ϵͳ¶Ô´óÎļþµÄÖ§³Ö¡£´ó±íÓöà¸ö 1 GB µÄÎļþ´æ´¢£¬Òò´ËÎļþϵͳ³ß´çµÄÏÞÖÆÊDz»ÖØÒªµÄ¡£
+</p>
+<p>
+ Èç¹ûȱʡµÄ¿é´óСÔö³¤µ½ 32K £¬×î´óµÄ±í³ß´çºÍ×î´óÁÐÊý»¹¿ÉÒÔÔö¼Óµ½Ëı¶¡£
+</p>
+
+
+<h4><a name="4.5"></a>4.5)´æ´¢Ò»¸öµäÐ͵ÄÎı¾ÎļþÀïµÄÊý¾ÝÐèÒª¶àÉÙ´ÅÅ̿ռ䣿</h4>
+<p>
+ Ò»¸ö Postgres Êý¾Ý¿â£¨´æ´¢Ò»¸öÎı¾Îļþ£©ËùÕ¼ÓõĿռä×î¶à¿ÉÄÜÐèÒªÏ൱ÓÚÕâ¸öÎı¾Îļþ×ÔÉí´óС5±¶µÄ´ÅÅ̿ռ䡣
+</p>
+<p>
+ ÀýÈ磬¼ÙÉèÓÐÒ»¸ö 100,000 ÐеÄÎļþ£¬Ã¿ÐÐÓÐÒ»¸öÕûÊýºÍÒ»¸öÎı¾ÃèÊö¡£
+ ¼ÙÉèÎı¾´®µÄƽ¾ù³¤¶ÈΪ20×Ö½Ú¡£Îı¾ÎļþÕ¼Óà 2.8 MB¡£´æ·ÅÕâЩÊý¾ÝµÄ PostgreSQL Êý¾Ý¿âÎļþ´óÔ¼ÊÇ 6.4 MB:
+</p>
+<pre>
+ 32 ×Ö½Ú: ÿÐеÄÍ·£¨¹À¼ÆÖµ£©
+ 24 ×Ö½Ú: Ò»¸öÕûÊýÐÍ×ֶκÍÒ»¸öÎı¾ÐÍ×Ö¶Î
+ + 4 ×Ö½Ú: Ò³ÃæÄÚÖ¸ÏòÔª×éµÄÖ¸Õë
+ ----------------------------------------
+ 60 ×Ö½ÚÿÐÐ
+
+ PostgreSQL Êý¾ÝÒ³µÄ´óСÊÇ 8192 ×Ö½Ú (8 KB)£¬Ôò£º
+
+ 8192 ×Ö½Úÿҳ
+ ------------------- = 136 ÐÐ/Êý¾ÝÒ³£¨ÏòÏÂÈ¡Õû£©
+ 60 ×Ö½ÚÿÐÐ
+
+ 100000 Êý¾ÝÐÐ
+ -------------------- = 735 Êý¾ÝÒ³£¨ÏòÉÏÈ¡Õû£©
+ 128 ÐÐÿҳ
+
+ 735 Êý¾ÝÒ³ * 8192 ×Ö½Ú/Ò³ = 6,021,120 ×Ö½Ú£¨6 MB£©
+</pre>
+
+<p>
+ Ë÷Òý²»ÐèÒªÕâô¶àµÄ¶îÍâÏûºÄ£¬µ«Ò²È·Êµ°üÀ¨±»Ë÷ÒýµÄÊý¾Ý£¬Òò´ËËüÃÇÒ²¿ÉÄܴܺó¡£
+</p>
+<p>
+ ¿ÕÖµ<i>NULL</i>´æ·ÅÔÚλͼÖУ¬Òò´ËÕ¼ÓúÜÉٵĿռ䡣
+</p>
+
+<h4><a name="4.6"></a>4.6)ΪʲôÎҵIJéѯºÜÂý£¿ÎªÊ²Ã´ÕâЩ²éѯûÓÐÀûÓÃË÷Òý£¿</h4>
+<p>
+ ²¢·Çÿ¸ö²éѯ¶¼»á×Ô¶¯Ê¹ÓÃË÷Òý¡£Ö»ÓÐÔÚ±íµÄ´óС³¬¹ýÒ»¸ö×îСֵ£¬²¢ÇÒ²éѯֻ»áÑ¡ÖбíÖнÏС±ÈÀýµÄ¼Ç¼ʱ²Å»á²ÉÓÃË÷Òý¡£
+ ÕâÊÇÒòΪË÷ÒýɨÃèÒýÆðµÄËæ¼´´ÅÅÌ´æÈ¡¿ÉÄܱÈÖ±½ÓµØ¶ÁÈ¡±í£¨Ë³ÐòɨÃ裩¸üÂý¡£
+</p>
+<p>
+ ΪÁËÅжÏÊÇ·ñʹÓÃË÷Òý£¬PostgreSQL±ØÐë»ñµÃÓйرíµÄͳ¼ÆÖµ¡£ÕâЩͳ¼ÆÖµ¿ÉÒÔʹÓà VACUUM ANALYZE£¬»ò ANALYZE »ñµÃ¡£
+ ʹÓÃͳ¼ÆÖµ£¬ÓÅ»¯Æ÷ÖªµÀ±íÖÐÓжàÉÙÐУ¬¾ÍÄܹ»¸üºÃµØÅжÏÊÇ·ñÀûÓÃË÷Òý¡£
+ ͳ¼ÆÖµ¶ÔÈ·¶¨ÓÅ»¯µÄÁ¬½Ó˳ÐòºÍÁ¬½Ó·½·¨Ò²ºÜÓÐÓá£ÔÚ±íµÄÄÚÈÝ·¢Éú±ä»¯Ê±£¬Ó¦¶¨ÆÚ½øÐÐͳ¼ÆÖµµÄ¸üÐÂÊÕ¼¯¡£
+</p>
+<p>
+ Ë÷Òýͨ³£²»ÓÃÓÚ ORDER BY »òÖ´ÐÐÁ¬½Ó¡£¶ÔÒ»¸ö´ó±íµÄÒ»´Î˳ÐòɨÃ裬ÔÙ×öÒ»¸öÏÔʽµÄÅÅÐòͨ³£±ÈË÷ÒýɨÃèÒª¿ì¡£
+</p>
+
+<p>
+ µ«ÊÇ£¬ÔÚ LIMIT ºÍ ORDER BY ½áºÏʹÓÃʱ¾³£»áʹÓÃË÷Òý£¬ÒòΪÕâÖ»»á·µ»Ø±íµÄһС²¿·Ö¡£
+ ʵ¼ÊÉÏ£¬ËäÈ» MAX() ºÍ MIN() ²¢²»Ê¹ÓÃË÷Òý£¬Í¨¹ý¶Ô
+ ORDER BY ºÍ LLIMIT ʹÓÃË÷ÒýÈ¡µÃ×î´óÖµºÍ×îСֵҲÊÇ¿ÉÒԵģº
+</p>
+<pre>
+ SELECT col
+ FROM tab
+ ORDER BY col [ DESC ]
+ LIMIT 1;
+</pre>
+<p>
+ Èç¹ûÄãÈ·ÐÅPostgreSQLµÄÓÅ»¯Æ÷ʹÓÃ˳ÐòɨÃèÊDz»ÕýÈ·µÄ£¬Äã¿ÉÒÔʹÓÃ<code>SET enable_seqscan TO 'off'</code>Ö¸Á
+ È»ºóÔÙ´ÎÔËÐвéѯ£¬Äã¾Í¿ÉÒÔ¿´³öʹÓÃÒ»¸öË÷ÒýɨÃèÊÇ·ñȷʵҪ¿ìһЩ¡£
+</p>
+
+<p>
+ µ±Ê¹ÓÃͨÅä·û²Ù×÷£¬ÀýÈç <i>LIKE</i> »ò <i>~</i> ʱ£¬Ë÷ÒýÖ»ÄÜÔÚÌØ¶¨µÄÇé¿öÏÂʹÓãº
+</p>
+<ul>
+ <li>×Ö·û´®µÄ¿ªÊ¼²¿·Ö±ØÐëÊÇÆÕͨ×Ö·û´®£¬Ò²¾ÍÊÇ˵£º
+ <ul>
+ <li> <i>LIKE</i> ģʽ²»ÄÜÒÔ <i>%</i> ´òÍ·¡£</li>
+ <li> <i>~</i> £¨ÕýÔò±í´ïʽ£©Ä£Ê½±ØÐëÒÔ <i>^</i> ´òÍ·¡£</li>
+ </ul>
+ </li>
+ <li>×Ö·û´®²»ÄÜÒÔÆ¥Åä¶à¸ö×Ö·ûµÄģʽÀà´òÍ·£¬ÀýÈç [a-e]¡£</li>
+ <li>´óСдÎ޹صIJéÕÒ£¬Èç ILIKE ºÍ ~* µÈ²»Ê¹ÓÃË÷Òý£¬µ«¿ÉÒÔÓà <a href="#4.8">4.8</a> ½ÚÃèÊöµÄº¯ÊýË÷Òý¡£</li>
+ <li>ÔÚ×ö initdb ʱ±ØÐë²ÉÓÃȱʡµÄ±¾µØÉèÖà C locale£¬ÒòΪϵͳ²»¿ÉÄÜÖªµÀÔÚ·ÇC localeÇé¿öʱÏÂÒ»¸ö×î´ó×Ö·ûÊÇʲô¡£
+ ÔÚÕâÖÖÇé¿öÏ£¬Äã¿ÉÒÔ´´½¨Ò»¸öÌØÊâµÄ<code>text_pattern_ops</code>Ë÷ÒýÀ´ÓÃÓÚ<small>LIKE</small>µÄË÷Òý¡£
+ </li>
+</ul>
+<p>
+ ÔÚ8.0֮ǰµÄ°æ±¾ÖУ¬³ý·ÇÒª²éѯµÄÊý¾ÝÀàÐͺÍË÷ÒýµÄÊý¾ÝÀàÐÍÏàÆ¥Å䣬·ñÔòË÷Òý¾³£ÊÇδ±»Óõ½£¬ÌرðÊǶÔint2,int8ºÍÊýÖµÐ͵ÄË÷Òý¡£
+</p>
+
+<h4><a name="4.7"></a>4.7)ÎÒÈçºÎ²ÅÄÜ¿´µ½²éѯÓÅ»¯Æ÷ÊÇÔõÑùÆÀ¹À´¦ÀíÎҵIJéѯ£¿</h4>
+<p>
+ ²Î¿¼ <small>EXPLAIN</small> ÊÖ²áÒ³¡£
+</p>
+
+<h4><a name="4.8"></a>4.8)ÎÒÔõÑù×öÕýÔò±í´ïʽËÑË÷ºÍ´óСдÎ޹صÄÕýÔò±í´ïʽ²éÕÒ£¿ÔõÑùÀûÓÃË÷Òý½øÐдóСдÎ޹زéÕÒ£¿</h4>
+<p>
+ ²Ù×÷·û <i> ~ </i> ´¦ÀíÕýÔò±í´ïʽƥÅ䣬¶ø <i>~*</i> ´¦Àí´óСдÎ޹صÄÕýÔò±í´ïʽƥÅä¡£´óдЩÎÞ¹ØµÄ LIKE ±äÖÖ³ÉΪ ILIKE¡£
+</p>
+<p>
+ ´óСдÎ޹صĵÈʽ±È½Ïͨ³£Ð´×ö£º
+</p>
+<pre> SELECT *
+ FROM tab
+ WHERE lower(col) = 'abc';
+</pre>
+<p>
+ ÕâÑù½«²»»áʹÓñê×¼µÄË÷Òý¡£µ«ÊÇ¿ÉÒÔ´´½¨Ò»¸ö¿É±»ÀûÓõĺ¯ÊýË÷Òý:
+</p>
+<pre> CREATE INDEX tabindex ON tab (lower(col));
+</pre>
+
+<h4><a name="4.9"></a>4.9)ÔÚÒ»¸ö²éѯÀÎÒÔõÑù¼ì²âÒ»¸ö×Ö¶ÎÊÇ·ñΪ <i>NULL</i> £¿ÎÒÈçºÎ²ÅÄÜ׼ȷÅÅÐò¶ø²»ÂÛij×Ö¶ÎÊÇ·ñº¬ <i>NULL</i> Öµ£¿</h4>
+<p>
+ Óà <small>IS NULL</small> ºÍ <small>IS NOT NULL</small> ²âÊÔÕâ¸ö×ֶΣ¬¾ßÌå·½·¨ÈçÏ£º
+</p>
+<pre> SELECT *
+ FROM tab
+ WHERE col IS NULL;
+</pre>
+
+<p>ΪÁËÄܶԺ¬ <small>NULL</small>×Ö¶ÎÅÅÐò£¬¿ÉÔÚ <small>ORDER BY</small> Ìõ¼þÖÐʹÓà <small>IS NULL</small>ºÍ
+ <small>IS NOT NULL</small> ÐÞÊηû£¬Ìõ¼þÎªÕæ <i>true</i> ½«±ÈÌõ¼þΪ¼Ù<i>false</i> ÅÅÔÚÇ°Ãæ£¬ÏÂÃæµÄÀý×ӾͻὫº¬
+ NULL µÄ¼Ç¼ÅÅÔÚ½á¹ûµÄÉÏÃæ²¿·Ö£º
+</p>
+<pre> SELECT *
+ FROM tab
+ ORDER BY (col IS NOT NULL)
+</pre>
+
+<h4><a name="4.10"></a>4.10)¸÷ÖÖ×Ö·ûÀàÐÍÖ®¼äÓÐʲô²»Í¬£¿</h4>
+<blockquote>
+ <table>
+ <tbody>
+ <tr><th>ÀàÐÍ</th><th>ÄÚ²¿Ãû³Æ</th><th>˵Ã÷</th></tr>
+ <tr><td>VARCHAR(n)</td><td>varchar</td><td>Ö¸¶¨ÁË×î´ó³¤¶È£¬±ä³¤×Ö·û´®£¬²»×㶨Ò峤¶ÈµÄ²¿·Ö²»²¹Æë</td></tr>
+ <tr><td>CHAR(n)</td><td>bpchar</td><td>¶¨³¤×Ö·û´®£¬Êµ¼ÊÊý¾Ý²»×㶨Ò峤¶Èʱ£¬ÒÔ¿Õ¸ñ²¹Æë</td></tr>
+ <tr><td>TEXT</td><td>text</td><td>ûÓÐÌØ±ðµÄÉÏÏÞÏÞÖÆ£¨½öÊÜÐеÄ×î´ó³¤¶ÈÏÞÖÆ£©</td></tr>
+ <tr><td>BYTEA</td><td>bytea</td><td>±ä³¤×Ö½ÚÐòÁУ¨Ê¹ÓÃNULLÒ²ÊÇÔÊÐíµÄ£©</td></tr>
+ <tr><td>"char"</td><td>char</td><td>Ò»¸ö×Ö·û</td></tr>
+ </tbody>
+ </table>
+</blockquote>
+
+<p>
+ ÔÚϵͳ±íºÍÔÚһЩ´íÎóÐÅÏ¢ÀïÄ㽫¿´µ½ÄÚ²¿Ãû³Æ¡£
+</p>
+<p>
+ ÉÏÃæËùÁеÄǰËÄÖÖÀàÐÍÊÇ"varlena"£¨±ä³¤£©ÀàÐÍ£¨Ò²¾ÍÊÇ˵£¬¿ªÍ·µÄËĸö×Ö½ÚÊdz¤¶È£¬ºóÃæ²ÅÊÇÊý¾Ý£©¡£
+ ÓÚÊÇʵ¼ÊÕ¼ÓõĿռä±ÈÉùÃ÷µÄ´óСҪ¶àһЩ¡£
+ È»¶øÕâЩÀàÐͶ¼¿ÉÒÔ±»Ñ¹Ëõ´æ´¢£¬Ò²¿ÉÒÔÓà TOAST ÍÑ»ú´æ´¢£¬Òò´Ë´ÅÅ̿ռäÒ²¿ÉÄܱÈÔ¤ÏëµÄÒªÉÙ¡£
+</p>
+<p>
+ <small>VARCHAR(n)</small> ÔÚ´æ´¢ÏÞÖÆÁË×î´ó³¤¶ÈµÄ±ä³¤×Ö·û´®ÊÇ×îºÃµÄ¡£
+ <small>TEXT</small> ÊÊÓÃÓÚ´æ´¢×î´ó¿É´ï 1G×óÓÒµ«Î´¶¨ÒåÏÞÖÆ³¤¶ÈµÄ×Ö·û´®¡£
+</p>
+<p>
+ <small>CHAR(n)</small> ×îÊʺÏÓÚ´æ´¢³¤¶ÈÏàͬµÄ×Ö·û´®¡£ <small>CHAR(n)</small>»á¸ù¾ÝËù¸ø¶¨µÄ×ֶ㤶ÈÒÔ¿Õ¸ñ²¹×㣨²»×ãµÄ×Ö¶ÎÄÚÈÝ£©£¬
+ ¶ø <small>VARCHAR(n)</small> Ö»´æ´¢Ëù¸ø¶¨µÄÊý¾ÝÄÚÈÝ¡£
+ <small>BYTEA</small> ÓÃÓÚ´æ´¢¶þ½øÖÆÊý¾Ý£¬ÓÈÆäÊǰüº¬ NULL ×Ö½ÚµÄÖµ¡£ÕâЩÀàÐ;ßÓÐÏàËÆµÄÐÔÄÜÌØÐÔ¡£
+</p>
+
+
+
+<h4><a name="4.11.1"></a>4.11.1)ÎÒÔõÑù´´½¨Ò»¸öÐòÁкÅ/×Ô¶¯µÝÔöµÄ×ֶΣ¿</h4>
+<p>
+ PostgreSQL Ö§³Ö SERIAL Êý¾ÝÀàÐÍ¡£ËüÔÚ×Ö¶ÎÉÏ×Ô¶¯´´½¨Ò»¸öÐòÁкÍË÷Òý¡£ÀýÈ磺
+</p>
+<pre>
+ CREATE TABLE person (
+ id SERIAL,
+ name TEXT
+ );
+</pre>
+<p>
+ »á×Ô¶¯×ª»»Îª£º
+</p>
+<pre>
+ CREATE SEQUENCE person_id_seq;
+ CREATE TABLE person (
+ id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
+ name TEXT
+ );
+</pre>
+<p>
+ ²Î¿¼ create_sequence ÊÖ²áÒ³»ñÈ¡¹ØÓÚÐòÁеĸü¶àÐÅÏ¢¡£
+</p>
+
+
+<h4><a name="4.11.2"></a>4.11.2)ÎÒÈçºÎ»ñµÃÒ»¸ö²åÈëµÄÐòÁкŵÄÖµ£¿</h4>
+<p>
+ Ò»ÖÖ·½·¨ÊÇÔÚ²åÈë֮ǰÏÈÓú¯Êý nextval() ´ÓÐòÁжÔÏóÀï¼ìË÷³öÏÂÒ»¸ö SERIAL Öµ£¬È»ºóÔÙÏÔʽ²åÈ롣ʹÓÃ
+ <a href="#4.11.1"> 4.11.1</a> ÀïµÄÀý±í£¬¿ÉÓÃαÂëÕâÑùÃèÊö£º
+</p>
+<pre>
+ new_id = execute("SELECT nextval('person_id_seq')");
+ execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
+</pre>
+<p>
+ ÕâÑù»¹ÄÜÔÚÆäËû²éѯÖÐʹÓôæ·ÅÔÚ new_id ÀïµÄÐÂÖµ£¨ÀýÈ磬×÷Ϊ person ±íµÄÍâ¼ü£©¡£
+ ×¢Òâ×Ô¶¯´´½¨µÄ SEQUENCE ¶ÔÏóµÄÃû³Æ½«»áÊÇ <<i>table</i>>_<<i>serialcolumn</i>>_<i>seq</i>£¬
+ ÕâÀï table ºÍ serialcolumn ·Ö±ðÊÇÄãµÄ±íµÄÃû³ÆºÍÄãµÄ SERIAL ×ֶεÄÃû³Æ¡£
+</p>
+<p>
+ ÀàËÆµÄ£¬ÔÚ SERIAL ¶ÔÏóȱʡ²åÈëºóÄã¿ÉÒÔÓú¯Êý currval() ¼ìË÷¸Õ¸³ÖµµÄ SERIAL Öµ£¬ÀýÈ磺
+</p>
+<pre>
+ execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
+ new_id = execute("SELECT currval('person_id_seq')");
+</pre>
+
+<h4><a name="4.11.3"></a>4.11.3)ʹÓà <i>currval()</i> »áµ¼ÖÂºÍÆäËûÓû§µÄ³åÍ»Çé¿ö£¨race condition£©Âð£¿</h4>
+<p>
+ ²»»á¡£<i>currval()</i> ·µ»ØµÄÊÇÄã±¾´Î»á»°½ø³ÌËù¸³µÄÖµ¶ø²»ÊÇËùÓÐÓû§µÄµ±Ç°Öµ¡£<br/>
+</p>
+
+<h4><a name="4.11.4"></a>4.11.4)Ϊʲô²»ÔÚÊÂÎñÒì³£ÖÐÖ¹ºóÖØÓÃÐòÁкÅÄØ£¿ÎªÊ²Ã´ÔÚÐòÁкÅ×ֶεÄȡֵÖдæÔÚ¼ä¶ÏÄØ£¿</h4>
+<p>
+ ΪÁËÌá¸ß²¢·¢ÐÔ£¬ÐòÁкÅÔÚÐèÒªµÄʱºò¸³ÓèÕýÔÚÔËÐеÄÊÂÎñ£¬²¢ÇÒÔÚÊÂÎñ½áÊøÖ®Ç°²»½øÐÐËø¶¨£¬
+ Õâ¾Í»áµ¼ÖÂÒì³£ÖÐÖ¹µÄÊÂÎñºó£¬ÐòÁкŻá³öÏÖ¼ä¸ô¡£
+</p>
+
+<h4><br/><a name="4.12"></a>4.12)ʲôÊÇ <small>OID</small> £¿Ê²Ã´ÊÇ <small>CTID</small> £¿</h4>
+<p>
+ PostgreSQL Àï´´½¨µÄÿһÐмǼ¶¼»á»ñµÃÒ»¸öΨһµÄ<small>OID</small>£¬³ý·ÇÔÚ´´½¨±íʱʹÓÃ<small>WITHOUT OIDS</small>Ñ¡Ïî¡£
+ <small>OID</small>´´½¨Ê±»á×Ô¶¯Éú³ÉÒ»¸ö4×Ö½ÚµÄÕûÊý£¬ËùÓÐ OID ÔÚÕû¸ö PostgreSQL ÖоùÊÇΨһµÄ¡£ È»¶ø£¬ËüÔÚ³¬¹ý40ÒÚʱ½«Òç³ö£¬
+ <small>OID</small>´Ëºó»á³öÏÖÖØ¸´¡£PostgreSQL ÔÚËüµÄÄÚ²¿ÏµÍ³±íÀïʹÓà OID ÔÚ±íÖ®¼ä½¨Á¢ÁªÏµ¡£
+</p>
+<p>
+ ÔÚÓû§µÄÊý¾Ý±íÖУ¬×îºÃÊÇʹÓÃ<small>SERIAl</small>À´´úÌæ<small>OID</small>
+ ÒòΪ<small>SERIAL</small>Ö»ÊDZ£Ö¤ÔÚµ¥¸ö±íÖÐÊý¾ÝÊÇΨһµÄ£¬ÕâÑùËüÒç³öµÄ¿ÉÄÜÐԾͷdz£Ð¡ÁË£¬
+ <small>SERIAL8</small>¿ÉÓÃÀ´±£´æ8×Ö½ÚµÄÐòÁкÅ×ֶΡ£
+</p>
+
+<p>
+ <small>CTID</small> ÓÃÓÚ±êʶ´ø×ÅÊý¾Ý¿é£¨µØÖ·£©ºÍ£¨¿éÄÚ£©Æ«ÒƵÄÌØ¶¨µÄÎïÀíÐС£
+ <small>CTID</small> ÔڼǼ±»¸ü¸Ä»òÖØÔØºó·¢Éú¸Ä±ä¡£Ë÷ÒýÈë¿ÚʹÓÃËüÃÇÖ¸ÏòÎïÀíÐС£
+</p>
+
+
+<h4><a name="4.13"></a>4.13)ΪʲôÎÒÊÕµ½´íÎóÐÅÏ¢¡°<i>ERROR: Memory exhausted in AllocSetAlloc()</i>¡±£¿</h4>
+<p>
+ ÕâºÜ¿ÉÄÜÊÇϵͳµÄÐéÄâÄÚ´æÓùâÁË£¬»òÕßÄں˶ÔijЩ×ÊÔ´Óнϵ͵ÄÏÞÖÆÖµ¡£ÔÚÆô¶¯ postmaster ֮ǰÊÔÊÔÏÂÃæµÄÃüÁ
+</p>
+<pre>
+ ulimit -d 262144
+ limit datasize 256m
+</pre>
+<p>
+ È¡¾öÓÚÄãÓÃµÄ shell£¬ÉÏÃæÃüÁîÖ»ÓÐÒ»ÌõÄܳɹ¦£¬µ«ÊÇËü½«°ÑÄãµÄ½ø³ÌÊý¾Ý¶ÎÏÞÖÆÉèµÃ±È½Ï¸ß£¬
+ Òò¶øÒ²ÐíÄÜÈòéѯÍê³É¡£ÕâÌõÃüÁîÓ¦ÓÃÓÚµ±Ç°½ø³Ì£¬ÒÔ¼°ËùÓÐÔÚÕâÌõÃüÁîÔËÐк󴴽¨µÄ×Ó½ø³Ì¡£
+ Èç¹ûÄãÊÇÔÚÔËÐÐSQL¿Í»§¶ËʱÒòΪºǫ́·µ»ØÁËÌ«¶àµÄÊý¾Ý¶ø³öÏÖÎÊÌ⣬ÇëÔÚÔËÐпͻ§¶Ë֮ǰִÐÐÉÏÊöÃüÁî¡£
+</p>
+
+<h4><a name="4.14"></a>4.14)ÎÒÈçºÎ²ÅÄÜÖªµÀËùÔËÐÐµÄ PostgreSQL µÄ°æ±¾£¿</h4>
+<p>
+ ´Ó psql ÀÊäÈë <code>SELECT version();</code>Ö¸Áî¡£
+</p>
+
+<h4><a name="4.15"></a>4.15)ÎÒÈçºÎ´´½¨Ò»¸öȱʡֵÊǵ±Ç°Ê±¼äµÄ×ֶΣ¿</h4>
+<p>
+ ʹÓà CURRENT_TIMESTAMP£º
+</p>
+<pre>
+ CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
+</pre>
+
+
+<h4><a name="4.16"></a>4.16)ÎÒÔõÑù½øÐÐ outer join £¨ÍâÁ¬½Ó£©£¿</h4>
+<p>
+ PostgreSQL ²ÉÓñê×¼µÄ SQL Óï·¨Ö§³ÖÍâÁ¬½Ó¡£ÕâÀïÊÇÁ½¸öÀý×Ó£º
+</p>
+<pre>
+ SELECT *
+ FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
+</pre>
+<p>»òÊÇ</p>
+<pre>
+ SELECT *
+ FROM t1 LEFT OUTER JOIN t2 USING (col);
+</pre>
+<p>
+ ÕâÁ½¸öµÈ¼ÛµÄ²éѯÔÚ t1.col ºÍ t2.col ÉÏ×öÁ¬½Ó£¬²¢ÇÒ·µ»Ø t1 ÖÐËùÓÐδÁ¬½ÓµÄÐУ¨ÄÇЩÔÚ t2 ÖÐûÓÐÆ¥ÅäµÄÐУ©¡£
+ ÓÒ[Íâ]Á¬½Ó(RIGHT OUTER JOIN)½«·µ»Ø t2 ÖÐδÁ¬½ÓµÄÐС£
+ ÍêÈ«ÍâÁ¬½Ó£¨FULL OUTER JOIN£©½«·µ»Ø t1 ºÍ t2 ÖÐδÁ¬½ÓµÄÐС£
+ ¹Ø¼ü×Ö OUTER ÔÚ×ó[Íâ]Á¬½Ó¡¢ÓÒ[Íâ]Á¬½ÓºÍÍêÈ«[Íâ]Á¬½ÓÖÐÊÇ¿ÉÑ¡µÄ£¬ÆÕͨÁ¬½Ó±»³ÆÎªÄÚÁ¬½Ó£¨INNER JOIN£©¡£
+</p>
+
+
+<h4><a name="4.17"></a>4.17)ÈçºÎʹÓÃÉæ¼°¶à¸öÊý¾Ý¿âµÄ²éѯ£¿</h4>
+<p>
+ ûÓа취²éѯµ±Ç°Êý¾Ý¿âÖ®ÍâµÄÊý¾Ý¿â¡£
+ ÒòΪ PostgreSQL Òª¼ÓÔØÓëÊý¾Ý¿âÏà¹ØµÄϵͳĿ¼£¨ÏµÍ³±í£©£¬Òò´Ë¿çÊý¾Ý¿âµÄ²éѯÈçºÎÖ´ÐÐÊDz»¶¨µÄ¡£
+</p>
+<p>
+ ¸½¼ÓÔöֵģ¿écontrib/dblinkÔÊÐí²ÉÓú¯Êýµ÷ÓÃʵÏÖ¿ç¿â²éѯ¡£µ±È»Óû§Ò²¿ÉÒÔͬʱÁ¬½Óµ½²»Í¬µÄÊý¾Ý¿âÖ´ÐвéѯȻºóÔÚ¿Í»§¶ËºÏ²¢½á¹û¡£
+</p>
+
+<h4><a name="4.18"></a>4.18)ÈçºÎÈú¯Êý·µ»Ø¶àÐлò¶àÁУ¿</h4>
+<p>
+ ÔÚº¯ÊýÖзµ»ØÊý¾Ý¼Ç¼¼¯µÄ¹¦ÄÜÊǺÜÈÝÒ×ʹÓõģ¬ÏêÇé²Î¼û£º
+ <a href="http://techdocs.postgresql.org/guides/SetReturningFunctions">http://techdocs.postgresql.org/guides/SetReturningFunctions</a>
+</p>
+
+<h4><a name="4.19"></a>4.19)ΪʲôÎÒÔÚʹÓÃPL/PgSQLº¯Êý´æÈ¡ÁÙʱ±íʱ»áÊÕµ½´íÎóÐÅÏ¢¡°relation with OID ##### does not exist¡±£¿</h4>
+<p>
+ PL/PgSQL»á»º´æº¯ÊýµÄÄÚÈÝ£¬ÓÉ´Ë´øÀ´µÄÒ»¸ö²»ºÃµÄ¸±×÷ÓÃÊÇÈôÒ»¸ö PL/PgSQL
+ º¯Êý·ÃÎÊÁËÒ»¸öÁÙʱ±í£¬È»ºó¸Ã±í±»É¾³ý²¢Öؽ¨ÁË£¬ÔòÔٴε÷Óøú¯Êý½«Ê§°Ü£¬
+ ÒòΪ»º´æµÄº¯ÊýÄÚÈÝÈÔȻָÏò¾ÉµÄÁÙʱ±í¡£½â¾öµÄ·½·¨ÊÇÔÚ PL/PgSQL ÖÐÓÃ<small>EXECUTE</small>
+ ¶ÔÁÙʱ±í½øÐзÃÎÊ¡£ÕâÑù»á±£Ö¤²éѯÔÚÖ´ÐÐǰ×Ü»á±»ÖØÐ½âÎö¡£
+</p>
+
+<h4><a name="4.27"></a>4.27)ĿǰÓÐÄÄЩÊý¾Ý¸´ÖÆ·½°¸¿ÉÓã¿</h4>
+<p>
+ ¡°¸´ÖÆ¡±Ö»ÊÇÒ»¸öÊõÓÓкü¸ÖÖ¸´ÖƼ¼Êõ¿ÉʹÓã¬Ã¿ÖÖ¶¼ÓÐÓŵãºÍȱµã£º
+</p>
+<p>
+ Ö÷/´Ó¸´ÖÆ·½Ê½ÊÇÔÊÐíÒ»¸öÖ÷·þÎñÆ÷½ÓÊܶÁ/дµÄÉêÇ룬¶ø¶à¸ö´Ó·þÎñÆ÷Ö»ÄܽÓÊܶÁ/<small>SELECT</small>²éѯµÄÉêÇ룬
+ Ŀǰ×îÁ÷ÐÐÇÒÊÇÃâ·ÑµÄÖ÷/´Ó PostgreSQL¸´ÖÆ·½°¸ÊÇ
+ <a href="http://gborg.postgresql.org/project/slony1/projdisplay.php">Slony-I </a>¡£
+</p>
+<p>
+ ¶à¸öÖ÷·þÎñÆ÷µÄ¸´ÖÆ·½Ê½ÔÊÐí½«¶Á/дµÄÉêÇë·¢Ë͸ø¶ą̀µÄ¼ÆËã»ú£¬ÕâÖÖ·½Ê½ÓÉÓÚÐèÒªÔÚ¶ą̀·þÎñÆ÷Ö®¼äͬ²½Êý¾Ý±ä¶¯
+ ¿ÉÄÜ»á´øÀ´½ÏÑÏÖØµÄÐÔÄÜËðʧ£¬<a href="http://pgfoundry.org/projects/pgcluster/">Pgcluster</a>ÊÇĿǰÕâÖÖ·½°¸
+ ÖÐ×îºÃµÄ£¬¶øÇÒ»¹¿ÉÒÔÃâ·ÑÏÂÔØ¡£
+</p>
+<p>
+ Ò²ÓÐһЩÉÌÒµÐ踶·ÑºÍ»ùÓÚÓ²¼þµÄÊý¾Ý¸´ÖÆ·½°¸£¬Ö§³ÖÉÏÊö¸÷ÖÖ¸´ÖÆÄ£ÐÍ¡£
+</p>
+
+
+
+</body>
+</html>
+
|