´òÓ¡

PostgreSQL ³£¼ûÎÊÌâ

PostgreSQL ³£¼ûÎÊÌâ

³£¼ûÎÊÌâ
1.1)¡¡PostgreSQLÊÇʲô?
PostgreSQL¡¡ÊÇÒ»¸ö¡¡POSTGRES¡¡Êý¾Ý¿â¹ÜÀíϵͳµÄÔöÇ¿°æ£¬ÊÇÒ»¸öÏÂÒ»´ú¡¡DBMS¡¡µÄÑо¿Ô­ÐÍ¡£PostgreSQL¡¡ÔÚ±£³Ö¡¡POSTGRES¡¡µÄÇ¿´óµÄÊý¾ÝÄ£ÐͺͷḻµÄÊý¾ÝÀàÐ͵Ļù´¡ÉÏ£¬ÓÃÒ»¸öÀ©Õ¹Á˵ġ¡SQL¡¡µÄ×Ó¼¯È¡´úÁËÔ­Ïȵġ¡PostQuel¡¡²éѯÓïÑÔ¡£ PostgreSQL¡¡ÊÇ×ÔÓɵIJ¢ÇÒËùÓÐÔ´´úÂë¶¼¿ÉÒÔ»ñµÃ¡£

PostgreSQL¡¡µÄ¿ª·¢ÊÇÓÉÒ»¸ö»¥ÁªÍøÏàÁªµÄ¿ª·¢ÈËÔ±¶ÓÎé½øÐеģ¬ËûÃǶ¼²Î¼Ó¡¡PostgreSQL¡¡¿ª·¢ÓʼþÁÐ±í¡£Ä¿Ç°µÄЭµ÷ÈËÊÇ¡¡ Marc¡¡G.¡¡Fournier¡¡£¨scrappy@postgreSQL.org£©¡££¨ÈçºÎ¼ÓÈë²ÎÔÄÏÂÎÄ£©¡£Õâ¸ö¶ÓÎéÏÖÔÚ¸ºÔð¡¡PostgreSQL ¡¡ËùÓÐĿǰµÄºÍδÀ´µÄ¿ª·¢¡£

PostgreSQL¡¡1.01¡¡µÄ×÷ÕßÊÇ¡¡Andrew¡¡Yu¡¡ºÍ¡¡Jolly¡¡Chen¡£»¹ÓÐÐí¶àÆäËûÈËÎªÒÆÖ²£¬²âÊÔ£¬µ÷ÊÔºÍÔöÇ¿´úÂë×öÁË´óÁ¿¹±Ïס£PostgreSQL¡¡ÆðÔ´µÄ×î³õµÄ¡¡Postgres¡¡µÄ´úÂ룬ÊÇÔÚ¼ÓÖÝ´óѧ²®¿ËÀû·ÖУµÄ¡¡Michael¡¡Stonebraker¡¡½ÌÊÚµÄÖ¸µ¼Ï£¬ÓÉÐí¶àÑо¿Éú£¬±¾¿ÆÉúºÍ±à³ÌÖ°Ô±Íê³ÉµÄ¡£

Õâ¸öÈí¼þ×î³õÔÚ²®¿ËÀûµÄÃû×ÖÊÇ¡¡Postgres¡£ÔÚ¡¡1995¡¡Ä꣬µ±Ôö¼ÓÁË¡¡SQL¡¡¹¦Äܺó£¬ËüµÄÃû×ָijɡ¡Postgres95¡£ÔÚ¡¡1996ÄêÄ©£¬Õâ¸öÃû×Ö¸ÄΪ¡¡PostgreSQL¡£

1.2)¡¡PostgreSQL¡¡µÄ°æÈ¨ÊÇʲô?
PostgreSQL¡¡ÊÜÏÂÃæµÄ°æÈ¨Ô¼Êø¡£

PostgreSQL¡¡Êý¾Ý¿â¹ÜÀíϵͳ

£¨PostgreSQL¡¡Data¡¡Base¡¡Management¡¡System£©

²¿·Ö°æÈ¨£¨c£©1996-2000£¬PostgreSQL£¬Inc¡¡²¿·Ö°æÈ¨£¨c£©1994-6¡¡¼ÓÖÝ´óѧ¶­ÊÂ

£¨Portions¡¡copyright¡¡(c)¡¡1996-2000,¡¡PostgreSQL,¡¡Inc¡¡Portions¡¡Copyright¡¡(c)¡¡1994-6¡¡Regents¡¡of¡¡the¡¡University¡¡of¡¡California£©

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

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

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

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

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

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

1.3)¡¡PostgreSQL¡¡ÔËÐÐÔÚʲôƽ̨ÉÏ£¿
×÷ÕßÃÇÔÚÏÂÃæÕâЩƽ̨ÉϱàÒëºÍ²âÊÔÁË¡¡PostgreSQL¡¡£¨ÆäÖÐÓÐЩƽ̨µÄ±àÒëÒªÇóʹÓá¡gcc£©£º

aix¡¡-¡¡IBM¡¡AIX¡¡3.2.5¡¡»ò¡¡4.x¡¡
alpha¡¡-¡¡Digital¡¡Unix¡¡2.0,¡¡3.2,¡¡4.0¡¡Éϵġ¡DEC¡¡Alpha¡¡AXP¡¡
BSD44_derived¡¡-¡¡´Ó4.4-lite¡¡BSD¡¡·¢Õ¹À´µÄ¡¡OS¡¡£¨NetBSD£¬FreeBSD£©¡¡
bsdi¡¡-¡¡BSD/OS¡¡2.x,¡¡3.x,¡¡4.x¡¡
dgux¡¡-¡¡DG/UX¡¡5.4R4.11¡¡
hpux¡¡-¡¡HP¡¡PA-RISC¡¡Éϵġ¡HP-UX¡¡9.*,¡¡10.*¡¡
i386_solaris¡¡-¡¡i386¡¡Solaris¡¡
irix5¡¡-¡¡SGI¡¡MIPS¡¡Éϵġ¡IRIX¡¡5.3¡¡
linux¡¡-¡¡Intel¡¡i86¡¡Alpha¡¡SPARC¡¡PPC¡¡M68k¡¡
sco¡¡-¡¡SCO¡¡3.2v5¡¡Unixware¡¡
sparc_solaris¡¡-¡¡SUN¡¡SPARC¡¡Éϵġ¡Solaris¡¡2.4,¡¡2.5,¡¡2.5.1¡¡
sunos4¡¡-¡¡SUN¡¡SPARC¡¡Éϵġ¡SunOS¡¡4.1.3¡¡
svr4¡¡-¡¡Intel¡¡x86¡¡Éϵġ¡Intel¡¡SVR4¡¡and¡¡MIPS¡¡
ultrix4¡¡-¡¡DEC¡¡MIPS¡¡Éϵġ¡Ultrix¡¡4.4¡¡
1.4)¡¡¿ÉÓõķǡ¡unix¡¡Æ½Ì¨ÓÐÄÇЩ£¿
°Ñ¡¡libpq¡¡C¡¡¿â£¬psql£¬ºÍÆäËû½Ó¿ÚºÍ¶þ½øÖƱàÒë³É¿ÉÒÔÔÚ¡¡MS¡¡Windows¡¡Æ½Ì¨ÉÏÔËÐÐÊÇ¿ÉÄܵġ£ÕâÖÖÇé¿öÏ£¬¿Í»§¶ËÔÚ¡¡MS¡¡Windows¡¡ÉÏÔËÐУ¬²¢ÇÒͨ¹ý¡¡TCP/IP¡¡ÓëÒ»¸öÔËÐÐÔÚÎÒÃÇÖ§³ÖµÄ¡¡Unix¡¡Æ½Ì¨ÉϵķþÎñÆ÷½øÐÐͨѶ¡£

ÔÚ·¢²¼°üÀïÃæÓÐÒ»¸ö¡¡win31.mak¡¡ÎļþÓÃÓÚÖÆ×÷¡¡Win32¡¡µÄ¡¡libpq¡¡¿âºÍ¡¡psql¡£

Êý¾Ý¿â·þÎñÆ÷ÏÖÔÚ¿ÉÒÔͨ¹ýʹÓá¡Cygnus¡¡Unix/NT¡¡ÒÆÖ²¿âÔÚ¡¡Windows¡¡NT¡¡ÉÏÃæÔËÐС£²ÎÔÄ·¢²¼°üÀïµÄ¡¡pgsql/doc/README.NT¡¡Îļþ¡£

»¹ÓÐÒ»¸ö¡¡web¡¡Ò³ÔÚ¡¡http://www.freebsd.org/~kevlo/po ... uwin/ported.html.¡¡

1.5)¡¡ÎÒÔÚÄÇÀï¿ÉÒԵõ½¡¡PostgreSQL£¿
PostgreSQL¡¡µÄÖ÷ÄäÃû¡¡ftp¡¡Õ¾ÔÚ¡¡ftp://ftp.postgreSQL.org/pub¡¡

¾µÏñÕ¾¿ÉÒԲο¼ÎÒÃÇÍøÕ¾µÄÖ÷Ò³¡£

1.6)¡¡ÎÒ´ÓÄÇÀïÄܵõ½¶Ô¡¡PostgreSQL¡¡µÄÖ§³Ö£¿
¼ÓÖÝ´óѧ²®¿ËÀû·ÖУ²»¶Ô¡¡PostgreSQL¡¡ÌṩÈκιٷ½Ö§³Ö¡£ËüÊÇͨ¹ýÖ¾Ô¸ÕßµÄÐж¯Î¬»¤µÄ¡£

Ö÷ÒªµÄÓʼþÁбíÊÇ£ºpgsql-general@postgreSQL.org¡£¿ÉÒÔÔÚÄÇÀïÌÖÂÛÓйء¡PostgreSQL¡¡µÄÎÊÌâ¡£Òª¼ÓÈëÁÐ±í£¬·¢Ò»·âÓʼþÄÚÈÝ£¨²»ÊÇÖ÷ÌâÐУ©Îª

subscribe
end

µÄÓʼþµ½¡¡pgsql-general-request@postgreSQL.org¡£

»¹¿ÉÒÔ»ñȡժҪÁÐ±í¡£Òª¼ÓÈëÕâ¸öÁÐ±í£¬·¢Óʼþµ½£ºpgsql-general-digest-request@postgreSQL.org£¬ÆäÄÚÈÝΪ£º

subscribe
end

ÿµ±Ö÷Áбí´ïµ½´óÔ¼¡¡30k¡¡µÄÏûÏ¢ÄÚÈÝʱ£¬ÕªÒª¾Í·¢Ë͸øÕâ¸öÁбíµÄ³ÉÔ±¡£

»¹¿ÉÒԲμӳô³æÓʼþÁÐ±í¡£Òª¼ÓÈëÕâ¸öÁÐ±í£¬·¢ËÍÒ»¸öÓʼþµ½¡¡bugs-request@postgreSQL.org£¬ÄÚÈÝΪ£º

subscribe
end

»¹¿ÉÒԲμӿª·¢ÈËÔ±ÓʼþÁÐ±í¡£Òª¼ÓÈëÕâ¸öÁÐ±í£¬·¢ËÍÒ»¸öÓʼþµ½¡¡hackers-request@postgreSQL.org£¬ÄÚÈÝΪ£º

subscribe
end

ÆäËûµÄ¹ØÓÚ¡¡PostgreSQL¡¡ÓʼþÁбíºÍÆäËûÐÅÏ¢¿ÉÒÔÔÚ¡¡PostgreSQL¡¡µÄ¡¡WWW¡¡Ö÷Ò³ÕÒµ½£º

http://postgreSQL.org¡¡

ÔÚ¡¡EFNet¡¡ÀﻹÓÐÒ»¸ö¡¡IRC¡¡ÆµµÀ£¬ÆµµÀ¡¡#PostgreSQL¡£ÎÒÓá¡unix¡¡ÃüÁîirc¡¡-c¡¡'#PostgreSQL'¡¡"$USER"¡¡irc.phoenix.net

PostgreSQL¡¡µÄÉÌÒµÖ§³Ö¿ÉÒÔÔÚ¡¡http://www.pgsql.com/¡¡»ñµÃ¡£

1.7)¡¡PostgreSQL¡¡×îеİ汾ÊÇʲô£¿
PostgreSQL¡¡×îеİ汾Êǰ汾¡¡7.0¡£

ÎÒÃǼƻ®Ã¿ËĸöÔ·¢²¼Ò»¸öÖ÷Òª°æ±¾¡£

1.8)¡¡¿É»ñµÃµÄ¡¡PostgreSQL¡¡ÎĵµÓÐÄÇЩ£¿
ÔÚ·¢²¼°üÀïÓÐһЩÊֲᣬÊÖ²áÒ³ºÍһЩСµÄ²âÊÔÀý×Ó¡£²Î¼û¡¡/doc¡¡Ä¿Â¼¡££¨Òë×¢£ºÓ¦Îª¡¡$PGHOME/doc£©¡£Ä㻹¿ÉÒÔÔÚÏßä¯ÀÀPostgreSQL¡¡µÄÊֲᣬÔÚ¡¡http://www.postgresql.org/docs/postgres.¡£

psql¡¡ÓÐһЩºÜºÃµÄ¡¡\d¡¡ÃüÁÏÔʾ¹ØÓÚÀàÐÍ£¬²Ù×÷·û£¬º¯Êý£¬¾Û¼¯µÈµÄÐÅÏ¢¡£

web¡¡Õ¾°üº¬¸ü¶àµÄÎĵµ¡£

1.9)¡¡ÎÒÈçºÎÁ˽âÒÑÖªµÄ³ô³æºÍȱʧµÄÌØÐÔ£¿
PostgreSQL¡¡Ö§³ÖÒ»¸öÀ©Õ¹Á˵ġ¡SQL-92¡¡µÄ×Ó¼¯¡£²ÎÔÄÎÒÃǵġ¡TODO£¬»ñȡһ¸öÒÑÖª³ô³æ£¬È±Ê§ÌØÐÔºÍδÀ´¼Æ»®µÄÁÐ±í¡£

1.10)¡¡ÎÒÓ¦¸ÃÔõÑùѧϰ¡¡SQL£¿
ÔÚ¡¡http://w3.one.net/~jhoffman/sqlt ... ¡ÓÐÒ»¸öºÜºÃµÄ½Ì³Ì¡£

ÁíÒ»¸öÊÇ¡¡"Teach¡¡Yourself¡¡SQL¡¡in¡¡21¡¡Days,¡¡Second¡¡Edition"£¨21Ììѧ»áSQL£¬µÚ¶þ°æ£©£¬ÔÚ¡¡http://members.tripod.com/er4ebus/sql/index.htm¡¡

ÎÒÃǵÄÐí¶àÓû§Ï²»¶¡¡The¡¡Practical¡¡SQL¡¡Handbook,¡¡Bowman¡¡et¡¡al.,¡¡Addison¡¡Wesley. ¡¡ÆäËûµÄÓС¡Lan¡¡Times¡¡Guide¡¡to¡¡SQL,¡¡Groff¡¡et¡¡al.,¡¡Osborne¡¡McGraw-Hill.

1.11)¡¡PostgreSQL¡¡ÊÇ¡¡Y2K¡¡¼æÈݵÄÂð£¿
ÊÇ£¬ÎÒÃǺÜÈÝÒ׿ØÖÆ¡¡2000AD¡¡Ö®ºóºÍ¡¡2000BC¡¡Ö®Ç°µÄÈÕÆÚ¡£

1.12)¡¡ÎÒÓ¦¸ÃÔõÑù¼ÓÈ뿪·¢¶ÓÎ飿
Ê×ÏÈ£¬ÏÂÔØ×îеÄÔ´´úÂëºÍÔĶÁÎÒÃÇ¡¡web¡¡Õ¾Éϵġ¡PostgreSQL¡¡¿ª·¢ÕßÎĵµ¡£µÚ¶þ£¬¼ÓÈë¡¡pgsql-hackers¡¡ºÍ¡¡pgsql-patches¡¡ÓʼþÁÐ±í¡£µÚÈý£¬Ïò¡¡pgsql-patches¡¡Ìá½»¸ßÖÊÁ¿µÄ²¹¶¡³ÌÐò¡£

ÏÖÔÚ´ó¸ÅÓÐÊ®¼¸¸öÈËÓС¡PostgreSQL¡¡CVS¡¡¹éµµ¡¡COMMIT¡¡µÄȨÏÞ¡£ËûÃǶ¼ÒѾ­Ìá½»Á˷dz£¶à¸ßÖÊÁ¿µÄ²¹¶¡ÁË£¬ÒÔÖÁÓÚÏÖÓеÄÌá½»È˺ÜÄѸúÉϽÚ×࣬²¢ÇÒÎÒÃÇÏàÐÅËûÃÇÌá½»µÄ²¹¶¡¶¼ÊǸßÖÊÁ¿µÄ¡£

1.13)¡¡ÎÒÔõÑùÌá½»Ò»¸ö³ô³æ±¨¸æ£¿
Ìî³ä"bug-template"£¨³ô³æÄ£°å£©ÎļþÈ»ºó·¢Ë͵½£ºbugs@postgreSQL.org

ͬÑùÒ²Òª¿´¿´ÎÒÃǵġ¡ftp¡¡Õ¾µã¡¡ftp://ftp.postgreSQL.org/pub£¬¿´ ... reSQL¡¡°æ±¾»ò²¹¶¡¡£

1.14)¡¡PostgreSQL¡¡ºÍÆäËû¡¡DBMS¡¡±ÈÆðÀ´ÈçºÎ£¿
ÆÀ¼ÛÈí¼þÓкü¸ÖÖ·½·¨£ºÌØÐÔ£¬ÐÔÄÜ£¬¿É¿¿ÐԺͼ۸ñ¡£

ÌØÐÔ¡¡
PostgreSQL¡¡ÓµÓдóÐÍÉÌÓá¡DBMS¡¡Àï´ó¶àÊýÌØÐÔ£¬ÀýÈ磺ÊÂÎñ£¬×Ó²éѯ£¬´¥·¢Æ÷£¬ÊÓͼºÍ¸´ÔÓµÄËø¶¨µÈ¡£ÎÒÃÇ»¹ÓÐһЩËüÃÇûÓеÄÌØÐÔ£¬ÈçÓû§¶¨ÒåÀàÐÍ£¬¼Ì³Ð£¬¹æÔòºÍ¶à°æ±¾²¢ÐпØÖÆÒÔ¼õÉÙËøµÄÕùÓõȡ£ÎÒÃÇ»¹Ã»ÓÐÍâ¼ü²Î¿¼ÍêÕû»òÍⲿÁªºÏ£¨foreign¡¡key¡¡referential¡¡ integrity¡¡or¡¡outer¡¡joins£©£¬²»¹ýÕýÔÚ×¼±¸ÔÚÏÂÒ»¸ö°æ±¾Ôö¼ÓÕâÐ©ÌØÐÔ¡£


ÐÔÄÜ¡¡
PostgreSQL¡¡ÔÚÁ½ÖÖģʽÏÂÔËÐС£Í¨³£µÄ¡¡fsync¡¡£¨Í¬²½£©Ä£Ê½°Ñÿ¸öÍê³ÉµÄÊÂÎñ¶¼³åÏ´µ½´ÅÅÌÉÏ£¬ÒÔ±£Ö¤Èç¹û¡¡OS¡¡±ÀÀ£ÁË»òÕßÔÚϼ¸ÃëÖÓ³öÏÖµôµçµÄÇé¿öÏ£¬ÄãµÄËùÓÐÊý¾Ý¶¼°²È«µØ´æ·ÅÔÚ´ÅÅÌÉÏ¡£ÕâÖÖģʽÏ£¬ÎÒÃDZȴó¶àÊýÉÌÓÃÊý¾Ý¿â¶¼Âý£¬²¿·ÖÔ­ÒòÊÇÒòΪÄÇЩÊý¾Ý¿âȱʡ״̬ϺÜÉÙÕâÑù±£ÊصØÏò´ÅÅ̳åÏ´Êý¾Ý¡£ÔÚ¡¡no-fsync¡¡£¨·Çͬ²½£©Ä£Ê½Ï£¬ÎÒÃÇÒ»°ã¶¼±ÈÉÌÓÃÊý¾Ý¿â¿ì£¬¾¡¹ÜÔÚÕâÖÖģʽÏ£¬Ò»¸ö¡¡OS¡¡µÄ±ÀÀ£½«µ¼ÖÂÊý¾ÝË𻵡£ÎÒÃÇÕýÔÚ½¨ÉèÒ»ÖÖÖмäģʽ£¬ÕâÖÖģʽ±ÈÍêȫͬ²½£¨fsync£©Ä£Ê½µÄÐÔÄÜËðʧС£¬¶øÇÒ½«±£Ö¤ÔÚOS¡¡±ÀÀ£Çé¿öϵġ¡30¡¡ÃëÄÚµÄÊý¾ÝÍêÕû¡£ÕâÖÖģʽ¿ÉÒÔÓÉÊý¾Ý¿â¹ÜÀíԱѡÔñ¡£

Óë¡¡MySQL¡¡»ò¸üÇá±ãµÄÊý¾Ý¿âϵͳ±È½Ï£¬ÎÒÃÇÔÚ¡¡insert/update¡¡Ê±Âý£¬ÒòΪÎÒÃÇÓжîÍâµÄÊÂÎñ´¦Àí¡£µ±È»¡¡MySQL¡¡²»¾ßÓÐÎÒÃÇÔÚÉÏÃæµÄÌØÐÔ¶ÎÀï¸ø³öµÄÈκÎÌØÐÔ¡£ÎÒÃǵÄÖ÷Òª·½ÏòÊÇÁé»îÐÔºÍÌØÐÔ£¬¾¡¹ÜÎÒÃÇͨ¹ýÓÅ»¯ºÍÔ´Âë·ÖÎö²»¶ÏµØ¸Ä½øÐÔÄÜ¡£

ÎÒÃÇͨ¹ý´´½¨Ò»¸ö¡¡Unix¡¡½ø³Ì´¦Àíÿ¸öÓû§µÄÁª½Ó¡£ºó¶Ë½ø³Ì¹²ÏíÊý¾Ý»º³åÇøºÍËøÐÅÏ¢¡£ÔÚ¶à¡¡CPU¡¡µÄÌõ¼þÏ£¬¶à¸öºó¶ËºÜÈÝÒ×ÔËÐÐÔÚ²»Í¬µÄ¡¡CPU¡¡ÉÏ¡£


¿É¿¿ÐÔ¡¡
ÎÒÃÇÖªµÀ¡¡DBMS¡¡±ØÐëÊǿɿ¿µÄ£¬·ñÔòËü¾ÍÒ»µãÓö¼Ã»ÓС£ÎÒÃÇŬÁ¦×öµ½·¢²¼¾­¹ýÈÏÕæ²âÊԵģ¬Îȶ¨µÄ³ô³æ×îÉٵĴúÂ롣ÿ¸ö°æ±¾ÖÁÉÙÓÐÒ»¸öÔµġ¡ beta¡¡²âÊÔ£¬²¢ÇÒÎÒÃǵķ¢²¼ÀúÊ·ÏÔʾÎÒÃÇ¿ÉÒÔÌṩÎȶ¨µÄ£¬Àι̵ģ¬¿ÉÓÃÓÚÉú²úʹÓõİ汾¡£ÎÒÃÇÏàÐÅÔÚÕâ·½ÃæÎÒÃÇÓëÆäËûµÄÊý¾Ý¿âÈí¼þÊÇÏ൱µÄ¡£


Ö§³Ö¡¡
ÎÒÃǵÄÓʼþÁбíÌṩһ¸ö·Ç³£´óµÄ¿ª·¢ÈËÔ±ºÍÓû§µÄ×éÒÔ°ïÖú½â¾öËùÅöµ½µÄÈκÎÎÊÌâ¡£ÎÒÃDz»Äܱ£Ö¤¿Ï¶¨Äܽâ¾öÎÊÌ⣬Ïà±È֮ϣ¬ÉÌÓá¡DBMS¡¡Ò²²¢²»ÊÇ×ÜÄܹ»Ìṩ½â¾ö·½·¨¡£Ö±½ÓÓ뿪·¢ÈËÔ±£¬Óû§Èº£¬ÊÖ²áºÍÔ´³ÌÐò½Ó´¥Áî¡¡PostgreSQL¡¡µÄÖ§³Ö±ÈÆäËû¡¡DBMS¡¡»¹ÒªºÃ¡£»¹ÓÐһЩÉÌÒµÐÔµÄÔ¤°ü×°µÄÖ§³Ö£¬¿ÉÒÔ¸øÌṩ¸øÄÇЩÐèÒªµÄÈË¡££¨²ÎÔÄÖ§³Ö¡¡FAQ¡¡Ìõ¿î¡££©


¼Û¸ñ¡¡
ÎÒÃǶÔÈκÎÓÃ;¶¼Ãâ·Ñ£¬°üÀ¨ÉÌÓúͷÇÉÌÓÃÄ¿µÄ¡£Äã¿ÉÒÔ²»¼ÓÏÞÖÆµØÏòÄãµÄ²úÆ·Àï¼ÓÈëÎÒÃǵĴúÂ룬³ýÁËÄÇЩÎÒÃÇÔÚÉÏÃæµÄ°æÈ¨ÉùÃ÷ÀïÉùÃ÷µÄ¡¡BSD¡¡·ç¸ñµÄ°æÈ¨Íâ¡£

TOP

Óû§¿Í»§ÎÊÌâ
2.1)¡¡ÓС¡PostgreSQL¡¡µÄ¡¡ODBC¡¡Çý¶¯Ã´£¿
ÓÐÁ½¸ö¡¡ODBC¡¡Çý¶¯¿ÉÒÔ»ñµÃ£¬PostODBC¡¡ºÍ¡¡OpenLink¡¡ODBC.

ÔÚ·¢²¼°æ±¾ÀïÃæ°üº¬¡£¹ØÓÚËüµÄ¸ü¶àÐÅÏ¢¿ÉÒÔ´Ó£ºhttp://www.insightdist.com/psqlodbc¡¡»ñµÃ¡£

OpenLink¡¡ODBC¡¡¿ÉÒÔ´Ó¡¡http://www.openlinksw.com¡¡»ñµÃ¡ ... ¡PostgreSQL¡¡ODBC¡£

ËûÃÇ¿ÉÄܽ«Õâ¸ö²úÆ·ÏúÊÛ¸øÄÇЩÐèÒªÉÌÒµÖ§³ÖµÄÓû§£¬µ«ÊÇ×ÜÊÇÓÐÒ»¸ö¡¡freeware¡¡£¨×ÔÓÉÈí¼þ£©µÄ°æ±¾¿ÉÒԵõ½¡£ÇëѯÎÊ¡¡postgres95@openlink.co.uk¡£

2.2)¡¡ÓÐʲô¹¤¾ß¿ÉÒÔ°Ñ¡¡PostgreSQL¡¡ÓÃÓÚ¡¡Web¡¡Ò³Ã棿
Ò»¸ö½éÉÜÒÔÊý¾Ý¿âΪºǫ́µÄ¡¡Web¡¡Ò³ÃæÔÚ£ºhttp://www.webtools.com¡£

»¹ÓÐÒ»¸öÔÚ£ºhttp://www.phone.net/home/mwm/hotlist/¡£

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

PHP¡¡ºÜÊʺÏÓÃÓÚ¼òµ¥ÈÎÎñ£¬µ«¶ÔÓÚ¸ü¸´ÔÓµÄÈÎÎñ£¬¿ÉÒÔʹÓá¡perl¡¡½Ó¿ÚºÍ¡¡CGI.pm¡£

Ò»¸öÒÔ¡¡WDB¡¡Îª»ù´¡£¬Ê¹Óá¡perl¡¡µÄ¡¡WWW¡¡Íø¹Ø¿ÉÒÔ´Ó¡¡http://www.eol.ists.ca/~dunlop/wdb-p95¡¡ÏÂÔØ¡£

2.3)¡¡PostgreSQL¡¡ÓµÓÐͼÐÎÓû§½çÃæÂð£¿Óб¨±íÉú³ÉÆ÷Âð£¿ÓÐǶÈëµÄ²éѯÓïÑÔ½Ó¿ÚÂð£¿
ÎÒÃÇÓÐÒ»¸ö½Ð¡¡pgaccess¡¡µÄºÜºÃµÄͼÐÎÓû§½Ó¿Ú£¬ËüÊÇ×öΪ·¢²¼°æ±¾µÄÒ»²¿·Ö·¢²¼µÄ¡£Pgaccess¡¡»¹ÓÐÒ»¸ö±¨±íÉú³ÉÆ÷¡£ËüµÄÍøÒ³ÔÚ¡¡http://www.flex.ro/pgaccess

ÎÒÃÇ»¹ÓС¡ecpg£¬ËüÊÇÒ»¸öÓÃÓÚ¡¡C¡¡µÄǶÈëµÄ¡¡SQL¡¡²éѯÓïÑÔ½Ó¿Ú¡£

2.4)¡¡ÎÒÃÇ¿ÉÒÔÓÃʲôÓïÑԺ͡¡PostgreSQL¡¡´ò½»µÀ£¿
ÎÒÃÇÓУº

C(libpq)¡¡
C++(libpq++)¡¡
Embedded¡¡C(ecpg)¡¡
Java(jdbc)¡¡
Perl(perl5)¡¡
ODBC(odbc)¡¡
Python(PyGreSQL)¡¡
TCL(libpgtcl)¡¡
C¡¡¼òÒס¡API(libpgeasy)¡¡
ǶÈëµÄ¡¡HTML(PHP£¬À´×Ô¡¡http://www.php.net)¡¡

TOP

¹ÜÀíÔ±ÎÊÌâ
3.1)¡¡ÎªÊ²Ã´¡¡initdb¡¡»áʧ°Ü£¿
¼ì²éһϣ¬È·±£ÄãµÄ·¾¶ÀïûÓÐÈκÎÒÔǰ°æ±¾µÄ¶þ½øÖÆÎļþ£¨Èç¹ûÄã¿´µ½ÏûÏ¢¡¡WARN:heap_modifytuple:¡¡repl¡¡is¡¡\¡¡9£¬ÄÇô¾ÍÊÇÕâ¸öÎÊÌâ¡££©¡¡
¼ì²éһϣ¬¿´¿´ÄãÓÐûÓÐÕýÈ·ÉèÖ÷¾¶¡£¡¡
¼ì²éһϣ¬¿´¿´¡¡postgres¡¡Óû§ÊÇ·ñÓµÓÐÕýÈ·µÄÎļþ¡¡
3.2)¡¡ÎÒÔõÑùÄܰѡ¡PostgreSQL¡¡×°ÔÚ¡¡/usr/local/pgsql¡¡ÒÔÍâµÄµØ·½£¿
×î¼òµ¥µÄ·½·¨ÊÇÔÚÔËÐС¡configure¡¡µÄʱºòÉùÃ÷¡¡--prefix¡¡Ñ¡Ïî¡£Èç¹ûÄãÍü¼ÇÕâô×öÁË£¬Äã¿ÉÒԱ༭¡¡ Makefile.global¡¡²¢ÏàÓ¦µØÐ޸ġ¡POSTGRESDIR£¬»òÕß´´½¨Ò»¸ö¡¡Makefile.custom¡¡²¢ÇÒÔÚÄÇÀﶨÒå¡¡ POSTGRESDIR¡£

3.3)¡¡µ±ÎÒÔËÐС¡postmaster¡¡Ê±£¬ÎÒÊÕµ½Bad¡¡System¡¡Call¡¡£¨ÏµÍ³µ÷ÓÃ´í£©»òÄÚºËÇãµ¹¡£ÎªÊ²Ã´£¿
Õâ¿ÉÄÜÊÇºÜ¶à·½ÃæµÄÎÊÌ⣬µ«Ê×ÏÈÓ¦¸Ã¼ì²éÄãÔÚÄÚºËÀïÅäÖð²×°ÁË¡¡system¡¡V¡¡£¨ÏµÍ³¡¡V£©À©Õ¹¡£PostgreSQL¡¡ÐèÒªÄÚºËÖ§³Ö¹²ÏíÄÚ´æºÍÐźŵơ£

3.4)¡¡µ±ÎÒÊÔͼÔËÐС¡postmaster¡¡Ê±£¬ÎÒÊÕµ½¡¡IpcMemoryCreate¡¡´íÎó¡£ÎªÊ²Ã´£¿
ÄãҪôÊÇûÓÐÔÚÄÚºËÀïÕýÈ·ÅäÖù²ÏíÄڴ棬ҪôÊÇÄãÐèÒªÀ©´óÄãµÄÄں˵ĿÉÓù²ÏíÄÚ´æ¡£ÄãÐèÒªµÄ¹²ÏíÄÚ´æ¾ßÌåµÄÊýÁ¿È¡¾öÓÚÄãµÄÌåϵ½á¹¹ºÍÄãÅäÖÃÄãµÄ¡¡postmaster¡¡ÔËÐÐʱʹÓõĻº³åÇøºÍºó¶Ë½ø³ÌÊýÄ¿¡£¶Ô´ó¶àÊýϵͳ£¬Ê¹ÓÃȱʡ»º³åÇøºÍ½ø³ÌÊýĿʱ£¬Äã×îÉÙÐèÒª~1MB¡£

3.5)¡¡µ±ÎÒÊÔͼÔËÐС¡postmaster¡¡Ê±£¬ÎÒÊÕµ½¡¡IpcSemaphoreCreate¡¡´íÎó¡£ÎªÊ²Ã´£¿
Èç¹û´íÎóÐÅÏ¢ÊÇ¡¡IpcSemaphoreCreate:¡¡semget¡¡failed¡¡(No¡¡space¡¡left¡¡on¡¡device)£¬ÄÇôԭÒòÊÇÄãµÄÄÚºËûÓÐÅäÖÃ×ã¹»µÄÐźŵÆ×ÊÔ´¡£Postgres¡¡µÄÿ¸öDZÔڵĺó¶Ë½ø³Ì¶¼ÐèҪһЩÐźŵơ£Ò»¸öÁÙʱµÄ½â¾ö·½·¨ÊÇÒԱȽÏÉٵĺó¶ËÊýÁ¿£¨²ÎÊý£©Æô¶¯¡¡postmaster¡£Ê¹Óÿª¹Ø¡¡-N¡¡´øÒ»¸öÉÙÓÚȱʡֵ¡¡32¡¡µÄ²ÎÊýÔËÐС¡postmaster¡£¸ü³¤¾ÃµÄ½â¾ö·½·¨ÊǼӴóÄãµÄÄں˵ġ¡ SEMMNS¡¡ºÍ¡¡SEMMNI¡¡²ÎÊý¡£

Èç¹û´íÎóÐÅÏ¢ÊÇÆäËûµÄʲô¶«Î÷£¬Äã¿ÉÄܾ͸ù±¾Ã»ÓÐÔÚÄÚºËÀïÃæÅäÖÃÐźŵÆÖ§³Ö¡£

3.6)¡¡ÎÒÈçºÎ½ûÖ¹ÆäËûÖ÷»ú·ÃÎÊÎҵġ¡PostgreSQL¡¡Êý¾Ý¿â£¿
ȱʡʱ£¬PostgreSQL¡¡Ö»ÔÊÐíͨ¹ý¡¡unix¡¡ÓòÌ×½Ó×ÖÀ´×Ô±¾»úµÄÁª½Ó¡£³ý·ÇÄãʹÓá¡-i¡¡¿ª¹ØÆô¶¯¡¡postmaster£¬²¢ÇÒͨ¹ý¶ÔÓ¦µÄ±à¼­¡¡$PGDATA/pg_hba.conf¡¡Îļþ´ò¿ªÁËÖ÷»úΪ»ù´¡£¨¡¡host-based¡¡£©µÄÈÏÖ¤£¬·ñÔòÆäËû»úÆ÷ÊDz»ÄÜÓëÄãµÄ»úÆ÷Áª½ÓµÄ¡£ÕâÑù½«ÔÊÐí¡¡TCP/IP¡¡Áª½Ó¡£

3.7)¡¡ÎªÊ²Ã´ÎÒÎÞ·¨´ÓÆäËû»úÆ÷ÉÏÁª½Óµ½ÎÒµÄÊý¾Ý¿âÀ´£¿
ȱʡµÄÅäÖÃÖ»ÔÊÐí´Ó±¾µØÀûÓá¡unix¡¡ÓòÌ×½Ó×ÖÓëÊý¾Ý¿âÁª½Ó¡£Òª´ò¿ª¡¡TCP/IP¡¡Áª½Ó£¬È·ÐÅÄãÊÇ´ø×Å¡¡-i¡¡¿ª¹ØÔËÐС¡ postmaster¡¡µÄ£¬²¢ÇÒÏàÓ¦µÄÏòÎļþ¡¡pgsql/data/pg_hba.conf¡¡ÀïÔö¼ÓÁËһЩǡµ±µÄÖ÷»ú¼Ç¼¡£²Î¿¼¡¡ pg_hba.conf¡¡ÊÖ²áÒ³¡£

3.8)¡¡ÎªÊ²Ã´ÎÒ²»ÄÜÒÔ¡¡root¡¡Óû§Éí·Ý·ÃÎÊÊý¾Ý¿â£¿
Äã²»Ó¦ÒÔÓû§±êʶ£¨user¡¡id£©0¡¡£¨root£©´´½¨Êý¾Ý¿â¡£ËûÃǽ«²»ÄÜ·ÃÎÊÊý¾Ý¿â¡£ÕâÊÇÒ»ÖÖ°²È«Ô¤·À´ëÊ©£¬ÒÔ±ÜÃâÈκÎÓû§¶¼Äܶ¯Ì¬µØ°Ñ¶ÔÏóÄ£¿éÓëÊý¾Ý¿â½øÐÐÒýÇæÁ´½Ó¡£

3.9)¡¡ÎªÊ²Ã´ÔÚ²¢ÐзÃÎʱíʱ£¬ÎÒµÄËùÓУ¨Êý¾Ý¿â£©·þÎñÆ÷¶¼±ÀÀ£ÁË£¿
Õâ¸öÎÊÌâ¿ÉÄÜÊÇÒòΪÄÚºËûÓÐÅäÖóÉÖ§³ÖÐźŵÆÒýÆðµÄ¡£

3.10)¡¡ÎÒÔõÑùµ÷½ÚÊý¾Ý¿âÒýÇæÒÔ»ñµÃ¸üºÃµÄÐÔÄÜ£¿
µ±È»£¬Ë÷Òý¿ÉÒÔ¼ÓËÙ²éѯ¡£EXPLAIN¡¡ÃüÁîÔÊÐíÄã¹Û²ì¡¡PostgreSQL¡¡ÈçºÎ½âÊÍÄãµÄ²éѯ£¬ÒÔ¼°Ê¹ÓÃÁËÄĸöË÷Òý¡£

Èç¹ûÄãÕý´¦ÀíÒ»¶Ñ¡¡INSERT£¬¿¼ÂÇʹÓá¡COPY¡¡ÃüÁîÒÔ´óÅúÁ¿µÄ·½Ê½½øÐС£ÕâÑù×ö±Èµ¥¶ÀÒ»¸ö¡¡INSERTS¡¡¿ìµÃ¶à¡£µÚ¶þ£¬Ã»Óд¦ÓÚ¡¡ BEGIN¡¡WORK/COMMIT¡¡ÊÂÎñ¿éÖ®¼äµÄÓï¾ä±»ÈÏΪ´¦ÓÚËüÃÇ×ÔÉíµÄÊÂÎñÀïÃæ¡£ÊÔ×ÅÔÚÒ»¸öÊÂÎñ¿éÀïÃæ´¦Àí¸ü¶àµÄÓï¾ä¡£ÕâÑù¿ÉÒÔ¼õÉÙÊÂÎñ´øÀ´µÄ¹ýºÉ¡£Í¬Ñù£¬ÔÚ×ö´óÁ¿µÄÊý¾Ý¸Ä±äʱ¿¼ÂÇɾ³ýºÍÖØ½¨Ë÷Òý¡£

»¹Óм¸¼þµ÷½ÚµÄ·½·¨¿ÉÒÔʹÓá£Äã¿ÉÒÔͨ¹ý´ø¡¡-o¡¡-F¡¡Ñ¡ÏîÔËÐС¡postmaster¡¡¹Ø±Õ¡¡fsync()¡£ÕâÑù½«±ÜÃâÿ´ÎÊÂÎñºóµ÷Óá¡fsync()¡¡°ÑÊý¾Ý³åË¢µ½´ÅÅÌÉÏ¡£

Ä㻹¿ÉÒÔʹÓá¡postmaster¡¡-B¡¡Ñ¡ÏîÔö¼Óºó¶Ë½ø³ÌʹÓõĹ²ÏíÄڴ滺³åµÄÊýÄ¿¡£Èç¹ûÄã°ÑÕâ¸ö²ÎÊýÉèÖõÃÌ«¸ß£¬postmaster¡¡¿ÉÄÜÎÞ·¨Æô¶¯£¬ÒòΪÄãÒѾ­³¬¹ýÁËÄãµÄÄÚºËÔÚ¹²ÏíÄÚ´æ¿Õ¼äÉϵÄÏÞÖÆ¡£Ã¿¸ö»º³åÇøÊÇ¡¡8K¡¡²¢ÇÒȱʡ¡¡64¡¡¸ö»º³åÇø¡£

Ä㻹¿ÉÒÔʹÓúó¶ËµÄ¡¡-S¡¡Ñ¡ÏîÀ´Ôö¼Óÿ¸öºó¶ËÓÃÓÚÁÙʱÅÅÐòÓõÄ×î´óÄÚ´æÊýÁ¿¡£-S¡¡ÖµÊÇÒÔǧ×ֽڼƵģ¬È±Ê¡ÊÇ¡¡512¡¡£¨Ò²¾ÍÊÇ˵£¬512K£©¡£°ÑÕâ¸öÊýÄ¿¸ãµÃÌ«´óÒ²²»ÊǸöºÃÖ÷Ò⣬ÒòΪÄã¿ÉÄÜÔÚÒ»¸ö²éѯ¼¤»î¶à¸ö²¢ÐÐÅÅÐòʱÓùâÄÚ´æ¡£

Ä㻹¿ÉÒÔʹÓá¡CLUSTER¡¡ÃüÁîÀ´°ÑÒ»¸ö»ù±¾±íÀïµÄÊý¾Ý°´ÕÕË÷ÒýµÄÆ¥Åä½øÐзÖ×é¡£²ÎÔÄ¡¡cluster(l)¡¡µÄÊÖ²áÒ³»ñÈ¡¸ü¶àϸ½Ú¡£

3.11)¡¡PostgreSQL¡¡Àï¿ÉÒÔ»ñµÃʲôÑùµÄµ÷ÊÔÌØÐÔ£¿
PostgreSQL¡¡Óм¸¸öÌØÐÔÓÃÓÚ±¨¸æ×´Ì¬ÐÅÏ¢£¬ÕâЩÐÅÏ¢¿ÉÄܶԵ÷ÊÔÓÃ;ºÜÓаïÖú¡£

Ê×ÏÈ£¬Í¨¹ý¸½´ø¡¡--enable-cassert¡¡Ñ¡ÏîÔËÐС¡configure£¬Óкܶࡡassert()¡¡¼à¿Øºó¶ËµÄ¹ý³ÌºÍÔÚ·¢ÉúÄ³Ð©Î´ÔøÔ¤ÁϵÄÏÖÏóʱֹͣ³ÌÐòÔËÐС£

postmaster¡¡ºÍ¡¡postgres¡¡¶¼ÓÐһЩ¿ÉÓõÄÑ¡Ïî¡£Ê×ÏÈ£¬µ±ÄãÆô¶¯¡¡postmaster¡¡Ê±£¬È·±£Äã°Ñ±ê×¼Êä³öºÍ±ê×¼´íÎó¶¨Ïòµ½ÁËÒ»¸öÈÕÖ¾ÎļþÀïÈ¥ÁË£¬Ïó£º

cd¡¡/usr/local/pgsql
./bin/postmaster¡¡>server.log¡¡2>&1¡¡&

ÕâÑù½«ÔÚ¡¡PostgreSQL¡¡¶¥¼¶Ä¿Â¼ÏÂÊä³öÒ»¸ö¡¡server.log¡¡Îļþ¡£Õâ¸öÎļþ°üº¬·þÎñÆ÷Åöµ½µÄÎÊÌâºÍ´íÎóµÄÓÐÓÃÐÅÏ¢¡£ postmaster¡¡ÓÐÒ»¸ö¡¡-d¡¡Ñ¡Ï¸ÃÑ¡ÏîÔÊÐíÎÒÃÇ»ñµÃ¸ü¶àµÄϸ½Ú»ã±¨¡£-d¡¡Ñ¡Ïî½ÓÊÜÒ»¸öÊý×Ö±êÃ÷µ÷ÊÔ¼¶±ð¡£ÐèÒª¾¯¸æµÄÊǸߵĵ÷ÊÔ¼¶±ð¿ÉÄÜ»áÉú³É¾Þ´óµÄÈÕÖ¾Îļþ¡£

Äãʵ¼ÊÉÏ¿ÉÒÔÖ±½ÓÔÚÃüÁîÐÐÉÏÔËÐС¡postgres¡¡ºó¶Ë£¬È»ºóÖ±½Ó¼üÈëÄãµÄ¡¡SQL¡¡Óï¾ä¡£ÎÒÃÇÖ»ÍÆ¼öÔÚµ÷ÊÔµÄʱºòÕâô¸É¡£Çë×¢ÒâÕâʱһ¸öÐÂÐнáÊøÒ»¸ö²éѯ£¬¶ø²»ÊÇÒ»¸ö·ÖºÅ¡£Èç¹ûÄã´ø×ŵ÷ÊÔ·ûºÅ±àÒ룬Äã¿ÉÒÔʹÓÃÒ»¸öµ÷ÊÔÆ÷¹Û¿´·¢ÉúÁËʲôÊÂÇé¡£ÒòΪºó¶ËûÓÐÓÉ¡¡postmaster¡¡Æô¶¯µÄ£¬Ëü²»ÊÇÔÚÒ»¸öµäÐ͵Ļ·¾³ÀïÔËÐжøÇÒËø¶¨/ºó¶Ë½»»¥ÎÊÌâ¿ÉÄܲ»Äܸ´ÏÖ¡£ÓÐЩµ÷ÊÔÆ÷¿ÉÒÔ¸½¼Óµ½Ò»¸öÒÑÔËÐеĺó¶ËÉÏ£»ÄÇÊÇÔÚÒ»¸öÕý³£µÄ¶àºó¶Ë»·¾³ÏÂÕï¶ÏÎÊÌâµÄ×î·½±ãµÄ·½·¨¡£

postgres¡¡³ÌÐòÓС¡-s£¬-A£¬ºÍ¡¡-t¡¡Ñ¡Ïî¿ÉÄÜÔÚµ÷ÊÔºÍÐÔÄܲâÁ¿µÄʱºò·Ç³£ÓÐÓá£

Ä㻹¿ÉÒÔ´ø¹¹ÐÎÎļþ±àÒëºó¶Ë£¬ÒÔ±ã¹Û²ìʲôº¯ÊýÕ¼¾Ý×ÅÖ´ÐÐʱ¼ä¡£ºó¶Ë¹¹ÐÎÎļþ½«·ÅÔÚ¡¡pgsql/data/base/dbname¡¡Ä¿Â¼Ï¡£¿Í»§¶Ë¹¹ÐÎÎļþ½«·ÅÔÚ¿Í»§¶Ëµ±Ç°Ä¿Â¼Ï¡£

3.12)¡¡µ±ÎÒÊÔͼÁª½ÓʱÊÕµ½'Sorry,¡¡too¡¡many¡¡clients'¡¡ÏûÏ¢¡£ÕâÊÇΪʲô£¿
ÄãÐèÒªÔö´ó¡¡postmaster¡¡¹ØÓÚËü¿ÉÒÔÆô¶¯µÄ²¢·¢ºó¶Ë½ø³ÌÊýÄ¿µÄÏÞÖÆ¡£

ÔÚ¡¡Postgres¡¡6.5¡¡¼°ÒÔÉϰ汾£¬È±Ê¡ÏÞÖÆÊÇ¡¡32¡¡½ø³Ì¡£Äã¿ÉÒÔͨ¹ý´ø×ÅÊʵ±µÄ¡¡-N¡¡Öµ¿ª¹ØÆô¶¯¡¡postmaster¡¡Ôö¼ÓÕâ¸öÊýÄ¿¡£È±Ê¡ÅäÖÃÏÂÄã×î´ó¿ÉÒÔ°Ñ¡¡-N¡¡ÉèÖÃΪ¡¡1024£»Èç¹ûÄãÐèÒª¸ü¶àºó¶Ë½ø³Ì£¬Ôö´ó¡¡include/config.h¡¡ÀïµÄ¡¡ MAXBACKENDS¡¡ÖµÈ»ºóÖØÐÂÖÆ×÷¡£Èç¹ûÄãÔ¸Ò⣬Äã¿ÉÒÔÔÚÅäÖõÄʱºòÉèÖá¡-N¡¡µÄȱʡֵ£ºÊ¹Óá¡configure¡¡µÄ¡¡--with- maxbackends¡¡¿ª¹Ø¡£

ҪעÒâÈç¹ûÄã°Ñ¡¡-N¡¡ÉèÖÃΪ´óÓÚ¡¡32£¬Äã±ØÐëͬÑùÔö´ó¡¡-B£¬³¬¹ýËüȱʡµÄ¡¡64£»-B¡¡±ØÐë×îÉÙÊÇ¡¡-N¡¡µÄÁ½±¶£¬¶øÇÒΪÁ˸üºÃµÄÐÔÄÜ¿ÉÄÜÒª±ÈÄǸöÊý×ÖÒª´ó¡£¶ÔÓÚ´óÊýÄ¿µÄºó¶Ë½ø³Ì£¬Äã¿ÉÄÜ»¹»á·¢ÏÖÄ㻹ÐèÒªÔö¼ÓÐí¶à¡¡Unix¡¡ÄÚºËÅäÖòÎÊýÖµ¡£Òª¼ì²éµÄ¶«Î÷°üÀ¨¹²ÏíÄÚ´æ¿éµÄ×î´ó³ß´ç£¬ SHMMAX£¬ÐźŵƵÄ×î´óÊýÄ¿£¬SEMMNS¡¡ºÍ¡¡SEMMNI£¬×î´óµÄ½ø³ÌÊý£¬NPROC£¬µ¥Óû§×î´ó½ø³ÌÊý£¬MAXUPRC£¬ÒÔ¼°´ò¿ªÎļþµÄ×î´óÊýÄ¿£¬NFILE¡¡ºÍ¡¡NINODE¡£Postgres¡¡¶ÔÔÊÐíµÄºó¶Ë½ø³ÌÊýÓÐÏÞÖÆµÄÔ­ÒòÊÇΪÁËÈ·±£ÄãµÄϵͳ²»»áÓùâ×ÊÔ´¡£

ÔÚ¡¡Postgres¡¡ÔçÓÚ¡¡6.5¡¡µÄ°æ±¾£¬×î´óºó¶ËÊýĿȱʡÊÇ¡¡64£¬²¢ÇÒ¶ÔËüµÄÐÞ¸ÄÊ×ÏÈÐèÒªÐ޸ġ¡include/storage/sinvaladt.h¡¡ÀïµÄ¡¡MaxBackendId¡¡³£Á¿£¬È»ºóÖØÐÂÖÆ×÷¡£

3.13)¡¡ÎÒµÄÊý¾Ý¿âĿ¼ÀïÃæµÄ¡¡pg_tempNNN.NN¡¡ÎļþÊÇʲô£¿
ÕâЩÊDzéѯִÐÐÆ÷Éú³ÉµÄÁÙʱÎļþ¡£ÀýÈ磬Èç¹ûÐèҪΪÂú×ã¡¡ORDER¡¡BY¡¡Ìõ¼þ×öÅÅÐò£¬²¢ÇÒÅÅÐòÐèÒª±Èºó¶ËµÄ¡¡-S¡¡²ÎÊý¸ø³öµÄ¸ü¶àµÄ¿Õ¼ä£¬ÄÇô¾Í»á´´½¨Ò»¸öÁÙʱÎļþ±£´æ¶à³öÀ´µÄÊý¾Ý¡£

ÁÙʱÎļþÓ¦¸Ã×Ô¶¯Ïûʧ£¬²»¹ýÈç¹ûÔÚÅÅÐò¹ý³ÌÖкó¶Ë±ÀÀ£Á˾ͿÉÄܲ»ÄÜ×Ô¶¯ÏûʧÁË¡£Èç¹ûĿǰûÓÐʲôÊÂÎñÔÚÔËÐУ¬°Ñ¡¡pg_tempNNN.NN¡¡Îļþɾ³ýÊǰ²È«µÄ¡£

3.14)ÎÒÈçºÎÉèÖÃÒ»¸ö¡¡pg_group£¿
Ŀǰ£¬ÎÒÃǽ¨Á¢Ò»¸öÓû§×黹ûÓмòµ¥µÄ½Ó¿Ú¡£Äã²»µÃ²»ÏÔʽµÄ¡¡insert/update¡¡pg_group¡¡±í¡£ÀýÈ磺

jolly=>¡¡insert¡¡into¡¡pg_group¡¡(groname,¡¡grosysid,¡¡grolist)
jolly=>¡¡¡¡¡¡¡¡¡¡values¡¡('posthackers',¡¡'1234',¡¡'{5443,¡¡8261}');
INSERT¡¡548224
jolly=>¡¡grant¡¡insert¡¡on¡¡foo¡¡to¡¡group¡¡posthackers;
CHANGE
jolly=>

pg_group¡¡ÀïµÄ×Ö¶ÎÊÇ£º

groname£º×éÃû³Æ¡£ÕâÊÇÒ»¸öÃû³Æ²¢ÇÒÓ¦¸ÃÍêÈ«ÓÉ×ÖĸºÍÊý×Ö×é³É¡£²»Òª°üº¬Ï»®ÏßºÍÆäËû±êµã¡£¡¡
grosysid£º×é¡¡id£¬ÕâÊÇÒ»¸ö¡¡int4¡£Ó¦¸ÃÔÚËùÓÐ×éÖÐΨһ¡£¡¡
grolist£ºÊôÓÚÕâ¸ö×éµÄ¡¡pg_user¡¡id¡¡µÄÁÐ±í¡£ÕâÊÇÒ»¸ö¡¡int4[]¡£

TOP

²Ù×÷ÎÊÌâ
4.1)¡¡ÏµÍ³¿´ÆðÀ´±»¶ººÅ£¬Ð¡ÊýµãºÍÈÕÆÚ¸ñʽŪºýÍ¿ÁË¡£
¼ì²éÄãµÄ±¾µØ»¯£¨locale£©ÅäÖá£PostgreSQL¡¡Ê¹ÓÃÓû§µÄ±¾µØ»¯ÅäÖÃÔËÐС¡postmaster¡¡½ø³Ì¡£¿ÉÒÔÓá¡postgres¡¡ºÍ¡¡psql¡¡SET¡¡ÃüÁî¿ØÖÆÈÕÆÚ¸ñʽ¡£¸ù¾ÝÄãµÄ²Ù×÷»·¾³ÉèÖÃÄÇЩֵ¡£

4.2)¡¡¶þ½øÖÆÓαêºÍÆÕͨÓαêÖ®¼ä׼ȷµÄÇø±ðÊÇʲô£¿
²ÎÔÄ¡¡DECLARE¡¡ÊÖ²áÒ³»ñÈ¡ÐÅÏ¢¡£

4.3)ÎÒÈçºÎÖ»¡¡SELECT¡¡£¨Ñ¡È¡£©Ò»¸ö²éѯµÄÍ·¼¸ÐУ¿
²ÎÔÄ¡¡FETCH¡¡ÊÖ²áÒ³£¬»òÕßʹÓá¡SELECT¡¡...¡¡LIMIT....

¼´Ê¹ÄãÖ»ÐèÒª¿ªÍ·µÄ¼¸ÐУ¬Ò²»áÉæ¼°µ½Õû¸ö²éѯ¡£ÊÔ×ÅʹÓôøÓС¡ORDER¡¡BY¡¡µÄ²éѯ¡£Èç¹ûÓÐÒ»¸öË÷ÒýÓë¡¡ORDER¡¡BY¡¡Æ¥Å䣬PostgreSQL¡¡¿ÉÄܾÍÖ»¼ÆËãÒªÇóµÄÍ·¼¸Ìõ¼Ç¼£¬·ñÔò½«¶ÔÕû¸ö²éѯ½øÐмÆËãÖ±µ½Éú³ÉÐèÒªµÄÐС£

4.4)¡¡ÎÒÈçºÎ»ñȡһ¸ö±íµÄÁÐ±í£¬»òÕßÊÇÆäËûÎÒÄÜÔÚ¡¡psql¡¡Àï¿´µ½µÄ¶«Î÷£¿
Äã¿ÉÒÔÔĶÁ¡¡psql¡¡µÄÔ´´úÂ룬Îļþ¡¡pgsql/src/bin/psql/psql.c¡£Ëü°üÀ¨ÎªÉú³É¡¡psql¡¡µÄ·´Ð±¸ÜÃüÁîµÄÊä³öµÄ¡¡SQL¡¡ÃüÁî¡£Ä㻹¿ÉÒÔ´ø×Å¡¡-E¡¡Ñ¡ÏîÆô¶¯¡¡psql£¬ÕâÑùËü½«´òÓ¡³öÖ´ÐÐÄã¸ø³öµÄÃüÁîËùÓõIJéѯ¡£

4.5)¡¡ÄãÔõÑù´ÓÒ»¸ö±íÀïÃæÉ¾³ýÒ»¸öÁУ¿
ÎÒÃDz»Ö§³Ö¡¡ALTER¡¡TABLE¡¡DROP¡¡COLUMN£¬µ«¿ÉÒÔÕâÑù×ö£º

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;

4.6)¡¡Ò»ÐУ¬Ò»¸ö±í£¬Ò»¸ö¿âµÄ×î´ó³ß´çÊǶàÉÙ£¿
Ðб»ÏÞÖÆÔÚ¡¡8K¡¡×Ö½ÚÒÔÄÚ£¬µ«ÊÇ¿ÉÒÔͨ¹ý±à¼­¡¡include/config.h¡¡ºÍÐ޸ġ¡BLCKSZ¡¡¶ø¸Ä±ä¡£ÒªÊ¹ÓôóÓÚ¡¡8K¡¡µÄ×ֶΣ¬Ä㻹¿ÉÒÔʹÓôó¶ÔÏó½Ó¿Ú¡£

Ðв»»áÕÛµþ¡¡8k¡¡µÄ±ß½ç£¬ËùÒÔ¡¡5k¡¡µÄÐн«ÐèÒª¡¡8k¡¡´æ´¢¿Õ¼ä¡£

±íºÍÊý¾Ý¿â³ß´çûÓÐÏÞÖÆ¡£ÓÐÐí¶àÊý¾Ý¿âÓм¸Ê®G×ֽڴ󣬿ÉÄÜ»¹Óм¸°ÙG×Ö½ÚµÄÊý¾Ý¿â¡£

4.7)´æ´¢Ò»¸öµäÐÍµÄÆ½ÃæÎļþÀïµÄÊý¾ÝÐèÒª¶àÉÙ´ÅÅ̿ռ䣿
Ò»¸ö¡¡Postgres¡¡Êý¾Ý¿â¿ÉÄÜÐèÒª´óÔ¼Ï൱ÓÚÔÚÒ»¸öÆ½ÃæÎļþÀï´æ´¢ÏàͬÊý¾ÝµÄ6.5±¶µÄ´ÅÅ̿ռ䡣

¼ÙÉèÒ»¸öÎļþÓС¡300,000¡¡ÐУ¬Ã¿ÐÐÓÐÁ½¸öÕûÊý¡£Æ½ÃæÎļþÊÇ¡¡2.4MB¡£¶ø°üº¬ÕâЩÊý¾ÝµÄ¡¡PostgreSQL¡¡Êý¾Ý¿âÎļþµÄ´óСԤ¼Æ¿É´ï¡¡14MB£º¡¡

¡¡¡¡¡¡¡¡36¡¡bytes:¡¡each¡¡row¡¡header¡¡(approximate)£¨Ã¿ÐеÄÍ·£¬¹À¼ÆÖµ£©
¡¡¡¡¡¡+¡¡8¡¡bytes:¡¡two¡¡int¡¡fields¡¡@¡¡4¡¡bytes¡¡each£¨Á½¸öÕûÊý×ֶΣ¬Ã¿¸ö4×Ö½Ú£©
¡¡¡¡¡¡+¡¡4¡¡bytes:¡¡pointer¡¡on¡¡page¡¡to¡¡tuple£¨Ò³ÃæÀïÖ¸Ïò¼Ç¼µÄÖ¸Õ룩
¡¡¡¡¡¡----------------------------------------
¡¡¡¡¡¡¡¡48¡¡bytes¡¡per¡¡row£¨Ã¿ÐС¡48¡¡×Ö½Ú£©

¡¡¡¡¡¡The¡¡data¡¡page¡¡size¡¡in¡¡PostgreSQL¡¡is¡¡8192¡¡bytes¡¡(8¡¡KB),¡¡so:£¨PostgreSQL¡¡ÀïµÄÊý¾ÝÒ³ÃæµÄ³ß´çÊÇ¡¡8K£¬Òò´Ë£º£©

¡¡¡¡¡¡8192¡¡bytes¡¡per¡¡page
¡¡¡¡¡¡-------------------¡¡¡¡¡¡=¡¡¡¡171¡¡rows¡¡per¡¡database¡¡page¡¡(rounded¡¡up)£¨Ô²Õûºó¡¡117ÐÐ/Êý¾Ý¿âÒ³£©
¡¡¡¡¡¡¡¡¡¡48¡¡bytes¡¡per¡¡row

¡¡¡¡¡¡300000¡¡data¡¡rows
¡¡¡¡¡¡--------------------¡¡¡¡=¡¡¡¡1755¡¡database¡¡pages£¨1755Êý¾Ý¿âÒ³Ãæ£©
¡¡¡¡¡¡¡¡¡¡¡¡171¡¡rows¡¡per¡¡page

1755¡¡database¡¡pages¡¡*¡¡8192¡¡bytes¡¡per¡¡page¡¡¡¡=¡¡¡¡14,376,960¡¡bytes¡¡(14MB)

Ë÷ÒýûÓÐÕâô¶à¶îÍâµÄ¶«Î÷£¬µ«ÊÇ»¹Êǰüº¬±»Ë÷ÒýµÄÊý¾Ý£¬ËùÒÔËûÃÇ¿ÉÄÜÒ²ºÜ´ó¡£

4.8)¡¡ÎÒÈçºÎ²é¿´Ò»¸öÊý¾Ý¿âÀïÃæ¶¨ÒåÁËÄÇЩË÷Òý»òÕß²Ù×÷£¿
psql¡¡ÓÐÐí¶à·´Ð±¸ÜÃüÁîÓÃÓÚÏÔʾÕâЩÐÅÏ¢¡£Óá¡\?¡¡¿´¿´¶¼ÓÐÄÇЩ¡£

ͬÑù¿ÉÒÔÊÔÊÔÎļþ¡¡pgsql/src/tutorial/syscat.source¡£ËüÑÝʾÁËÐí¶à´ÓÊý¾Ý¿âϵͳ±íÀï»ñÈ¡ÐÅÏ¢ÐèÒªµÄ¡¡SELECT¡£

4.9)¡¡ÎҵIJéѯºÜÂý»òÕßûÓÐÀûÓÃË÷Òý¡£ÎªÊ²Ã´£¿
PostgreSQL¡¡²¢²»×Ô¶¯Î¬»¤Í³¼ÆÊý¾Ý¡£ÎÒÃDZØÐë½øÐÐÒ»´ÎÏÔʽµÄ¡¡VACUUM¡¡µ÷ÓÃÀ´¸üÐÂͳ¼ÆÊý¾Ý¡£ÔÚͳ¼ÆÊý¾Ý¸üÐÂÖ®ºó£¬ÓÅ»¯Æ÷¾ÍÖªµÀ±íÀïÃæÓжàÉÙÊý¾ÝÐУ¬Òò¶ø¾Í¿ÉÒÔ¸üºÃµÄÅжÏÊÇ·ñÓ¦¸ÃʹÓÃË÷Òý¡£Òª×¢Òâµ±±íºÜСµÄʱºòÓÅ»¯Æ÷²¢²»Ê¹ÓÃË÷Òý£¬ÒòΪÕâʱºòÒ»´Î˳ÐòɨÃè»á¸ü¿ì¡£

¶ÔÓÚ×Ö¶ÎÏà¹ØµÄÓÅ»¯Í³¼Æ£¬Ê¹Óá¡VACUUM¡¡ANALYZE¡£VACUUM¡¡ANALYZE¡¡¶ÔÓÚ¸´ÔӵĶàÁªºÏ²éѯÊǷdz£ÖØÒªµÄ£¬ÒòΪÕâÑùÓÅ»¯Æ÷¿ÉÒÔ¼ÆËã´Óÿ¸ö±íÀïÃæ·µ»ØµÄÐеÄÊýÄ¿£¬È»ºóÑ¡ÔñºÏÊʵÄÁªºÏ˳Ðò¡£ºó¶Ë±¾Éí²¢²»¸ú×Ù×Ö¶Îͳ¼Æ£¬Òò¶ø±ØÐëÖÜÆÚµÄÔËÐС¡VACUUM¡¡ANALYZE¡¡ÒÔ±ãÊÕ¼¯ÕâЩÐÅÏ¢¡£

Ë÷Òýͨ³£²»ÓÃÓÚ¡¡ORDER¡¡BY¡¡²Ù×÷£º¶ÔÒ»¸ö´ó±íµÄÒ»´Î˳ÐòɨÃèÈ»ºó¸ú×ÅÒ»¸öÏÔʽµÄÅÅÐò±È¶ÔËùÓмǼµÄË÷ÒýɨÃèÒª¿ì£¬ÒòΪǰÕߵĴÅÅÌ·ÃÎʸüÉÙ¡£

µ±Ê¹ÓÃÄ£ºý²Ù×÷·û£¬±ÈÈç¡¡LIKE¡¡»ò¡¡~£¬Ö»ÓÐÔÚËÑË÷µÄ¿ªÊ¼ÊǹÒÔÚ×Ö´®µÄ¿ªÍ·²¿·Öʱ²ÅÓõõ½Ë÷Òý¡£Òò¶øÒªÊ¹ÓÃË÷Òý£¬LIKE¡¡ËÑË÷²»Ó¦¸ÃÒÔ¡¡%¡¡¿ªÍ·£¬¶ø~£¨¹æÔò±í´ïʽËÑË÷£©Ó¦¸ÃÒÔ^¡¡¿ªÍ·¡£¡¡

4.10)¡¡ÎÒÈçºÎ²ÅÄÜ¿´µ½²éѯÓÅ»¯Æ÷ÊÇÔõÑù¼ÆËãÎҵIJéѯµÄ£¿
²Î¿¼¡¡EXPLAIN¡¡ÊÖ²áÒ³¡£

4.11)¡¡R-tree¡¡Ë÷ÒýÊÇʲô£¿
r-tree¡¡Ë÷ÒýÓÃÓÚË÷Òý¿Õ¼äÊý¾Ý¡£Ò»¸ö¹þÏ£Ë÷ÒýÎÞ·¨´¦Àí·¶Î§ËÑË÷¡£¶ø¡¡B-tree¡¡Ë÷ÒýÖ»ÄÜ´¦ÀíһάµÄ·¶Î§ËÑË÷¡£R-tree¡¡Ë÷Òý¿ÉÒÔ´¦Àí¶àάÊý¾Ý¡£ÀýÈ磬Èç¹û¿ÉÒÔÔÚÒ»¸öÀàÐÍΪ¡¡point¡¡µÄ×Ö¶ÎÉϽ¨Á¢Ò»¸ö¡¡R-tree¡¡Ë÷Òý£¬ÄÇôϵͳÔڻشðÀàËÆ¡¡select¡¡all¡¡points ¡¡within¡¡a¡¡bounding¡¡rectangle¡¡£¨Ñ¡ÔñÔÚÒ»¸ö³¤·½Ðη¶Î§ÄÚµÄËùÓе㣩ÕâÑùµÄ²éѯʱÓиü¸ßµÄЧÂÊ¡£

ÃèÊö×î³õµÄ¡¡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-Trees¡¡¿ÉÒÔ´¦Àí¶à±ßÐκͷ½ÐΡ£ÀíÂÛÉÏ˵£¬R-trees¡¡¿ÉÒÔÀ©Õ¹Îª´¦Àí¸ü¶àάÊý¡£²»¹ýÔÚʵ¼ùÉÏ£¬À©Õ¹¡¡R-trees¡¡ÐèÒªÒ»¶¨µÄ¹¤×÷Á¿£¬¶øÎÒÃÇĿǰûÓÐÈçºÎ×öµÄÎĵµ¡£

4.12)¡¡Ê²Ã´ÊÇ»ùÒò²éѯÓÅ»¯£¨Genetic¡¡Query¡¡Optimization£©£¿
PostgreSQL¡¡ÀïÃæµÄ¡¡GEQO¡¡Ä£¿éÊÔͼʹÓÃÒ»ÖֽлùÒòËã·¨£¨¡¡Genetic¡¡Algorithm¡¡(GA)£©½â¾öÁªºÏÐí¶à±íµÄ²éѯÓÅ»¯ÎÊÌâ¡£ËüÔÊÐíͨ¹ý·ÇÇËÑË÷´¦Àí´óµÄÁªºÏ²éѯ¡£

¸ü¶àÐÅÏ¢Çë²Î¿¼Îĵµ¡£

4.13)¡¡ÎÒÔõÑù×ö¹æÔò±í´ïʽËÑË÷ºÍ´óСдÎÞ¹ØËÑË÷£¿
²Ù×÷·û¡¡~¡¡´¦Àí¹æÔò±í´ïʽƥÅ䣬¶ø¡¡~*¡¡´¦Àí´óСдÎ޹صĹæÔò±í´ïʽƥÅä¡£LIKE¡¡²Ù×÷·ûÀïÃæÃ»ÓдóСдÎ޹صÄÓ÷¨£¬²»¹ýÄã¿ÉÒÔͨ¹ýÏÂÃæµÄÓ÷¨»ñµÃ´óСдÎ޹صġ¡LIKE£º

WHERE¡¡lower(textfield)¡¡LIKE¡¡lower(pattern)

4.14)¡¡ÔÚÒ»¸ö²éѯÀÎÒÔõÑù¼ì²âÒ»¸ö×Ö¶ÎÊÇ·ñΪ¡¡NULL£¿
ÄãÓá¡IS¡¡NULL¡¡ºÍ¡¡IS¡¡NOT¡¡NULL¡¡²âÊÔÕâ¸ö×ֶΡ£

4.15)¡¡¸÷ÖÖ×Ö·ûÀàÐÍÖ®¼äÓÐʲô²»Í¬£¿
Type¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Internal¡¡Name¡¡¡¡¡¡Notes
--------------------------------------------------
"char"¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡char¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡1¡¡character
CHAR(#)¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡bpchar¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡blank¡¡padded¡¡to¡¡the¡¡specified¡¡fixed¡¡length
VARCHAR(#)¡¡¡¡¡¡¡¡¡¡¡¡varchar¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡size¡¡specifies¡¡maximum¡¡length,¡¡no¡¡padding
TEXT¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡text¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡length¡¡limited¡¡only¡¡by¡¡maximum¡¡row¡¡length
BYTEA¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡bytea¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡variable-length¡¡array¡¡of¡¡bytes

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

ÉÏÃæ×îºóËÄÖÖÀàÐÍÊÇ"varlena"£¨±ä³¤£©ÀàÐÍ£¨Ò²¾ÍÊÇ˵£¬¿ªÍ·µÄËĸö×Ö½ÚÊdz¤¶È£¬ºóÃæ¸ú×ÅÊý¾Ý£©¡£char(#)¡¡·ÖÅä×î¶à¸öÊý×Ö½Ú£¬²»¹ÜÔÚÊý¾ÝÓòÀïÃæÓжàÉÙÊý¾Ý¡£¡¡text£¬varchar(#)£¬ºÍ¡¡bytea¡¡¶¼ÔÚ´ÅÅÌÉÏÓб䳤µÄ³¤¶È£¬Òò´Ë£¬Ê¹ÓÃËüÃÇÓÐÒ»µãµãµÄÐÔÄÜËðʧ¡£×¼È·µØËµ£¬ÐÔÄÜËðʧ·¢ÉúÔÚµÚÒ»¸öÕâÖÖÀàÐ͵Ä×ֶκó¶ÔËùÓÐÆäËû×ֶεķÃÎʵÄʱºò¡£

4.16.1)¡¡ÎÒÔõÑù´´½¨Ò»¸öÐòÁкÅ/×Ô¶¯µÝÔöµÄ×ֶΣ¿
PostgreSQL¡¡Ö§³Ö¡¡SERIAL¡¡Êý¾ÝÀàÐÍ¡£ËüÔÚ×Ö¶ÎÉÏ×Ô¶¯´´½¨Ò»¸öÐòÁкÍË÷Òý¡£ÀýÈ磬ÕâÑù...¡¡

CREATE¡¡TABLE¡¡person¡¡(¡¡
id¡¡¡¡¡¡SERIAL,¡¡
name¡¡TEXT¡¡
);

...»á×Ô¶¯×ª»»ÎªÕâÑù...¡¡

CREATE¡¡SEQUENCE¡¡person_id_seq;
CREATE¡¡TABLE¡¡person¡¡(¡¡
id¡¡¡¡¡¡INT4¡¡NOT¡¡NULL¡¡DEFAULT¡¡nextval('person_id_seq'),
name¡¡TEXT¡¡
);
CREATE¡¡UNIQUE¡¡INDEX¡¡person_id_key¡¡ON¡¡person¡¡(¡¡id¡¡);

²Î¿¼¡¡create_sequence¡¡ÊÖ²áÒ³»ñÈ¡¹ØÓÚÐòÁеĸü¶àÐÅÏ¢¡£Ä㻹¿ÉÒÔÓÃÿÐеġ¡oid¡¡×Ö¶Î×÷Ϊһ¸öΨһֵ¡£²»¹ý£¬Èç¹ûÄãÐèÒªÇãµ¹ºÍÖØÔØÊý¾Ý¿â£¬ÄãÐèҪʹÓá¡pg_dump¡¡µÄ¡¡-o¡¡Ñ¡Ïî»òÕß¡¡COPY¡¡WITH¡¡OIDS¡¡Ñ¡ÏîÒÔ±£Áô¡¡oid¡£

¸ü¶àÐÅÏ¢£¬²ÎÔÄ¡¡Bruce¡¡Momjian¡¡µÄ¡¡ÐмÆÊý¡¡Õ½ڡ£

4.16.2)¡¡ÎÒÈçºÎ»ñµÃÒ»¸ö²åÈëºóÉú³ÉµÄÐòÁкţ¨¡¡SERIAL¡¡£©µÄÖµ£¿
¿ÉÄÜʵÏÖÕâ¸öÒªÇóµÄ×î¼òµ¥µÄ·½·¨ÊÇ£ºÔÚ²åÈë֮ǰÏÈÓú¯Êý¡¡nextval()¡¡´ÓÐòÁжÔÏóÀï¼ìË÷³öÏÂÒ»¸ö¡¡SERIAL¡¡Öµ£¬È»ºóÔÙÏÔʽ²åÈë¡£ÀûÓá¡4.16.1¡¡ÀïµÄÀý×Ó±í£¬ÕâÑù×ö¿´ÆðÀ´ÏóÏÂÃæÕâÑù£º

$newSerialID¡¡=¡¡nextval('person_id_seq');
INSERT¡¡INTO¡¡person¡¡(id,¡¡name)¡¡VALUES¡¡($newSerialID,¡¡'Blaise¡¡Pascal');

Ä㻹ÄÜ»ñµÃ´æ´¢ÔÚ¡¡$newSerialID¡¡ÀïÃæµÄÐÂÖµ£¬¿ÉÒÔÓÃÓÚÆäËû²éѯ£¨ÀýÈ磬×÷Ϊ¡¡person¡¡±íµÄÍâ¼ü£©¡£Òª×¢Òâ×Ô¶¯´´½¨µÄ¡¡SEQUENCE¡¡¶ÔÏóµÄÃû³Æ½«»áÊÇÃüÃûΪ¡¡__seq£¬ÕâÀï¡¡table¡¡ºÍ¡¡serialcolumn¡¡·Ö±ðÊÇÄãµÄ±íµÄÃû³ÆºÍÄãµÄ¡¡SERIAL¡¡×ֶεÄÃû³Æ¡£

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

INSERT¡¡INTO¡¡person¡¡(name)¡¡VALUES¡¡('Blaise¡¡Pascal');
$newID¡¡=¡¡currval('person_id_seq');

×îºó£¬Äã¿ÉÒÔʹÓôӡ¡INSERT¡¡Óï¾ä·µ»ØµÄ¡¡oid¡¡²éÕÒȱʡֵ£¬¾¡¹ÜÕâ¿ÉÄÜÊÇ×îȱ·¦ÒÆÖ²ÐԵķ½·¨¡£ÔÚ¡¡perl¡¡ÀʹÓôøÓС¡ Edmund¡¡Mergl¡¡µÄ¡¡DBD::Pg¡¡Ä£¿éµÄ¡¡DBI£¬oid¡¡Öµ¿ÉÒÔͨ¹ý¡¡$sth->execute()¡¡ºóµÄ¡¡$sth-> {pg_oid_status}¡¡»ñµÃ¡£

4.16.3)¡¡Ê¹Óá¡currval()¡¡ºÍ¡¡nextval()¡¡»áµ¼ÖÂÒ»¸öÓëÆäËû²¢Ðкó¶Ë½ø³ÌÖ®¼äµÄÒ»¸ö¾ºÕùÌõ¼þÂð£¿
²»»á¡£Õâ¸öÎÊÌâÓɺó¶Ë´¦Àí¡£

4.17)¡¡Ê²Ã´ÊÇ¡¡oid£¿Ê²Ã´ÊÇ¡¡tid£¿
Oid¡¡ÊÇ¡¡PostgreSQL¡¡µÄΨһÐбêʶ¡£PostgreSQL¡¡Àï´´½¨µÄÿһÐж¼»ñµÃÒ»¸öΨһµÄ¡¡oid¡£ËùÓÐÔÚ¡¡initdb¡¡¹ý³ÌÖд´½¨µÄ¡¡oid¡¡¶¼Ð¡ÓÚ¡¡16384¡¡£¨À´×Ô¡¡backend/access/transam.h£©¡£ËùÓÐÓû§´´½¨µÄ¡¡oid¡¡¶¼´óÓÚ»òµÈÓÚÕâ¸öÖµ¡£È±Ê¡Ê±£¬ËùÓÐÕâЩ¡¡oid¡¡²»½öÔÚÒ»¸ö±í£¬Ò»¸öÊý¾Ý¿âÀïÃæÎ¨Ò»£¬¶øÇÒÔÚÕû¸ö¡¡PostgreSQL¡¡°²×°ÀïÒ²ÊÇΨһµÄ¡£

PostgreSQL¡¡ÔÚËüµÄÄÚ²¿ÏµÍ³±íÀïʹÓá¡oid¡¡ÔÚ±íÖ®¼äÁª½ÓÐС£ÕâЩ¡¡oid¡¡¿ÉÒÔÓÃÓÚ±êÊ¶ÌØ¶¨µÄÓû§ÐÐÒÔ¼°ÓÃÔÚÁªºÏÀï¡£ÎÒÃǽ¨ÒéÄãʹÓÃ×Ö¶ÎÀàÐÍ¡¡oid¡¡´æ´¢¡¡oid¡¡Öµ¡£²ÎÔÄ¡¡sql(l)¡¡ÊÖ²áÒ³²éÕÒÆäËûÄÚ²¿×ֶΡ£Äã¿ÉÒÔÔÚ¡¡oid¡¡×Ö¶ÎÉÏ´´½¨Ò»¸öË÷ÒýÒÔ»ñÈ¡¿ìËÙ·ÃÎÊ¡£

Oid¡¡´Ó±»ËùÓÐÊý¾Ý¿âʹÓõÄij¸öÇøÓòÀ︳ֵ¸øËùÓÐÐÂÐС£Èç¹ûÄãÏë°Ñ¡¡oid¡¡¸Ã³É±ðµÄÖµ£¬»òÕßÄãÏë×öÒ»·Ý±íµÄ´ø×Åԭʼ¡¡oid¡¡µÄ¿½±´£¬Äã¿ÉÒÔ×öµ½£º

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡CREATE¡¡TABLE¡¡new_table(old_oid¡¡oid,¡¡mycol¡¡int);
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡SELECT¡¡INTO¡¡new¡¡SELECT¡¡old_oid,¡¡mycol¡¡FROM¡¡old;
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡COPY¡¡new¡¡TO¡¡'/tmp/pgtable';
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡DELETE¡¡FROM¡¡new;
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡COPY¡¡new¡¡WITH¡¡OIDS¡¡FROM¡¡'/tmp/pgtable';


Tid¡¡ÓÃÓÚ±êʶ´ø×ÅÊý¾Ý¿éºÍÆ«ÒÆÁ¿ÖµµÄÌØ¶¨µÄÎïÀíÐС£Tid¡¡ÔÚÿÐеĸü¸Ä»òÕßÖØÔØºó±»¸Ä±ä¡£ËüÃDZ»Ë÷Òý¼Ç¼ÓÃÓÚÖ¸ÒýÎïÀíÐС£

4.18)¡¡Àï¡¡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¡¡
4.19)¡¡ÎªÊ²Ã´ÎÒÊÕµ½´íÎó¡¡"FATAL:¡¡palloc¡¡failure:¡¡memory¡¡exhausted?"
ÕâºÜ¿ÉÄÜÊÇÄãϵͳµÄÐéÄâÄÚ´æÓùâÁË£¬»òÕßÄãµÄÄں˶ÔÕâÑùµÄ×ÊÔ´Óнϵ׵ÄÏÞÖÆÖµ¡£ÔÚÆô¶¯¡¡postmaster¡¡Ö®Ç°ÊÔÊÔÏÂÃæµÄÃüÁ

ulimit¡¡-d¡¡65536
limit¡¡datasize¡¡64m

È¡¾öÓÚÄãÓõġ¡shell£¬ÉÏÃæÃüÁîÖ»ÓÐÒ»ÌõÄܳɹ¦£¬µ«ÊÇËü½«°ÑÄãµÄ½ø³ÌÊý¾Ý¶ÎÉèÖõñȽϸߣ¬Òò¶øÒ²ÐíÄÜÈòéѯÄܹ»ÔËÐÐÍê³É¡£ÕâÌõÃüÁîÓ¦ÓÃÓÚµ±Ç°½ø³Ì£¬ÒÔ¼°ËùÓÐÔÚÕâÌõÃüÁîÔËÐк󴴽¨µÄ×Ó½ø³Ì¡£Èç¹ûÄãÅöµ½ÁËÒòΪºó¶ËÔËÐзµ»ØÁËÌ«¶àÊý¾ÝµÄ¿Í»§¶Ë¡¡SQL¡¡µÄÎÊÌ⣬ÊÔ×ÅÏÈÔËÐÐÕâЩÃüÁîÔÙÔËÐпͻ§¶Ë¡£

4.20)¡¡ÎÒÈçºÎ²ÅÄÜÖªµÀÎÒÔËÐеġ¡PostgreSQL¡¡µÄ°æ±¾£¿
´Ó¡¡psql¡¡À¼üÈë¡¡select¡¡version()£»

4.21)¡¡ÎªÊ²Ã´ÎҵĴó¶ÔÏó²Ù×÷ÊÕµ½invalid¡¡large¡¡obj¡¡descriptor£¨·Ç·¨´ó¶ÔÏóÃèÊö·û£©¡££¿
ÄãÐèÒªÔÚÈκβÙ×÷´ó¶ÔÏóµÄÖÜΧ·ÅÉÏ¡¡BEGIN¡¡WORK¡¡ºÍ¡¡COMMIT£¬Ò²¾ÍÊÇ˵£¬°üΧ¡¡lo_open¡¡...¡¡lo_close¡£

Ŀǰ¡¡PostgreSQL¡¡Ç¿ÖÆÕâÑùµÄ¹æÔò£ºÔÚÊÂÎñÌύʱ¹Ø±Õ´ó¶ÔÏó¾ä±ú£¬ÕâÑù£¬Èç¹ûÄãûÓд¦ÓÚÒ»¸öÊÂÎñÀïÃæ£¬¾Í»áÊǽô¸úÔÚÒ»¸ö¡¡ lo_open¡¡ÃüÁîÍê³ÉµÄºóÃæ¡£ËùÒÔ¶ÔÕâ¸ö¾ä±ú×öÈκÎÊÂÇéµÄÆóͼ¶¼»áµ¼ÖÂÒ»¸ö¡¡invalid¡¡large¡¡obj¡¡descriptor¡£ËùÒÔ£¬Èç¹ûÄãûÓÐʹÓÃÒ»¸öÊÂÎñ£¬ÒÔǰÄܹ¤×÷µÄ´úÂ루ÖÁÉÙÊÇ´ó¶àÊýʱ¼ä£©½«»áÉú³ÉÕâôһ¸ö´íÎóÐÅÏ¢¡£

Èç¹ûÄãʹÓÿͻ§¶Ë½Ó¿Ú£¬Èç¡¡ODBC£¬Äã¿ÉÄÜÐèÒª¡¡set¡¡auto-commit¡¡off¡£

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

ÏÂÃæµÄ·½·¨×Ü¿ÉÒÔ¹¤×÷£º


CREATE¡¡TABLE¡¡test¡¡(x¡¡int,¡¡modtime¡¡timestamp¡¡default¡¡now()¡¡);

ÔÚ°æ±¾¡¡7.0¡¡»ò¸üУ¬Äã¿ÉÒÔʹÓãº


create¡¡table¡¡test¡¡(x¡¡int,¡¡modtime¡¡timestamp¡¡default¡¡'now');

4.23)¡¡ÎªÊ²Ã´ÎÒµÄʹÓá¡IN¡¡µÄ×Ó²éѯÕâôÂý£¿
Ŀǰ£¬ÎÒÃÇͨ¹ýΪÍâ²ã²éѯµÄÿһÐÐ˳ÐòɨÃè×Ó²éѯµÄ½á¹ûÀ´ÁªºÏ×Ó²éѯºÍÍâ²ã²éѯ¡£¿ÉÒÔÓá¡EXISTS¡¡Ìæ»»¡¡IN¡¡À´ÈÆ¿ªÕâ¸öÏÞÖÆ¡£ÀýÈ磬°Ñ£º


SELECT¡¡*
FROM¡¡tab
WHERE¡¡col1¡¡IN¡¡(SELECT¡¡col2¡¡FROM¡¡TAB2)

¸ÄΪ£º¡¡


SELECT¡¡*
FROM¡¡tab
WHERE¡¡EXISTS¡¡(SELECT¡¡col2¡¡FROM¡¡TAB2¡¡WHERE¡¡col1¡¡=¡¡col2)

ÎÒÃÇÏ£ÍûÔÚδÀ´µÄ°æ±¾ÀïÐÞ²¹Õâ¸öÏÞÖÆ¡£

TOP

À©Õ¹¡¡PostgreSQL
5.1)¡¡ÎÒдÁËÒ»¸öÓû§¶¨Ò庯Êý¡£µ±ÎÒÔÚpsql¡¡ÀïÔËÐÐËüʱ£¬ÎªÊ²Ã´»áµ¼ÖÂÄÚºËÇãµ¹£¿
ÎÊÌâ¿ÉÄܳöÔÚºÜ¶à·½Ãæ¡£Ê×ÏÈÊÔ×ÅÔÚÒ»¸ö¶ÀÁ¢µÄ²âÊÔ³ÌÐòÀïÃæ²âÊÔÄãµÄÓû§¶¨Ò庯Êý¡£

5.2)¡¡ÏûÏ¢£ºNOTICE:PortalHeapMemoryFree:¡¡0x402251d0¡¡not¡¡in¡¡alloc¡¡set!¡¡ÊÇʲôÒâ˼£¿
ÄãÕýÓá¡pfree¡¡ÊÍ·ÅһЩ²»ÊÇ¡¡palloc¡¡·ÖÅäµÄ¶«Î÷¡£²»Òª»ìÓá¡malloc/free¡¡ºÍ¡¡palloc/pfree¡£

5.3)¡¡ÎÒÈçºÎÄܸø¡¡PostgreSQL¡¡¹±Ï×һЩͦ²»´íµÄÐÂÀàÐͺͺ¯Êý£¿
°ÑÄãµÄÀ©Õ¹·¢Ë͵½¡¡pgsql-hackers¡¡ÓʼþÁÐ±í£¬ËüÃÇ×îÖÕ»á·Åµ½¡¡contrib/¡¡×ÓĿ¼ÀïÃæ¡£

5.4)¡¡ÎÒÔõÑùдһ¸ö·µ»ØÒ»Ìõ¼Ç¼µÄ¡¡C¡¡º¯Êý£¿
½â¾öÕâ¸öÎÊÌâÐèÒªºÜ¸ßµÄ¼¼ÇÉ£¬×÷Õß±¾ÈË´ÓÀ´Ã»ÓÐÊÔ¹ý£¬¾¡¹ÜÀíÂÛÉÏÊÇ¿ÉÄܵġ£

5.5)¡¡ÎÒÐÞ¸ÄÁËÔ´´úÂë¡£ÎªÊ²Ã´ÖØÐ±àÒëºóûÓп´µ½¸Ä±ä£¿
Makefiles¡¡¶Ô°üº¬ÎļþûÓÐÕýÈ·µÄÒÀÀµÐÔ¹æÔò¡£Äã±ØÐë×öÒ»´Î¡¡make¡¡clean¡¡È»ºóÊÇÁíÒ»´Î¡¡make¡£Äã±ØÐë×öÒ»´Î¡¡make¡¡clean¡¡È»ºó×öÁíÒ»´Î¡¡make¡£

TOP

¿´µ½¶þÂ¥À²£¬ÓÉµç³¤ÄØ£¬°³×ö¸ö¼ÇºÅÀ­£¡
¡þ[×í¾ÆµÄâýÈö]¡þ¡þ¡þÎÒµÄÌÔ±¦ÍøÇëµã»÷¡þ¡þ
¾ÍÊÇÒòΪ¼ÇµÃ£¬ËùÒԲŸе½³ÁÖØ
MYQQ:7355619
Email: phiazat#gmail.com

TOP

ѧϰ

TOP


¸ÐлһֱÒÔÀ´Äú¶ÔÎÒÃǵÄÖ§³Ö£¡
µ±Ç°Ê±Çø GMT+8, ÏÖÔÚʱ¼äÊÇ 2008-9-8 21:17 ¾©ICPÖ¤060528 ºÅ

Designed By 17DST