diff options
Diffstat (limited to 'doc/FAQ_chinese_trad')
-rw-r--r-- | doc/FAQ_chinese_trad | 793 |
1 files changed, 0 insertions, 793 deletions
diff --git a/doc/FAQ_chinese_trad b/doc/FAQ_chinese_trad deleted file mode 100644 index b1908535777..00000000000 --- a/doc/FAQ_chinese_trad +++ /dev/null @@ -1,793 +0,0 @@ - - PostgreSQL 常è¦åé¡ï¼FAQï¼ - - æè¿æ´æ°ï¼2007 å¹´ 2 æ 8 æ¥ ææäº 22:43:13 EST - 䏿çæè¿æ´æ°ï¼2007 å¹´ 2 æ 12 æ¥ ææä¸ 12:00:04 CST - - ç¶åç¶è·äººå¡ï¼Bruce Momjian (pgman@candle.pha.pa.us) - æ£é«ä¸æçç¶è·äººå¡ï¼éæç(ChaoYi, Kuo)ï¼kuo.chaoyi@gmail.comï¼ - - æ¬ææªçææ°çæ¬å¯ä»¥å¨ - http://www.postgresql.org/files/documentation/faqs/FAQ.html æ¥çã - - è使¥ç³»çµ±å¹³å°ç¸éçåé¡å¯å¨ http://www.postgresql.org/docs/faq/ - 裡æ¾å°çæ¡ã - _________________________________________________________________ - -常è¦åé¡ - - 1.1)PostgreSQL æ¯ä»éº¼ï¼è©²æéº¼ç¼é³ï¼ - 1.2)誰æ§å¶å管çPostgreSQL ï¼ - 1.3)PostgreSQLççæ¬æ¯ä»éº¼ï¼ - 1.4)PostgreSQLå¯ä»¥éè¡å¨åªäºä½æ¥ç³»çµ±å¹³å°ä¸ï¼ - 1.5)æå¾åªè£¡è½å¾å°PostgreSQLï¼ - 1.6)ææ°çç PostgreSQL æ¯ä»éº¼ï¼ - 1.7)æå¾åªè£¡è½å¾å°å° PostgreSQL çæ¯æï¼ - 1.8)æå¦ä½æäº¤ä¸å BUG å ±åï¼ - 1.9)æå¦ä½ç解已ç¥ç BUG ææ«ç¼ºçåè½ï¼ - 1.10)è½å¤ ç²åçææ°ææªæåªäºï¼ - 1.11)ææè©²ææ¨£å¸ç¿ SQL ï¼ - 1.12)å¦ä½æäº¤è£ä¸ææ¯å å¥éç¼éä¼ï¼ - 1.13)PostgreSQL åå¶ä»è³æåº«ç³»çµ±æ¯èµ·ä¾å¦ä½ï¼ - 1.14)PostgreSQL å¯ä»¥èçæè¿ååå家夿å¶çè®ååï¼ - -ç¨æ¶å®¢æ¶ç«¯åé¡ - - 2.1)æåå¯ä»¥ç¨ä»éº¼èªè¨å PostgreSQL é²è¡æºéï¼ - 2.2)æä»éº¼å·¥å·å¯ä»¥æ PostgreSQL ç¨æ¼ Web é é¢ï¼ - 2.3)PostgreSQL ææåå½¢ç¨æ¶çé¢(GUI)åï¼ - -系統管çåé¡ - - 3.1)æææ¨£æè½æ PostgreSQL è£å¨ /usr/local/pgsql 以å¤çå°æ¹ï¼ - 3.2)æå¦ä½æ§å¶ä¾èªå¶ä»é»è¦ç飿¥ï¼ - 3.3)æææ¨£èª¿æ´è³æåº«ä¼ºæå¨ä»¥ç²å¾æ´å¥½çæ§è½ï¼ - 3.4)PostgreSQL 裡å¯ä»¥ç²å¾ä»éº¼æ¨£çèª¿è©¦ç¹æ§ï¼ - 3.5)çºä»éº¼å¨è©¦å飿¥ç»éææ¶å°ãSorry, too many clientsã è¨æ¯ï¼ - 3.6)PostgreSQL çåç´éç¨æåªäºå§å®¹ï¼ - 3.7)(ä½¿ç¨ PostgreSQL )æéè¦ä½¿ç¨ä»éº¼é»è¦ç¡¬é«ï¼ - -æä½åé¡ - - 4.1) å¦ä½åªé¸æä¸åæ¥è©¢çµæçé å¹¾è¡ï¼ææ¯é¨æ©çä¸è¡ï¼ - 4.2) å¦ä½æ¥ç表ãç´¢å¼ãè³æåº«ä»¥åç¨æ¶çå®ç¾©ï¼å¦ä½æ¥ç psql - 裡ç¨å°çæ¥è©¢æä»¤ä¸¦é¡¯ç¤ºå®åï¼ - 4.3) å¦ä½æ´æ¹ä¸åæ¬ä½çè³æé¡åï¼ - 4.4) å®çè¨éï¼å®ä¸è¡¨ï¼ä¸åè³æåº«çæå¤§éå¶æ¯å¤å°ï¼ - 4.5) åå²ä¸åå¸åçææ¬æä»¶è£¡çè³æéè¦å¤å°ç£ç¢ç©ºéï¼ - 4.6) çºä»éº¼æçæ¥è©¢å¾æ¢ï¼çºä»éº¼éäºæ¥è©¢æ²æå©ç¨ç´¢å¼ï¼ - 4.7) æå¦ä½æè½çå°æ¥è©¢åªå卿¯ææ¨£è©ä¼°èçæçæ¥è©¢çï¼ - 4.8) æææ¨£åæ£å表éå¼æç´¢å大å°å¯«ç¡éçæ - £å表é弿¥æ¾ï¼ææ¨£å©ç¨ç´¢å¼é²è¡å¤§å°å¯«ç¡éæ¥æ¾ï¼ - 4.9) å¨ä¸åæ¥è©¢è£¡ï¼æææ¨£æª¢æ¸¬ä¸åæ¬ä½æ¯å¦çº - NULLï¼æå¦ä½æè½æºç¢ºæåºèä¸è«ææ¬ä½æ¯å¦å«NULLå¼ï¼ - 4.10) å種å符é¡åä¹éæä»éº¼ä¸åï¼ - 4.11.1) æææ¨£åµå»ºä¸ååºåèåææ¯èªåéå¢çæ¬ä½ï¼ - 4.11.2) æå¦ä½ç²å¾ä¸åæå¥çåºåèçå¼ï¼ - 4.11.3) åæä½¿ç¨ currval() æå°è´åå¶ä»ç¨æ¶çè¡çªææ³åï¼ - 4.11.4) çºä»éº¼ä¸å¨äºåç°å¸¸ä¸æ¢å¾éç¨åºåèå¢ï¼çºä»éº¼å¨åºåèæ¬ä½çåå¼ä¸ - åå¨éæ·å¢ï¼ - 4.12) ä»éº¼æ¯ OIDï¼ä»éº¼æ¯ CTID ï¼ - 4.13) çºä»éº¼ææ¶å°é¯èª¤è³è¨ãERROR: Memory exhausted in - AllocSetAlloc()ãï¼ - 4.14) æå¦ä½æè½ç¥éæéè¡ç PostgreSQL ççæ¬ï¼ - 4.15) æå¦ä½åµå»ºä¸åé è¨å¼æ¯ç¶åæéçæ¬ä½ï¼ - 4.16) å¦ä½å·è¡å¤é£æ¥ï¼outer joinï¼æ¥è©¢ï¼ - 4.17) å¦ä½å·è¡æ¶åå¤åè³æåº«çæ¥è©¢ï¼ - 4.18) å¦ä½è®å½æ¸è¿åå¤è¡æå¤åè³æï¼ - 4.19) çºä»éº¼æå¨ä½¿ç¨ PL/PgSQL 彿¸ååè¨æè¡¨æææ¶å°é¯èª¤è³è¨ãrelation - with OID ##### does not existãï¼ - 4.20) ç®åæåªäºè³æè¤å¯«(replication)æ¹æ¡å¯ç¨ï¼ - 4.21) çºä½æ¥è©¢çµæé¡¯ç¤ºçè¡¨åææ¬åèæçæ¥è©¢èªå¥ä¸ - çä¸åï¼çºä½å¤§å¯«çæä¸è½ä¿çï¼ - _________________________________________________________________ - -常è¦åé¡ - - 1.1) PostgreSQL æ¯ä»éº¼ï¼è©²æéº¼ç¼é³ï¼ - - PostgreSQL è®ä½ Post-Gres-Q-Lï¼ææåä¹ç°¡ç¨±çºPostgres - ãæ³è½ä¸ä¸å¶ç¼é³ç人å¡å¯å¾é裡ä¸è¼è²é³æä»¶ï¼ MP3 æ ¼å¼ ã - - PostgreSQL æ¯é¢åç®æ¨çéä¿è³æåº«ç³»çµ±ï¼å®å·æå³çµ±åæ¥ - è³æåº«ç³»çµ±çææåè½ï¼åæå嫿å°å¨ä¸ä¸ä»£ DBMS - 系統ç使ç¨çå¢å¼·ç¹æ§ãPostgreSQL - æ¯èªç±åè²»çï¼ä¸¦ä¸æææºä»£ç¢¼é½å¯ä»¥ç²å¾ã - - PostgreSQL - çéç¼éä¼ä¸»è¦çºå¿é¡èï¼ä»åéä½ä¸çåå°ä¸¦ééäºè¯ç¶²é²è¡è¯ç¹«ï¼éæ¯ä¸å社åéç¼é - ç®ï¼å®ä¸è¢«ä»»ä½å¬å¸æ§å¶ã - 妿³å å¥éç¼éä¼ï¼è«åè¦éç¼äººå¡å¸¸è¦åé¡ï¼FAQï¼ - http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html - - 1.2) 誰æ§å¶ PostgreSQL ï¼ - - å¦æä½ å¨å°æ¾PostgreSQLçæéäººï¼ææ¯ä»éº¼ä¸ - 央å§å¡æï¼ææ¯ä»éº¼æå±¬å¬å¸ï¼ä½ åªè½æ¾æ£äº---å çºä¸åä¹ä¸å - å¨ï¼ä½æåç確æä¸å æ ¸å¿å§å¡æåCVS管ççµï¼ä½éäºå·¥ä½çµçè¨ - ç«ä¸»è¦æ¯çºäºé²è¡ç®¡çå·¥ä½è䏿¯å°PostgreSQLé²è¡ç¨ä½å¼æ§å¶ï¼PostgreSQLé - ç®æ¯ç±ä»»ä½äººå - å¯åå çéç¼äººå¡ç¤¾ååææç¨æ¶æ§å¶çï¼ä½ æéè¦åçå°±æ¯è¨é±éµä»¶å表ï¼åèè¨è«å³å - ¯ï¼è¦åèPostgreSQLçéç¼è©³è¦ éç¼äººå¡å¸¸åé¡ (Developer's FAQ) ç²åè³è¨ï¼ã - - 1.3) PostgreSQL ççæ¬æ¯ä»éº¼? - - PostgreSQLçç¼å¸éµå¾ç¶å¸ç BSD çæ¬ãå®åè¨±ç¨æ¶ä¸éç®çå°ä½¿ç¨ - PostgreSQLï¼çè³ä½ å¯ä»¥é·å® PostgreSQL - èä¸å«æºä»£ç¢¼ä¹å¯ä»¥ï¼å¯ä¸çéå¶å°±æ¯ä½ ä¸è½å è»é«èªèº«åé¡èåæå追訴æ³å¾ - 責任ï¼å¦å¤å°±æ¯è¦æ±ææçè»é«æ·è²ä¸é 忬以ä¸çæ¬è²æã - ä¸é¢å°±æ¯æåæä½¿ç¨çBSDçæ¬è²æå§å®¹ï¼ - - PostgreSQL è³æåº«ç®¡ç系統 - - é¨åçæ¬ï¼cï¼1996-2005ï¼PostgreSQL å¨çéç¼å°çµï¼é¨åçæ¬ï¼cï¼1994-1996 - å å·å¤§å¸è£äº - - ï¼Portions copyright (c) 1996-2005,PostgreSQL Global Development Group - Portions Copyright (c) 1994-6 Regents of the University of - Californiaï¼ - - å許çºä»»ä½ç®ç使ç¨ï¼æ·è²ï¼ä¿®æ¹ååç¼éåè»é«åå®çææªè䏿¶åä»»ä½è²»ç¨ï¼ - 並ä¸ç¡é ç°½ç½²å æ¤èç¢ççèæï¼åææ¯ä¸é¢ççæ¬è²æåæ¬æ®µä»¥åä¸é¢å©æ®µæå - åºç¾å¨æææ·è²ä¸ã - - ï¼Permission to use, copy, modify, and distribute this software and - its documentation for any purpose, without fee, and without a written - agreement is hereby granted, provided that the above copyright notice - and this paragraph and the following two paragraphs appear in all - copies.ï¼ - - å¨ä»»ä½ææ³ä¸ï¼å å·å¤§å¸é½ä¸æ¿æå ä½¿ç¨æ - ¤è»é«åå¶ææªèå°è´çå°ä»»ä½ç¶äºäººçç´æ¥çï¼ - 鿥çï¼ç¹æ®çï¼éå çæèç¸ä¼´èççæå£ï¼åæ¬å©çæå¤±ç責任ï¼å³ä½¿å å·å¤§å - ¸å·²ç¶å»ºè°äºéäºæå¤±çå¯è½æ§æä¹æ¯å¦æ¤ã - - ï¼IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY - PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL - DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS - SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA - HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.ï¼ - - å å·å¤§å¸æç¢ºæ¾æ£ä»»ä½ä¿èï¼åæ¬ä½ä¸å±éæ¼æä¸ç¹å®ç¨éç忥åå©ççé±å«ä¿èã - é裡æä¾çé份è»é«æ¯åºæ¼ãç¶ä½æ¯ãçåºç¤çï¼å èå å·å¤§å¸æ²æè²¬ä»»æä¾ç¶ - è·ï¼æ¯æï¼æ´æ°ï¼å¢å¼·æèä¿®æ¹çæåã - - ï¼THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, - INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE - PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF - CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, - UPDATES, ENHANCEMENTS, OR MODIFICATIONS.ï¼ - - 1.4) PostgreSQL å¯ä»¥éè¡å¨åªäºä½æ¥ç³»çµ±å¹³å°ä¸ï¼ - - ä¸è¬èªªä¾ï¼ä»»ä½ç¾å¨å° UNIX ç¸å®¹ç使¥ç³»çµ±ä¹ä¸é½è½éè¡ PostgreSQL - ãå¨å®è£æå裡ååºäºç¼ä½æç¶éæç¢ºæ¸¬è©¦çå¹³å°ã - - PostgreSQL ä¹å¯ä»¥ç´æ¥éè¡å¨åºæ¼å¾®è» Windows-NT ç使¥ç³»çµ±ï¼å¦ - Win2000 SP4ï¼WinXP å Win2003ï¼å·²è£½ä½å®æçå®è£åå¯å¾ - http://pgfoundry.org/projects/pginstallerä¸è¼ï¼åºæ¼MSDOSçWindows使¥ - 系統 ï¼Win95ï¼Win98ï¼WinMeï¼éè¦ééCygwin模æ¬ç°å¢éè¡PostgreSQLã - - åæä¹æä¸åçº Novell Netware 6 éç¼ççæ¬å¯å¾ http://forge.novell.com - ç²åï¼çºOS/2(eComStation)éç¼ççæ¬å¯å¾ - http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgre - SQL&stype=all&sort=type&dir=%2F ä¸è¼ã - - 1.5) æå¾åªè£¡è½å¾å° PostgreSQLï¼ - - ééç覽å¨å¯å¾ http://www.postgresql.org/ftp/ ä¸è¼ï¼ä¹å¯ééFTPï¼å¾ - ftp://ftp.PostgreSQL.org/pub/ ç«é»ä¸è¼ã - - 1.6) ææ°çç PostgreSQL æ¯ä»éº¼ï¼ - - PostgreSQL ææ°ççæ¬æ¯çæ¬ 8.2.3 ã - - æåè¨åæ¯å¹´ç¼ä½ä¸å主è¦åç´çæ¬ï¼æ¯å¹¾åæç¼ä½ä¸åå°çæ¬ã - - 1.7) æå¾åªè£¡è½å¾å°å° PostgreSQL çæ¯æï¼ - - PostgreSQL社åéééµä»¶å表çºå¶å¤§å¤æ¸ç¨æ¶æä¾å¹«å©ï¼è¨é±éµä»¶å表ç主ç«é - »æ¯ - http://www.postgresql.org/community/lists/ï¼ä¸è¬ææ³ä¸ï¼åå å¥General æ - Bugéµä»¶å表æ¯ä¸åè¼å¥½çéå§ã - - 主è¦çIRCé »éæ¯å¨FreeNode(irc.freenode.net)ç#postgresqlï¼çºäºé£ä¸æ - ¤é »éï¼å¯ä»¥ä½¿ç¨ UNIX ç¨åº ircï¼å¶æä»¤æ ¼å¼ï¼ irc -c '#postgresql' - "$USER" irc.freenode.net ï¼æè使ç¨å¶ä»IRC客æ¶ç«¯ç¨åºã卿¤ç¶²çµ¡ä¸éå - å¨ä¸å PostgreSQL ç西ççé »é(#postgersql-es)åæ³èªé »é - (#postgresql-fr)ã忍£å°ï¼å¨ EFNET ä¸ä¹æä¸å PostgreSQL ç交æµé »éã - - 坿ä¾åæ¥æ¯æçå¬å¸å表å¯å¨ http://techdocs.postgresql.org/companies.php - ç覽ã - - 1.8) æå¦ä½æäº¤ä¸å BUG å ±åï¼ - - å¯è¨ªå http://www.postgresql.org/support/submitbugï¼å¡«å¯« Bug - ä¸å ±è¡¨æ ¼å³å¯ï¼å樣ä¹å¯è¨ªå ftp ç«é» ftp://ftp.PostgreSQL.org/pub/ - æª¢æ¥æç¡æ´æ°çPostgreSQL çæ¬æè£ä¸ã - - ééä½¿ç¨ Bug æäº¤è¡¨æ ¼ææ¯ç¼å¾ PostgreSQL éµä»¶å表ç Bug - é常ææä»¥ä¸ä¹ä¸åè¦ï¼ - * ææäº¤å§å®¹ä¸æ¯ä¸å Bug åå¶ä¸æ¯ Bug çåå ã - * ææäº¤å§å®¹æ¯ä¸åå·²ç¥ç Bug 並ä¸å·²ç¶å å¥ TODO å¾èçä»»åå表ã - * ææäº¤ç Bug å·²å¨ç¶åçæ¬ä¸è¢«ä¿®æ£ã - * ææäº¤ç Bug 已修æ£ä½å°æªå°è£ä¸å å¥ç¾å¨çç¼å¸è»é«åã - * è«æ±æäº¤èæä¾æ´è©³ç´°çè³è¨ï¼ - + 使¥ç³»çµ± - + PostgreSQL çæ¬ - + å¯éç¾ Bug çæ¸¬è©¦æ¡ä¾ - + 調試è³è¨ - + 調試è·è¹¤è¼¸åº - * ææäº¤å§å®¹æ¯ä¸åæ° Bugï¼å°å·è¡ä»¥ä¸å·¥ä½ï¼ - + åµå»ºä¸åæ°è£ä¸ä¸¦å°å¶å å¥ä¸ä¸å主è¦çæ¬ææ¯å°çæ¹é²çæ¬ä¸ã - + æ¤ Bug æ«æä¸è½ä¿®æ£ï¼å°è¢«å è³ TODO å¾èçä»»åå表ã - - 1.9) æå¦ä½ç解已ç¥ç BUG ææ«ç¼ºçåè½ï¼ - - PostgreSQL æ¯æä¸åæ´å±ç SQL:2003 çåéãå鱿åç TODO å表ï¼çè§£å·²ç¥ Bug - åè¡¨ãæ«ç¼ºçåè½åå°ä¾çéç¼è¨åã - - è¦æ±å¢å æ°åè½çç³è«éå¸¸ææ¶å°ä»¥ä¸ä¹ä¸çåè¦ï¼ - * 該åè½å·²å å¥ TODO å¾èçä»»åå表ã - * 該åè½ä¸æ¯å¿é çï¼å çºï¼ - + 宿¯ç¾æçä¸ç¬¦å SQL æ¨æºçæåè½çéè¤ã - + 該åè½æ§æå¤§å¤§å¢å 代碼çè¤éç¨åºï¼è帶ä¾çå¥½èæ¯å¾®ä¸è¶³éçã - + 該åè½æ¯ä¸å®å¨ææ¯ä¸å¯é çã - * 該åè½å°è¢«å å¥ TODO å¾èçä»»åå表ã - - PostgreSQL ä¸ä½¿ç¨ Bug è·è¹¤ç³»çµ±ï¼å çºæåç¼ç¾å¨éµä»¶åè¡¨ä¸ - ç´æ¥åè¦ä»¥åä¿è TODO - ä»»åå表總æ¯èæ¼ææ°çæçæ¹å¼å·¥ä½æçææ´é«ä¸äºãäºå¯¦ä¸ï¼Bug䏿卿åçè»é«ä¸ - åå¨å¾é·æéï¼ å°å½±é¿å¾å¤ç¨æ¶çBugä¹ç¸½æ¯å¾å¿«æè¢«ä¿®æ - £ãå¯ä¸è½æ¾å°æææ¹é²ãæé«åä¿®æ£çå°æ¹æ¯ CVS - çæ¥èªè³è¨ï¼å³ä½¿æ¯å¨è»é«æ°çæ¬çç¼å¸è³è¨ä¸ä¹ä¸æååºæ¯ä¸èçè»é«æ´æ°ã - - 1.10) è½å¤ ç²åçææ°ææªæåªäºï¼ - - PostgreSQL åå«å¤§éçææªï¼ä¸»è¦æè©³ç´°çåèæåï¼æåé åä¸äºç測試ä¾åãåè¦ - /doc ç®éï¼è¯è¨»ï¼æçº $PGHOME/docï¼ã ä½ éå¯ä»¥å¨ç·ç覽 PostgreSQL - çæåï¼å¶ç¶²åæ¯ï¼http://www.PostgreSQL.org/docsã - - æå©æ¬éæ¼PostgreSQLçæ¸å¨ç·æä¾ï¼å¨ - http://www.postgresql.org/docs/books/awbook.html å - http://www.commandprompt.com/ppbook/ ã 乿大éç PostgreSQL - æ¸ç±å¯ä¾è³¼è²·ï¼å¶ä¸æçºæµè¡ç䏿¬æ¯ç± Korry Douglas 編寫çãå¨ - http://techdocs.PostgreSQL.org/techdocs/bookreviews.phpä¸ ä¸æå¤§éæé - PostgreSQL æ¸ç±çç°¡ä»ã å¨ http://techdocs.PostgreSQL.org/ 䏿¶éäºæé - PostgreSQL ç大éæè¡æç« ã - - 客æ¶ç«¯çå½ä»¤è¡ç¨åºpsqlæä¸äºä»¥ \d éé - çå½ä»¤ï¼å¯é¡¯ç¤ºéæ¼é¡åï¼æä½ç¬¦ï¼å½æ¸ï¼èåçè³è¨ï¼ä½¿ç¨ \? - å¯ä»¥é¡¯ç¤ºææå¯ç¨çå½ä»¤ã - - æåç web ç«é»å嫿´å¤çææªã - - 1.11) ææè©²ææ¨£å¸ç¿ SQL ï¼ - - é¦åèæ®ä¸è¿°æå°çèPostgreSQLç¸éçæ¸ç±ï¼å¦å¤ä¸æ¬æ¯ Teach Yourself SQL in - 21 Days, Second Editionï¼å¶è©³ç´°ä»ç´¹çç¶²åæ¯ - http://members.tripod.com/er4ebus/sql/index.htmï¼ æåç許å¤ç¨æ¶åæ¡The - Practical SQL Handbookï¼ Bowman, Judith S. - 編寫ï¼Addison-Wesleyå¬å¸åºçï¼å¶ä»çååæ¡ The Complete Reference SQL, - Groff 編寫ï¼McGraw-Hill å¬å¸åºçã - - å¨ä¸åç¶²åä¸ä¹æå¾å¥½çæç¨ï¼ä»åæ¯ - * http://www.intermedia.net/support/sql/sqltut.shtm - * http://sqlcourse.com. - * http://www.w3schools.com/sql/default.asp - * http://mysite.verizon.net/Graeme_Birchall/id1.html - - 1.12)å¦ä½æäº¤è£ä¸ææ¯å å¥éç¼éä¼ï¼ - - è©³è¦ éç¼äººå¡å¸¸è¦åé¡ (Developer's FAQ) ã - - 1.13) PostgreSQL åå¶ä»è³æåº«ç³»çµ±æ¯èµ·ä¾å¦ä½ï¼ - - è©å¹è»é«æå¥½å¹¾ç¨®æ¹æ³ï¼åè½ï¼æ§è½ï¼å¯é æ§ï¼æ¯æå广 ¼ã - - åè½ - PostgreSQL ææå¤§ååç¨è³æåº«æå¤çåè½ï¼ä¾å¦ï¼äºåï¼å - æ¥è©¢ï¼è§¸ç¼å¨ï¼è¦åï¼å¤éµåè宿´æ§åè¤éçéå®çã - æåéæä¸äºå®åæ²æçç¹æ§ï¼å¦ç¨æ¶å®ç¾©é¡åï¼ç¹¼æ¿ï¼è¦ååå¤çæ¬ä¸¦è¡æ§å¶ä - »¥æ¸å°éççç¨çã - - æ§è½ - PostgreSQLåå¶ä»åç¨åéæºçè³æåº«å·æé¡ä¼¼çæ§è½ãå°æäºèç宿¯è¼å¿«ï¼å° - å¶ä»ä¸äºèç宿¯è¼æ¢ã èå¶ä»è³æåº«ç¸æ¯ï¼æåçæ§è½åªå£éå¸¸å¨ +/- - 10%ä¹éã - - å¯é æ§ - æåé½ç¥éè³æåº«å¿é æ¯å¯é çï¼å¦åå®å°±ä¸é»ç¨é½æ²æãæååªååå°ç¼ä½ç¶éèª - çæ¸¬è©¦çï¼ç¼ºé·æå°çç©©å®ä»£ç¢¼ãæ¯åçæ¬è³å°æä¸åæç beta - 測試æéï¼ä¸¦ä¸æåçç¼å¸æ - ·å²é¡¯ç¤ºæåå¯ä»¥æä¾ç©©å®çï¼ç¢åºçï¼å¯ç¨æ¼çç¢ä½¿ç¨ççæ¬ãæåç¸ä¿¡å¨é - æ¹é¢æåèå¶ä»çè³æåº«è»é«æ¯ç¸ç¶çã - - æ¯æ - æåçéµä»¶å表æä¾ä¸åé常大çéç¼äººå¡åç¨æ¶ççµä»¥å¹«å©è§£æ±ºæç¢°å°ç - ä»»ä½åé¡ãæåä¸è½ä¿è - 總æ¯è½è§£æ±ºåé¡ï¼ç¸æ¯ä¹ä¸ï¼åç¨è³æåº«è»é«ä¹ä¸¦ä¸æ¯ç¸½è½å¤ æä¾è§ - £æ±ºæ¹æ³ã - ç´æ¥èéç¼äººå¡ï¼ç¨æ¶ç¾¤ï¼æååæºç¨åºæ¥è§¸ä½¿PostgreSQLçæ¯ææ¯å¶ä»è³ - æåº«éè¦å¥½ãéæä¸äºåæ¥ - æ§çå¨é¢æè¡æ¯æï¼å¯ä»¥çµ¦æä¾çµ¦é£äºéè¦ç人ãï¼åé±1.7 å°ç¯ï¼ - - 广 ¼ - æåå°ä»»ä½ç¨éé½åè²»ï¼åæ¬åç¨åéåç¨ç®çã - ä½ å¯ä»¥ä¸å éå¶å°åä½ çç¢å裡å 奿åç代碼ï¼é¤äºé£äºæåå¨ä¸é¢ççæ¬ - è²æè£¡è²æç BSDçæ¬ä¹å¤çå§å®¹ã - - 1.14) PostgreSQL å¯ä»¥èçæè¿ååå家夿å¶çè®åå? - - PostgreSQL 8.0ä¹åççæ¬æ¯ä½¿ç¨ä½æ¥ç³»çµ±ä¸çæåè³æåº«ä¾èç夿å¶çè³è¨ï¼èª - 8.0 çå以å¾ççæ¬ PostgreSQL æèªèº«å«æææ°çæåè³è¨ã - _________________________________________________________________ - -ç¨æ¶å®¢æ¶ç«¯åé¡ - - 2.1) æåå¯ä»¥ç¨ä»éº¼èªè¨å PostgreSQL é²è¡æºéï¼ - - PostgreSQL (é è¨ææ³)åªå®è£æ C åå§åµå¼ C - çæ¥å£ï¼å¶ä»çæ¥å£é½æ¯ç¨ç«çé ç®ï¼è½å¤ åå¥ä¸è¼ï¼éäºæ¥å£é ç®ç¨ç«ç好è - æ¯ä»åå¯ä»¥æåèªçç¼å¸è¨åååèªç¨ç«çéç¼çµã - - ä¸äºç·¨ç¨èªè¨å¦ PHP é½æè¨ªå PostgreSQL çæ¥å£ï¼PerlãTCLãPython - 以åå¾å¤å¶ä»èªè¨çæ¥å£å¨ http://gborg.postgresql.org ç¶²ç«ä¸ç - Drivers/Interfaces å°ç¯å¯æ¾å°ï¼ 並ä¸éé Internet å¾å®¹ææç´¢å°ã - - 2.2) æä»éº¼å·¥å·å¯ä»¥æ PostgreSQL ç¨æ¼ Web é é¢ï¼ - - ä¸åä»ç´¹ä»¥è³æåº«çºå¾å°çæºä¸é¯çç«é»æ¯ï¼http://www.webreview.comã - - å°æ¼ Web éæï¼PHP æ¯ä¸åæ¥µå¥½çæ¥å£ãå®å¨ http://www.php.net/ã - - å°æ¼è¤éçä»»åï¼å¾å¤äººæ¡ç¨ Perl æ¥å£å ä½¿ç¨ CGI.pm ç DBD::Pg æ mod_perl - ã - - 2.3)PostgreSQL ææåå½¢ç¨æ¶çé¢åï¼ - - åæ¥ç¨æ¶ææ¯éæºéç¼äººå¡è½æ¾å°å¾å¤çæé PostgreSQLçGUI å形工å·è»é«ï¼å¨ - PostgreSQLç¤¾åææª æä¸å詳細çå表ã - _________________________________________________________________ - -系統管çåé¡ - - 3.1)æææ¨£è½æ PostgreSQL è£å¨ /usr/local/pgsql 以å¤çå°æ¹ï¼ - - å¨éè¡ configure æå ä¸ --prefix é¸é ã - - 3.2) æå¦ä½æ§å¶ä¾èªå¶ä»é»è¦ç飿¥ï¼ - - é è¨ææ³ä¸ï¼PostgreSQL åªå許ä¾èªæ¬æ©ä¸éé unix å奿¥åæ TCP/IP - æ¹å¼ç飿¥ã ä½ åªæå¨ä¿®æ¹äºéç½®æä»¶ postgresql.conf ä¸ç - listen_addressesï¼ä¸ä¹å¨éç½®æä»¶ $PGDATA/pg_hba.conf 䏿éäº - åºæ¼é ç¨é»è¦ï¼ host-based ï¼ç身份èªèï¼ä¸¦éæ°åå - PostgreSQLï¼å¦åå¶ä»é»è¦æ¯ä¸è½èä½ ç PostgreSQL 伺æå¨é²è¡é£æ¥çã - - 3.3) æææ¨£èª¿æ´è³æåº«å¼æä»¥ç²å¾æ´å¥½çæ§è½ï¼ - - æä¸åä¸»è¦æ¹é¢å¯ä»¥æå PostgreSQL çæ½è½ã - - æ¥è©¢æ¹å¼çè®å - éä¸»è¦æ¶åä¿®æ¹æ¥è©¢æ¹å¼ä»¥ç²åæ´å¥½çæ§è½: - - + åµå»ºç´¢å¼ï¼åæ¬è¡¨éå¼åé¨åç´¢å¼ï¼ - + ä½¿ç¨ COPY èªå¥ä»£æ¿å¤å Insert èªå¥ï¼ - + å°å¤åSQLèªå¥çµæä¸åäºå以æ¸å°æäº¤äºåçéé·ï¼ - + å¾ä¸åç´¢å¼ä¸æå夿¢è¨éæä½¿ç¨ CLUSTERï¼ - + å¾ä¸åæ¥è©¢çµæä¸ååºé¨åè¨éæä½¿ç¨ LIMITï¼ - + 使ç¨é ç·¨è¯å¼æ¥è©¢ï¼Prepared Query)ï¼ - + ä½¿ç¨ ANALYZE ä»¥ä¿æç²¾ç¢ºçåªåçµ±è¨ï¼ - + å®æä½¿ç¨ VACUUM æ pg_autovacuum - + é²è¡å¤§éè³ææ´æ¹æååªé¤ç´¢å¼ï¼ç¶å¾é建索å¼ï¼ - - 伺æå¨çéç½® - éç½®æä»¶ postgres.conf ä¸çå¾å¤è¨ - ç½®é½æå½±é¿æ§è½ï¼ææåæ¸çå表å¯è¦ï¼ - 管ç塿å/è³æåº«ä¼ºæå¨éè¡ç°å¢/è³æåº«ä¼ºæå¨éè¡éç½®ï¼ - æé忏çè§£éå¯è¦ï¼http://www.varlena.com/varlena/GeneralBits/Tidb - its/annotated_conf_e.html å - http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.htmlã - - 硬é«ç鏿 - é»è¦ç¡¬é«å°æ§è½çå½±é¿å¯ç覽 - http://candle.pha.pa.us/main/writings/pgsql/hw_performance/inde - x.html å http://www.powerpostgresql.com/PerfList/ã - - 3.4)PostgreSQL 裡å¯ä»¥ç²å¾ä»éº¼æ¨£çèª¿è©¦ç¹æ§ï¼ - - PostgreSQL æå¾å¤é¡ä¼¼ log_* - ç伺æå¨éç½®è®éå¯ç¨æ¼æ¥è©¢çåå°åé²ç¨çµ±è¨ï¼èéäºå·¥ä½å°èª¿è©¦åæ§è½æ¸¬è©¦å - ¾æå¹«å©ã - - 3.5) çºä»éº¼å¨è©¦å飿¥ææ¶å°ãSorry, too many - clientsï¼å·²æå¤ªå¤ç¨æ¶é£æ¥ï¼ãæ¶æ¯ï¼ - - éè¡¨ç¤ºä½ å·²éå°é è¨ 100 å並ç¼(åä½)å¾å°é²ç¨æ¸çéå¶ï¼ä½ éè¦ééä¿®æ¹ - postgresql.conf æä»¶ä¸ç max_connections å¼ä¾ å¢å postmaster - çå¾å°ä½µç¼èçæ¸ï¼ä¿®æ¹å¾ééæ°åå postmasterã - - 3.6)PostgreSQL çåç´éç¨æåªäºå§å®¹ ï¼ - - PostgreSQL éç¼çµå°æ¯æ¬¡å°çæ¬çåç´ä¸»è¦åªåäºä¸äº Bug ä¿®æ£å·¥ä½ï¼å æ¤å¾ - 7.4.8 åç´å° 7.4.9 ä¸éè¦ dump å restoreï¼åéè¦åæ - ¢è³æåº«ä¼ºæå¨ï¼å®è£æ´æ°å¾çè»é«åï¼ç¶å¾éå伺æå¨å³å¯ã - - ææPostgreSQLçç¨æ¶æè©²å¨ææ¥è¿ï¼ä½ æä½¿ç¨çä¸»çæ¬ï¼çå°æ¹é²çæ¬ç¼ä½ç¡å¿«åç´ - ãåç®¡æ¯æ¬¡åç´å¯è½é½æä¸é»é¢¨éªï¼PostgreSQLçå°æ¹ é²çå忝è¨è¨ç¨ä¾ä¿®æ - £ä¸äº Bug - çï¼ç¨å¼ç¢¼æ¹åè¼å°ï¼æä»¥é¢¨éªéæ¯å¾å°çãPostgreSQL社åèªçºä¸è¬ææ³ä¸ä¸åç´ç - 風éªéæ¯å¤æ¼åç´çã - - ä¸»çæ¬çåç´ï¼ä¾å¦å¾ 7.3 å° 7.4ï¼é常æä¿®æ¹ç³»çµ±è¡¨åè³æè¡¨çå§é¨æ ¼å¼ã - éäºæ¹è®ä¸è¬æ¯è¼è¤éï¼å æ¤æåä¸ç¶æè³ææä»¶çåå¾å¼å®¹æ§ãå æ¤å¾èçæ¬ä¸ - é²è¡è³æå°åºï¼dumpï¼/ç¶å¾å¨æ°çæ¬ä¸ - é²è¡è³æå°å¥ï¼reloadï¼å°ä¸»çæ¬çåç´æ¯å¿é çã - - 3.7)(ä½¿ç¨ PostgreSQL )æéè¦ä½¿ç¨ä»éº¼é»è¦ç¡¬é« ï¼ - - ç±æ¼é»è¦ç¡¬é«å¤§å¤æ¸æ¯ç¸å®¹çï¼äººå總æ¯å¾åæ¼ç¸ä¿¡ææé»è¦ç¡¬é«è³ªé乿¯ç¸ - åçãäºå¯¦ä¸ä¸æ¯ï¼ ECC RAMï¼å¸¶å¥å¶æ ¡é©çè¨æ¶é«ï¼ï¼SCSI - ï¼ç¡¬ç¢ï¼ååªè³ªçä¸»æ©æ¿æ¯ä¸äºä¾¿å®è²¨è¦æ´å å¯é ä¸å·ææ´å¥½çæ§è½ã - PostgreSQL å¹¾ä¹å¯ä»¥éè¡å¨ä»»ä½ç¡¬é«ä¸ï¼ - ä½å¦æå¯é æ§åæ§è½å°ä½ ç系統å¾éè¦ï¼ä½ å°±éè¦å¨é¢çç ç©¶ä¸ä¸ä½ ç硬é«çµæ - äºã卿åçéµä»¶å表ä¸ä¹æéæ¼ ç¡¬é«éç½®åæ§å¹æ¯çè¨è«ã - _________________________________________________________________ - -æä½åé¡ - - 4.1) å¦ä½åªé¸æä¸åæ¥è©¢çµæçé å¹¾è¡ï¼ææ¯é¨æ©çä¸è¡ï¼ - - å¦æä½ åªæ¯è¦æåå¹¾è¡è³æï¼ä¸¦ä¸ä½ å¨å·è¡æ¥è©¢ä¸ - ç¥é確åçè¡æ¸ï¼ä½ å¯ä»¥ä½¿ç¨ LIMIT åè½ã 妿æä¸åç´¢å¼è ORDER BY ä¸ - çæ¢ä»¶å¹éï¼PostgreSQL å¯è½å°±åªèçè¦æ±çé å¹¾æ¢è¨éï¼ - ï¼å¦åå°å°æ´åæ¥è©¢é²è¡èçç´å°çæéè¦çè¡ï¼ã妿å¨å·è¡æ¥è©¢åè½æä¸ç¥é確åçè¨éæ - ¸ï¼ å¯ä½¿ç¨æ¸¸æ¨(cursor)åFETCHåè½ã - - å¯ä½¿ç¨ä»¥ä¸æ¹æ³æåä¸è¡é¨æ©è¨éçï¼ - SELECT cols - FROM tab - ORDER BY random() - LIMIT 1 ; - - 4.2) - å¦ä½æ¥ç表ãç´¢å¼ãè³æåº«ä»¥åç¨æ¶çå®ç¾©ï¼å¦ä½æ¥çpsql裡ç¨å°çæ¥è©¢æä»¤ä¸¦é¡¯ç¤ºå - ®åï¼ - - å¨psqlä¸ä½¿ç¨ \dt å½ä»¤ä¾é¡¯ç¤ºè³æè¡¨çå®ç¾©ï¼è¦çè§£ psql ä¸ - ç宿´å½ä»¤å表å¯ä½¿ç¨ \? ï¼å¦å¤ï¼ä½ ä¹å¯ä»¥é±è® psql çæºä»£ç¢¼ æä»¶ - pgsql/src/bin/psql/describe.cï¼å®åæ¬çºçæ psql åææ§å½ä»¤ç輸åºçææ SQL - å½ä»¤ãä½ éå¯ä»¥å¸¶ -E é¸é åå psqlï¼ éæ¨£å®å°åå°åºä½ å¨ psql ä¸ - æçµ¦åºçå½ä»¤å·è¡æçå§é¨å¯¦é使ç¨ç SQL - æ¥è©¢èªå¥ãPostgreSQL乿ä¾äºä¸åå¼å®¹ SQLç INFORMATION SCHEMA æ¥å£ï¼ - ä½ å¯ä»¥å¾é裡ç²åéæ¼è³æåº«çè³è¨ã - - å¨ç³»çµ±ä¸ä¹æä¸äºä»¥ pg_ æé çç³»çµ±è¡¨ä¹æè¿°äºè¡¨çå®ç¾©ã - - ä½¿ç¨ psql -l æä»¤å¯ä»¥ååºææçè³æåº«ã - - ä¹å¯ä»¥ç覽ä¸ä¸ pgsql/src/tutorial/syscat.source - æä»¶ï¼å®åèäºå¾å¤å¯å¾è³æåº«ç³»çµ±è¡¨ä¸ç²åè³è¨çSELECTèªæ³ã - - 4.3) å¦ä½æ´æ¹ä¸åæ¬ä½çè³æé¡åï¼ - - å¨8.0çæ¬è£¡æ´æ¹ä¸åæ¬ä½çè³æé¡åå¾å®¹æï¼å¯ä½¿ç¨ ALTER TABLE ALTER COLUMN - TYPE ã - - å¨ä»¥åççæ¬ä¸ï¼å¯ä»¥é樣åï¼ - BEGIN; - ALTER TABLE tab ADD COLUMN new_col new_data_type; - UPDATE tab SET new_col = CAST(old_col AS new_data_type); - ALTER TABLE tab DROP COLUMN old_col; - COMMIT; - - ä½ ç¶å¾å¯ä»¥ä½¿ç¨ VACUUM FULL tab æä»¤ä¾ä½¿ç³»çµ±æ¶åç¡æè³ææä½ç¨ç空éã - - 4.4) 宿¢è¨éï¼å®å表ï¼å®åè³æåº«çæå¤§éå¶æ¯å¤å°ï¼ - - ä¸é¢æ¯ä¸äºéå¶ï¼ - - å®åè³æåº«æå¤§å°ºå¯¸ï¼ ç¡éå¶ï¼å·²å卿 32TB çè³æåº«ï¼ - å®å表çæå¤§å°ºå¯¸ï¼ 32 TB - ä¸è¡è¨éçæå¤§å°ºå¯¸ï¼ 1.6 TB - ä¸åæ¬ä½çæå¤§å°ºå¯¸? 1 GB - ä¸å表裡æå¤§åæ¸ï¼ ç¡éå¶ - ä¸å表裡æå¤§æ¬ä½æ¸ï¼ 250-1600 ï¼èåé¡åæéï¼ - ä¸å表裡çæå¤§ç´¢å¼æ¸éï¼ ç¡éå¶ - - ç¶ç¶ï¼å¯¦é䏿²æçæ£çç¡éå¶ï¼éæ¯è¦åå¯ç¨ç£ç¤ç©ºéãå¯ç¨è¨æ¶é«/交æåçå¶ç´ã - äºå¯¦ä¸ï¼ç¶ä¸è¿°éäºæ¸å¼è®å¾ç°å¸¸å°å¤§æï¼ç³»çµ±æ§è½ä¹æåå¾å¤§å½±é¿ã - - å®è¡¨çæå¤§å¤§å° 32 TB ä¸éè¦ä½æ¥ - 系統å°å®åæä»¶ä¹éééº¼å¤§çæ¯æã大表ç¨å¤å 1 GB çæä»¶åå²ï¼å æ - ¤æä»¶ç³»çµ±å¤§å°çéå¶æ¯ä¸éè¦çã - - 妿é è¨çå¡å¤§å°å¢é·å° 32K ï¼æå¤§çå®è¡¨å¤§å°åæå¤§åæ¸éå¯ä»¥å¢å å°ååã - - æä¸åéå¶å°±æ¯ä¸è½å°å¤§å°å¤æ¼2000å - ç¯çååµå»ºç´¢å¼ã幸éå°æ¯é樣çç´¢å¼å¾å°ç¨å°ãééå°å¤å - ç¯åçå§å®¹é²è¡MD5åç¨éç®çµæé²è¡å½æ¸ç´¢å¼å¯å°åçå¯ä¸æ§å¾å°ä¿èï¼ - 並ä¸å¨ææª¢ç´¢å許å°åä¸çå®è©é²è¡æç´¢ã - - 4.5) åå²ä¸åå¸åçææ¬æä»¶è£¡çè³æéè¦å¤å°ç£ç¤ç©ºéï¼ - - ä¸å Postgres è³æåº«ï¼å - å²ä¸åææ¬æä»¶ï¼æä½ç¨ç空éæå¤å¯è½éè¦ç¸ç¶æ¼éåææ¬æä»¶èªèº«å¤§å°5åçç£ç¤ç©ºé - ã - - ä¾å¦ï¼åè¨æä¸å 100,000 è¡çæä»¶ï¼æ¯è¡æä¸åæ´æ¸åä¸åææ¬æè¿°ã åè¨ - ææ¬ä¸²çå¹³åé·åº¦çº20ä½åçµ(Byte)ãææ¬æä»¶ä½ç¨ 2.8 MBãå - æ¾éäºè³æçPostgreSQLè³æåº«æä»¶å¤§ç´æ¯ 5.2 MB: - 24 ååçµ: æ¯è¡çé ï¼å¤§ç´å¼ï¼ - 24 ååçµç¯: ä¸åæ´æ¸åæ¬ä½åä¸åææ¬åæ¬ä½ - + 4 ååçµç¯: é é¢å§æååçµçæé - ---------------------------------------- - 52 ååçµæ¯è¡ - - PostgreSQL è³æé ç大尿¯ 8192 ä½åçµ (8 KB)ï¼åï¼ - - 8192 ååçµæ¯é - ------------------- = 158 è¡/è³æé ï¼åä¸åæ´ï¼ - 52 ååçµæ¯è¡ - - 100000 è³æè¡ - -------------------- = 633 è³æé ï¼åä¸åæ´ï¼ - 146 è¡/è³æé - - 633 è³æé * 8192 åç¯/é = 5,185,536 åç¯ï¼5.2 MBï¼ - - ç´¢å¼ä¸éè¦é麼å¤çé¡å¤æ¶èï¼ä½ä¹ç¢ºå¯¦åæ¬è¢«ç´¢å¼çè³æï¼å æ - ¤å®åä¹å¯è½å¾å¤§ã - - ç©ºå¼ NULL åæ¾å¨ä½åä¸ï¼å æ¤ä½ç¨å¾å°ç空éã - - 4.6) çºä»éº¼æçæ¥è©¢å¾æ¢ï¼çºä»éº¼éäºæ¥è©¢æ²æå©ç¨ç´¢å¼ï¼ - - ä¸¦éæ¯åæ¥è©¢é½æèªå使ç¨ç´¢å¼ãåªæå¨è¡¨ç大å°è¶éä¸åæå°å¼ï¼ä¸¦ä¸æ¥è©¢åªæé - ¸ä¸è¡¨ä¸è¼å°æ¯ä¾çè¨éææææ¡ç¨ç´¢å¼ã 鿝å çºç´¢å¼æçå¼èµ·çé¨å³ç£ç¤å - åå¯è½æ¯ç´æ¥å°è®å表ï¼é åºæçï¼æ´æ¢ã - - çºäºå¤æ·æ¯å¦ä½¿ç¨ç´¢å¼ï¼PostgreSQL - å¿é ç²å¾æé表ççµ±è¨å¼ãéäºçµ±è¨å¼å¯ä»¥ä½¿ç¨ VACUUM ANALYZEï¼æ ANALYZE - ç²å¾ã 使ç¨çµ±è¨å¼ï¼åªåå¨ç¥éè¡¨ä¸ - æå¤å°è¡ï¼å°±è½å¤ æ´å¥½å°å¤æ·æ¯å¦å©ç¨ç´¢å¼ã - çµ±è¨å¼å°ç¢ºå®åªåç飿¥é åºå飿¥æ¹æ³ä¹å¾æç¨ãå¨è¡¨çå§å®¹ç¼çè®åæï¼æå®æé²è - ¡çµ±è¨å¼çæ´æ°æ¶éã - - ç´¢å¼é常ä¸ç¨æ¼ ORDER BY - æå·è¡é£æ¥ãå°ä¸å大表ç䏿¬¡é åºæçåå䏿¬¡æåºé常æ¯ç´¢å¼æçè¦å¿«ãç¶èï¼å¦æ - å° LIMIT å ORDER BY - çµåå¨ä¸èµ·ä½¿ç¨ç話ï¼éå¸¸å°æä½¿ç¨ç´¢å¼ï¼å çºéæåè¿å表ä¸çä¸å°é¨åè¨éã - - å¦æä½ ç¢ºä¿¡PostgreSQLçåªåå¨ä½¿ç¨é åºæçæ¯ä¸æ£ç¢ºçï¼ä½ å¯ä»¥ä½¿ç¨SET - enable_seqscan TO 'off'æä»¤ä¾ééé åºæçï¼ - ç¶å¾å次éè¡æ¥è©¢ï¼ä½ å°±å¯ä»¥çåºä½¿ç¨ä¸åç´¢å¼æçæ¯å¦ç¢ºå¯¦è¦å¿«ä¸äºã - - ç¶ä½¿ç¨éé符æä½ï¼ä¾å¦ LIKE æ ~ æï¼ç´¢å¼åªè½å¨ç¹å®çææ³ä¸ä½¿ç¨ï¼ - * å符串çéå§é¨åå¿é æ¯æ®éå符串ï¼ä¹å°±æ¯èªªï¼ - + LIKE 模å¼ä¸è½ä»¥ % æé ã - + ~ ï¼æ£å表éå¼ï¼æ¨¡å¼å¿é 以 ^ æé ã - * å符串ä¸è½ä»¥å¹éå¤ååç¬¦çæ¨¡å¼é¡æé ï¼ä¾å¦ [a-e]ã - * 大å°å¯«ç¡éçæ¥æ¾ï¼å¦ ILIKE å ~* çä¸ä½¿ç¨ç´¢å¼ï¼ä½å¯ä»¥ç¨ 4.8 - ç¯æè¿°ç表éå¼ç´¢å¼ã - * å¨å initdb æå¿é æ¡ç¨é è¨çæ¬å°è¨ç½® C - localeï¼å çºç³»çµ±ä¸å¯è½ç¥éå¨é C locale ææ³æä¸ä¸åæå¤§å符æ¯ä»éº¼ã - å¨éç¨®ææ³ä¸ï¼ä½ å¯ä»¥åµå»ºä¸åç¹æ®ç text_pattern_ops ç´¢å¼ä¾ç¨æ¼ - LIKE çç´¢å¼ã - - å¨ 8.0 ä¹åççæ¬ä¸ - ï¼é¤éè¦æ¥è©¢çè³æé¡ååç´¢å¼çè³æé¡åç¸å¹éï¼å¦åç´¢å¼ç¶å¸¸æ¯æªè¢«ç¨å°ï¼ç¹å¥æ - ¯å° int2, int8 忏å¼åçç´¢å¼ã - - 4.7) æå¦ä½æè½çå°æ¥è©¢åªå卿¯ææ¨£è©ä¼°èçæçæ¥è©¢ï¼ - - åè EXPLAIN æåé ã - - 4.8) æææ¨£åæ£å表éå¼æç´¢å大å°å¯«ç¡éçæ - £å表é弿¥æ¾ï¼ææ¨£å©ç¨ç´¢å¼é²è¡å¤§å°å¯«ç¡éæ¥æ¾ï¼ - - æä½ç¬¦ ~ èçæ£å表éå¼å¹éï¼è ~* èç大å°å¯«ç¡éçæ£å表éå¼å¹éã大å°å¯«ç¡éç - LIKE è®ç¨®æçº ILIKEã - - 大å°å¯«ç¡éçç弿¯è¼é常寫åï¼ - SELECT * - FROM tab - WHERE lower(col) = 'abc'; - - 鿍£å°ä¸æä½¿ç¨æ¨æºçç´¢å¼ã使¯å¯ä»¥åµå»ºä¸åå¨éç¨®ææ³ä¸ä½¿ç¨ç表éå¼ç´¢å¼ - : - CREATE INDEX tabindex ON tab (lower(col)); - - 妿ä¸è¿°ç´¢å¼å¨åµå»ºæå å¥ UNIQUE ç´æï¼éç¶ç´¢å¼æ¬ä½èªèº«å§å®¹å¯ä»¥å - å²å¤§å°å¯«ä¸éçå§å®¹ï¼ä½å¦ææ UNIQUE - ç´æå¾ï¼éäºå§å®¹ä¸è½å忝大å°å¯«ä¸åï¼å¦åæé æè¡çªï¼ãçºäºä¿è - ä¸ç¼çéç¨®ææ³ï¼å¯ä»¥ä½¿ç¨ CHECK ç´ææ¢ä»¶ææ¯è§¸ç¼å¨å¨é奿é²è¡éå¶ã - - 4.9) å¨ä¸åæ¥è©¢è£¡ï¼æææ¨£æª¢æ¸¬ä¸åæ¬ä½æ¯å¦çº NULL - ï¼æå¦ä½æè½æºç¢ºæåºèä¸è«ææ¬ä½æ¯å¦å« NULL å¼ï¼ - - ç¨ IS NULL å IS NOT NULL 測試é忬ä½ï¼å·é«æ¹æ³å¦ä¸ï¼ - SELECT * - FROM tab - WHERE col IS NULL; - - çºäºè½å°å« NULL æ¬ä½æåºï¼å¯å¨ ORDER BY æ¢ä»¶ä¸ä½¿ç¨ IS NULL å IS NOT - NULL ä¿®é£¾ç¬¦ï¼æ¢ä»¶çºç true å°æ¯æ¢ä»¶çºå false æå¨åé¢ï¼ä¸é¢çä¾å - å°±æå°å« NULL çè¨éæå¨çµæçä¸é¢é¨åï¼ - SELECT * - FROM tab - ORDER BY (col IS NOT NULL) - - 4.10) å種å符é¡åä¹éæä»éº¼ä¸åï¼ - - é¡å å§é¨å稱 說æ - VARCHAR(n) varchar æå®äºæå¤§é·åº¦ï¼è®é·å - 符串ï¼ä¸è¶³å®ç¾©é·åº¦çé¨åä¸è£é½ - CHAR(n) bpchar å®é·å符串ï¼å¯¦éè³æä¸è¶³å®ç¾©é·åº¦æï¼ä»¥ç©ºæ ¼è£é½ - TEXT text æ²æç¹å¥çä¸ééå¶ï¼ååè¡çæå¤§é·åº¦éå¶ï¼ - BYTEA bytea è®é·åç¯åºåï¼ä½¿ç¨NULLåç¬¦ä¹æ¯å許çï¼ - "char" char å®åå符 - - å¨ç³»çµ±è¡¨åå¨ä¸äºé¯èª¤è³è¨è£¡ä½ å°çå°å§é¨å稱ã - - ä¸é¢æåçåå種é¡åæ¯ "varlena"ï¼è®é·ï¼é¡åï¼ä¹å°±æ¯èªªï¼éé çååå - ç¯æ¯é·åº¦ï¼å¾é¢ææ¯è³æï¼ã æ¼æ¯å¯¦éä½ç¨çç©ºéæ¯è²æç大å°è¦å¤ä¸äºã - ç¶èéäºé¡åå¦å®ç¾©å¾é·æé½å¯ä»¥è¢«å£ç¸®åå²ï¼å æ - ¤ç£ç¤ç©ºéä¹å¯è½æ¯é æ³çè¦å°ã - - VARCHAR(n) å¨åå²éå¶äºæå¤§é·åº¦çè®é·åç¬¦ä¸²æ¯æå¥½çã TEXT é©ç¨æ¼å - 岿大å¯é 1G å·¦å³ä½æªå®ç¾©éå¶é·åº¦çå符串ã - - CHAR(n) æé©åæ¼åå²é·åº¦ç¸åçå符串ã - CHAR(n)ææ ¹ææçµ¦å®çæ¬ä½é·åº¦ä»¥ç©ºæ ¼è£è¶³ï¼ä¸è¶³çæ¬ä½å§å®¹ï¼ï¼ è - VARCHAR(n) åªåå²æçµ¦å®çè³æå§å®¹ã BYTEA ç¨æ¼åå²äºé²å¶è³æï¼å°¤å¶æ¯åå« - NULL åç¯çå¼ãéäºé¡åå·æå·®ä¸å¤çæ§è½ã - - 4.11.1) æææ¨£åµå»ºä¸ååºåèææ¯èªåéå¢çæ¬ä½ï¼ - - PostgreSQL æ¯æ SERIAL - è³æé¡åãï¼æ¬ä½å®ç¾©çºSERIALå¾ï¼å°èªååµå»ºä¸ååºåçæå¨ï¼ä¾å¦ï¼ - CREATE TABLE person ( - id SERIAL, - name TEXT - ); - - æèªåè½æçºä»¥ä¸SQLèªå¥ï¼ - CREATE SEQUENCE person_id_seq; - CREATE TABLE person ( - id INT4 NOT NULL DEFAULT nextval('person_id_seq'), - name TEXT - ); - - åè create_sequence æåé ç²åéæ¼åºåçæå¨çæ´å¤è³è¨ã - - 4.11.2) æå¦ä½ç²å¾ä¸åæå¥çåºåèçå¼ï¼ - - ä¸ç¨®æ¹æ³æ¯å¨æå¥ä¹ååç¨å½æ¸ nextval() å¾åºåå°è±¡è£¡æª¢ç´¢åºä¸ä¸å SERIAL - å¼ï¼ç¶å¾åç¨æ¤å¼ç²¾ç¢ºå°æå¥ãä½¿ç¨ 4.11.1 裡çä¾è¡¨ï¼å¯ç¨å½ç¢¼é樣æè¿°ï¼ - new_id = execute("SELECT nextval('person_id_seq')"); - execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')"); - - 鿍£éè½å¨å¶ä»æ¥è©¢ä¸ä½¿ç¨åæ¾å¨ new_id è£¡çæ°å¼ï¼ä¾å¦ï¼ä½çºåç§ person - 表çå¤éµï¼ã 注æèªååµå»ºç SEQUENCE å°è±¡çåç¨±å°ææ¯ - <table>_<serialcolumn>_seqï¼ é裡 table å serialcolumn - å奿¯ä½ ç表çå稱åä½ ç SERIAL æ¬ä½çå稱ã - - é¡ä¼¼çï¼å¨ SERIAL å°è±¡é è¨æå¥å¾ä½ å¯ä»¥ç¨å½æ¸ currval() 檢索å賦å¼ç - SERIAL å¼ï¼ä¾å¦ï¼ - execute("INSERT INTO person (name) VALUES ('Blaise Pascal')"); - new_id = execute("SELECT currval('person_id_seq')"); - - 4.11.3) åæä½¿ç¨ currval() æå°è´åå¶ä»ç¨æ¶çè¡çªææ³åï¼ - - 䏿ãcurrval() è¿åçæ¯ä½ æ¬æ¬¡æè©±é²ç¨æè³¦çå¼è䏿¯ææç¨æ¶çç¶åå¼ã - - 4.11.4) çºä»éº¼ä¸å¨äºåç°å¸¸ä¸æ¢å¾éç¨åºåèå¢ï¼çºä»éº¼å¨åºåèæ¬ä½çåå¼ä¸åå¨éæ·å¢ï¼ - - çºäºæé«ä½µç¼æ§ï¼åºåèå¨éè¦çæåè³¦äºæ - £å¨éè¡çäºåï¼ä¸¦ä¸å¨äºåçµæä¹åä¸é²è¡éå®ï¼ éå°±æå°è´ç°å¸¸ä¸ - æ¢çäºåå¾ï¼åºåèæåºç¾ééã - - 4.12) ä»éº¼æ¯ OID ï¼ä»éº¼æ¯ CTID ï¼ - - PostgreSQL 裡åµå»ºçæ¯ä¸è¡è¨é齿ç²å¾ä¸åå¯ä¸ç OIDï¼é¤éå¨åµå»ºè¡¨æä½¿ç¨ - WITHOUT OIDS é¸é ã OID åµå»ºææèªåçæä¸å 4ä½åçµçæ´æ¸ï¼ææ OID å¨ç¸æ - PostgreSQL 伺æå¨ä¸åæ¯å¯ä¸çã ç¶èï¼å®å¨è¶é 40åæå°æº¢åºï¼ OID æ - ¤å¾æåºç¾éè¤ãPostgreSQL å¨å®çå§é¨ç³»çµ±è¡¨è£¡ä½¿ç¨ OID - å¨è¡¨ä¹é建ç«è¯ç¹«ã - - å¨ç¨æ¶çè³æè¡¨ä¸ï¼æå¥½æ¯ä½¿ç¨ SERIAl ä¾ä»£æ¿ OID å çº SERIAL åªè¦ä¿è - å¨å®å表ä¸çæ¸å¼æ¯å¯ä¸çå°±å¯ä»¥äºï¼éæ¨£å®æº¢åºçå¯è½æ§å°±é常å°äºï¼ - SERIAL8 å¯ç¨ä¾ä¿å8ååçµçåºåæ¸å¼ã - - CTID ç¨æ¼æ¨è帶èè³æå¡ï¼å°åï¼åï¼å¡å§ï¼åç§»çç¹å®çç©çè¡ã CTID - å¨è¨éè¢«æ´æ¹æéè¼å¾ç¼çæ¹è®ãç´¢å¼è³æä½¿ç¨å®åæåç©çè¡ã - - 4.13) çºä»éº¼ææ¶å°é¯èª¤è³è¨ãERROR: Memory exhausted in AllocSetAlloc()ãï¼ - - éå¾å¯è½æ¯ç³»çµ±çèæ¬å§åç¨åäºï¼æèå§æ ¸å°æäºè³æºæè¼ä½çéå¶å¼ãå¨åå - postmaster ä¹å試試ä¸é¢çå½ä»¤ï¼ - ulimit -d 262144 - limit datasize 256m - - åæ±ºæ¼ä½ ç¨ç - shellï¼ä¸é¢å½ä»¤åªæä¸æ¢è½æåï¼ä½æ¯å®å°æä½ çé²ç¨è³ææ®µéå¶è¨å¾æ¯è¼é«ï¼ - å èä¹è¨±è½è®æ¥è©¢å®æã鿢å½ä»¤æç¨æ¼ç¶åé²ç¨ï¼ä»¥åææå¨éæ¢å½ä»¤éè¡å¾åµå»ºç - åé²ç¨ã - å¦æä½ æ¯å¨éè¡SQL客æ¶ç«¯æå çºå¾å°è¿åäºå¤ªå¤çè³æèåºç¾åé¡ï¼è«å¨éè¡å®¢æ¶ç - «¯ä¹åå·è¡ä¸è¿°å½ä»¤ã - - 4.14) æå¦ä½æè½ç¥éæéè¡çPostgreSQLççæ¬ï¼ - - å¾ psql 裡ï¼è¼¸å¥ SELECT version();æä»¤ã - - 4.15) æå¦ä½åµå»ºä¸åé è¨å¼æ¯ç¶åæéçæ¬ä½ï¼ - - ä½¿ç¨ CURRENT_TIMESTAMPï¼ - CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); - - 4.16) æææ¨£é²è¡ outer join ï¼å¤é£æ¥ï¼ï¼ - - PostgreSQL æ¡ç¨æ¨æºç SQL èªæ³æ¯æå¤é£æ¥ãé裡æ¯å©åä¾åï¼ - SELECT * - FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col); - - ææ¯ - SELECT * - FROM t1 LEFT OUTER JOIN t2 USING (col); - - éå©åçå¹çæ¥è©¢å¨ t1.col å t2.col ä¸å飿¥ï¼ä¸¦ä¸è¿å t1 ä¸ - æææªé£æ¥çè¡ï¼é£äºå¨ t2 䏿²æå¹éçè¡ï¼ã å³[å¤]飿¥ï¼RIGHT OUTER - JOINï¼å°è¿å t2 䏿ªé£æ¥çè¡ã å®å¨å¤é£æ¥ï¼FULL OUTER JOINï¼å°è¿å t1 å t2 - 䏿ªé£æ¥çè¡ã ééµå OUTER å¨å·¦[å¤]飿¥ãå³[å¤]飿¥åå®å¨[å¤]飿¥ä¸ - æ¯å¯é¸çï¼æ®é飿¥è¢«ç¨±çºå§é£æ¥ï¼INNER JOINï¼ã - - 4.17) å¦ä½ä½¿ç¨æ¶åå¤åè³æåº«çæ¥è©¢ï¼ - - æ²æè¾¦æ³æ¥è©¢ç¶åè³æåº«ä¹å¤çè³æåº«ã - å çºPostgreSQLè¦å è¼èè³æåº«ç¸éç系統ç®éï¼ç³»çµ±è¡¨ï¼ï¼å æ - ¤è·¨è³æåº«çæ¥è©¢å¦ä½å·è¡æ¯ä¸å®çã - - éå å¢å¼æ¨¡å¡ contrib/dblink - å許æ¡ç¨å½æ¸èª¿ç¨å¯¦ç¾è·¨åº«æ¥è©¢ãç¶ç¶ç¨æ¶ä¹å¯ä»¥åæé£æ¥å°ä¸åçè³æåº«å·è - ¡æ¥è©¢ç¶å¾å¨å®¢æ¶ç«¯åä½µçµæã - - 4.18) å¦ä½è®å½æ¸è¿åå¤è¡æå¤åè³æï¼ - - å¨å½æ¸ä¸è¿åè³æè¨ééçåè½æ¯å¾å®¹æä½¿ç¨çï¼è©³æåè¦ï¼ - http://techdocs.postgresql.org/guides/SetReturningFunctions - - 4.19) çºä»éº¼æå¨ä½¿ç¨ PL/PgSQL 彿¸ååè¨æè¡¨æææ¶å°é¯èª¤è³è¨ãrelation with OID - ##### does not existãï¼ - - PL/PgSQL æç·©å彿¸çè³æ¬å§å®¹ï¼ç±æ¤å¸¶ä¾çä¸åä¸å¥½çå¯ä½ç¨æ¯è¥ä¸å - PL/PgSQL - 彿¸è¨ªåäºä¸åè¨æè¡¨ï¼ç¶å¾è©²è¡¨è¢«åªé¤ä¸¦é建äºï¼å忬¡èª¿ç¨è©²å½æ¸å°å¤ - ±æï¼ å çºç·©åç彿¸å§å®¹ä»ç¶æåèçè¨æè¡¨ãè§£æ±ºçæ¹æ³æ¯å¨ PL/PgSQL ä¸ - ç¨EXECUTE å°è¨æè¡¨é²è¡è¨ªåã鿍£æä¿èæ¥è©¢å¨å·è¡å總æè¢«éæ°è§£æã - - 4.20) ç®åæåªäºè³æè¤å¯«(replication)æ¹æ¡å¯ç¨ï¼ - - ãè¤å¯«ãåªæ¯ä¸åè¡èªï¼æå¥½å¹¾ç¨®è¤å¯«æè¡å¯ç¨ï¼æ¯ç¨®é½æåªé»å缺é»ï¼ - - 主/å¾å¼è¤å¯«æ¹å¼æ¯å許ä¸å主伺æå¨æ¥åè®/寫çç³è«ï¼èå¤åå¾ä¼ºæå¨åªè½æ¥å - è®/SELECTæ¥è©¢çç³è«ï¼ ç®åææµè¡ä¸åè²»ç主/å¾PostgreSQLè¤å¯«æ¹æ¡æ¯ - Slony-I ã - - å¤å主伺æå¨çè¤å¯«æ¹å¼å許å°è®/寫çç³è«ç¼é給å¤å°ç主æ©ï¼é種æ¹å¼ç±æ¼é - è¦å¨å¤å°ä¼ºæå¨ä¹éåæ¥è³æè®å å¯è½æå¸¶ä¾è¼å´éçæ§è½æå¤±ï¼Pgcluster - æ¯ç®åéç¨®æ¹æ¡ä¸æå¥½çï¼ä¸¦ä¸éå¯ä»¥åè²»ä¸è¼ã - - 乿ä¸äºåæ¥éä»è²»ååºæ¼ç¡¬é«çè³æè¤å¯«æ¹æ¡ï¼æ¯æä¸è¿°å種è¤å¯«æ¨¡åã - - 4.21) çºä½æ¥è©¢çµæé¡¯ç¤ºçè¡¨åææ¬åèæçæ¥è©¢èªå¥ä¸çä¸åï¼çºä½å¤§å¯«çæä¸è½ä¿çï¼ - - æå¸¸è¦çåå æ¯å¨åµå»ºè¡¨æå°è¡¨åææ¯æ¬å使ç¨äºéå¼è( ' ' - )ï¼ç¶ä½¿ç¨äºéå¼èå¾ï¼è¡¨åææ¬åï¼ç¨±çºæ¨è符ï¼å岿æ¯åå 大å°å¯«çï¼ - éæè¬èä½ å¨æ¥è©¢æè¡¨åææ¬åä¹æä½¿ç¨éå¼èï¼ä¸äºå·¥å·è»é«ï¼å pgAdmin - æå¨ç¼åºåµå»ºè¡¨çæä»¤æèªåå°å¨æ¯åæ¨è符ä¸å éå¼èã å æ¤ï¼çºäºæ¨è - 符ççµ±ä¸ï¼ä½ æè©²ï¼ - * å¨åµå»ºè¡¨æé¿åå°æ¨è符使ç¨éå¼èå¼èµ·ä¾ã - * 卿¨è符ä¸åªä½¿ç¨å°å¯«åæ¯ã - * ï¼çºäºèå·²åå¨çæ¨è符ç¸åï¼å¨æ¥è©¢ä¸ä½¿ç¨éå¼èå°æ¨è符å¼èµ·ä¾ã |