ÓÐÒ»¶ÑÅäÖòÎÊý¿ÉÒÔÓÃÕâÑùÄÇÑùµÄ·½·¨Ó°ÏìÊý¾Ý¿âϵͳµÄÐÐΪ£® ÎÒÃÇÔÚÕâÀïÃèÊöÒ»ÏÂÈçºÎÉèÖÃËüÃÇ£¬È»ºóÔÚÏÂÒ»ÕÂÎÒÃǽ«Öð¸ö ÌÖÂÛËüÃÇ£®
ËùÓвÎÊýÃû¶¼ÊÇ´óСд²»Ãô¸ÐµÄ£®Ã¿¸ö²ÎÊý¶¼¿ÉÒÔ½ÓÊÜÏÂÃæÃèÊöµÄ²¼¶û£¬ÕûÊý£¬ ¸¡µãÊý£¬×Ö·û´®ËÄÖÖÀàÐÍÖ®Ò»£®²¼¶ûÖµ¿ÉÒÔÊÇ ON£¬OFF£¬ TRUE£¬FALSE£¬ YES£¬NO£¬ 1£¬0 £¨´óСдÎ޹أ©»òÕâЩ¶«Î÷µÄÈÎÒâÇåÎúÎÞ ÆçÒåµÄǰ׺£®
ÉèÖÃÕâЩѡÏîµÄÒ»¸ö·½·¨ÊÇÔÚÊý¾ÝĿ¼Àï±ÈÈç £¨ÔÚÄÇÀï°²×°×ÅÒ»¸öȱʡÎļþ£© ´´½¨Ò»¸öÎļþ postgresql.conf ±ÈÈ磬ÏÂÃæÊÇÒ»¸öÀý×Ó£º
# This is a comment log_connections = yes syslog = 2
ÏóÄã¿´µ½µÄÄÇÑù£¬Ñ¡ÏîÊÇÿÌõÒ»ÐУ®Ñ¡ÏîÃûºÍÖµÖ®¼äµÄµÈºÅÊÇ¿ÉÑ¡µÄ£® ¿Õ°×ºÍ¿ÕÐб»ºöÂÔ£®¾®ºÅ£¨"#"£©ÓÃ×öÈκεط½ ÒýÈë×¢ÊÍ£®
ÿ´Î postmaster ÊÕµ½SIGHUP(×î¼òµ¥µÄ·¢ËÍ·½·¨¾ÍÊÇ Ê¹Óà pg_ctl reload)£® Ðźź󶼻áÖØÐ¶ÁÈ¡Õâ¸öÅäÖÃÎļþ£® postmaster ͬʱҲ½«Õâ¸öÐźŹ㲥¸øËùÓÐÕýÔÚÔËÐеĺó¶Ë½ø³Ì£¬ËùÒÔÏÖÓÐ »á»°Ò²Äܵõ½ÐµÄȱʡ£®ÁíÍ⣬Äã¿ÉÒÔÖ»ÏòÒ»¸öºó¶Ë½ø³ÌÖ±½Ó·¢ËÍÐźţ®
µÚ¶þÖÖÉèÖÃÕâЩÅäÖòÎÊýµÄ·½·¨ÊǰÑËüÃÇ×÷ΪÃüÁîÐвÎÊý´«µÝ¸ø postmaster£¬ ±ÈÈç
postmaster -c log_connections=yes -c syslog=2
ÕâÑùºÍÉÏÃæµÄÀý×ÓÓÐͬÑùЧ¹û£® ÃüÁîÐÐÑ¡Ï¸ÇÈκÎÓë postgresql.conf ³åÍ»µÄÑ¡Ï
ÓÐʱºò£¬¸øÄ³Ò»¸öÌØ¶¨ºó¶Ë»á»°Ò»¸öÃüÁîÐвÎÊýÒ²ÊǺÜÓÐÓõģ® ¿ÉÒÔÔÚ¿Í»§¶ËʹÓû·¾³±äÁ¿ PGOPTIONS À´ÊµÏÖ Õâ¸öÄ¿µÄ£º
env PGOPTIONS='-c geqo=off' psql
£¨Õâ¸öÑ¡Ïî¿ÉÒÔÓÃÓÚÈκοͻ§¶ËÓ¦Ó㬲»¹âÊÇ psql£®£©Çë×¢Ò⣬Õâ¸ö±äÁ¿¶ÔÄÇЩÐèÒªÔÚ ·þÎñÆ÷Æô¶¯ºó¹Ì¶¨µÄÑ¡ÏîÊÇÎÞЧµÄ£¬±ÈÈç¶Ë¿ÚºÅ£®
×îºó£¬ÓÐЩѡÏî¿ÉÒÔÔÚ¶ÀÁ¢µÄ SQL »á»°ÖÐÐ޸ģ¬Ê¹Óà SET ÃüÁ±ÈÈç
=> SET ENABLE_SEQSCAN TO OFF;
Çë²Î¿¼ SQL ÃüÁîÓïÑÔÊÖ²á»ñÈ¡ÃüÁîÓï·¨µÄÏêϸÐÅÏ¢£®
ÉèÖÃÔÚÒ»´ÎË÷ÒýɨÃèÖÐÓÅ»¯Æ÷¼ÆËã³öÀ´µÄ´¦ÀíÿÌõË÷ÒýÔª×éµÄ¿ªÏú£® ÕâÊÇÒÔÒ»´Î˳ÐòÒ³Ãæ×¥È¡µÄ¿ªÏúµÄ·ÖÊýÀ´¼ÆÁ¿µÄ£®
ÉèÖÃÓÅ»¯Æ÷¼ÆËã³öÀ´µÄ´¦ÀíÒ»Ìõ WHERE ×Ó¾äÖеÄÿ¸ö²Ù×÷·ûµÄ¿ªÏú£® ÕâÊÇÒÔÒ»´Î˳ÐòÒ³Ãæ×¥È¡µÄ¿ªÏúµÄ·ÖÊýÀ´¼ÆÁ¿µÄ£®
ÉèÖÃÓÅ»¯Æ÷Ô¤¼ÆÔÚÒ»´Î²éѯÖд¦ÀíÿÌõÔª×éµÄ¿ªÏú£® ÕâÊÇÒÔÒ»´Î˳ÐòÒ³Ãæ×¥È¡µÄ¿ªÏúµÄ·ÖÊýÀ´¼ÆÁ¿µÄ£®
ÉèÖÃÓÅ»¯Æ÷¼ÙÉèµÄ´ÅÅÌ»º³åµÄÓÐЧ³ß´ç£¨Äں˵ĴÅÅÌ»º³åÖн«±» PostgreSQLÊý¾ÝÎļþʹÓõıÈÀý£©£® ÕâÊÇÒÔ´ÅÅÌÒ³Ãæ¼ÆÁ¿µÄ£¬Í¨³£ÊÇ 8 kB/Ò³£®
ÔÊÐí»ò½ûÖ¹²éѯ¹æ»®Æ÷ʹÓÃÉ¢ÁÐÁ¬½Ó£¨ hash-join £©¹æ»®ÀàÐÍ£® ȱʡÊÇÔÊÐí£®Õâ¸öÑ¡Ïî¶Ôµ÷ÊÔ²éѯ¹æ»®Æ÷ºÜÓÐÓã®
ÔÊÐí»ò½ûÖ¹²éѯ¹æ»®Æ÷ʹÓÃË÷ÒýɨÃè¹æ»®ÀàÐÍ£® ȱʡÊÇÔÊÐí£®Õâ¸öÑ¡Ïî¶Ôµ÷ÊÔ²éѯ¹æ»®Æ÷ºÜÓÐÓã®
ÔÊÐí»ò½ûÖ¹²éѯ¹æ»®Æ÷ʹÓÃÈÚºÏÁ¬½Ó¹æ»®ÀàÐÍ£® ȱʡÊÇÔÊÐí£®Õâ¸öÑ¡Ïî¶Ôµ÷ÊÔ²éѯ¹æ»®Æ÷ºÜÓÐÓã®
ÔÊÐí»ò½ûÖ¹²éѯ¹æ»®Æ÷ʹÓÃǶÌ×Ñ»·Á¬½Ó¹æ»®£® ʵ¼ÊÉϲ»¿ÉÄÜÍêÈ«½ûֹʹÓÃǶÌ×Ñ»·Á¬½Ó£¬²»¹ý°ÑÕâ¸öÑ¡ÏîÉèÖÃΪ ½ûÖ¹»áÁîÓÅ»¯Æ÷ÔÚ´æÔÚÆäËü·½·¨µÄÇé¿öÏÂÓÅÏÈÑ¡ÓÃÆäËü·½·¨£® ȱʡÊÇÔÊÐí£®Õâ¸öÑ¡Ïî¶Ôµ÷ÊÔ²éѯ¹æ»®Æ÷ºÜÓÐÓã®
ÔÊÐí»ò½ûÖ¹²éѯ¹æ»®Æ÷ʹÓÃ˳ÐòɨÃè¹æ»®ÀàÐÍ£® ʵ¼ÊÉϲ»¿ÉÄÜÍêÈ«½ûÖ¹¹æ»®Æ÷ʹÓÃ˳ÐòɨÃ裬²»¹ý°ÑÕâ¸öÑ¡ÏîÉèÖÃΪ ½ûÖ¹»áÁîÓÅ»¯Æ÷ÔÚ´æÔÚÆäËü·½·¨µÄÇé¿öÏÂÓÅÏÈÑ¡ÓÃÆäËü·½·¨£® ȱʡÊÇÔÊÐí£®Õâ¸öÑ¡Ïî¶Ôµ÷ÊÔ²éѯ¹æ»®Æ÷ºÜÓÐÓã®
ÔÊÐí»ò½ûÖ¹²éѯ¹æ»®Æ÷ʹÓÃÃ÷È·µÄÅÅÐò²½Ö裮 ʵ¼ÊÉϲ»¿ÉÄÜÍêÈ«½ûÖ¹¹æ»®Æ÷ʹÓÃÅÅÐò£¬²»¹ý°ÑÕâ¸öÑ¡ÏîÉèÖÃΪ ½ûÖ¹»áÁîÓÅ»¯Æ÷ÔÚ´æÔÚÆäËü·½·¨µÄÇé¿öÏÂÓÅÏÈÑ¡ÓÃÆäËü·½·¨£® ȱʡÊÇÔÊÐí£®Õâ¸öÑ¡Ïî¶Ôµ÷ÊÔ²éѯ¹æ»®Æ÷ºÜÓÐÓã®
ÔÊÐí»ò½ûÖ¹²éѯ¹æ»®Æ÷ʹÓÃTIDɨÃè¹æ»®ÀàÐÍ£® ȱʡÊÇÔÊÐí£®Õâ¸öÑ¡Ïî¶Ôµ÷ÊÔ²éѯ¹æ»®Æ÷ºÜÓÐÓã®
ÔÊÐí»ò½ûÖ¹»ùÒò²éѯÓÅ»¯£¬ÕâÊÇÒ»ÖÖÊÔͼ²»Í¨¹ýÇî¾ÙËÑË÷À´ÊµÏÖ ²éѯ¹æ»®µÄËã·¨£®È±Ê¡ÊÇÔÊÐí£®²ÎÔĸ÷ÖÖÆäËûGEQO_ÉèÖã®
¸÷ÖÖ¸÷ÑùµÄµ÷½Ú»ùÒò²éѯÓÅ»¯µÄ²ÎÊý£º »º³å³Ø´óС£¨pool size£©ÊÇÒ»¸öÈ«ÌåÖеĸöÌåµÄÊýÁ¿£®ÓÐЧֵ½éÓÚ 128 ºÍ 1024 Ö®¼ä£®Èç¹û°ÑËüÉèÖÃΪ 0£¨È±Ê¡£©£¬ÄÇô¾ÍʹÓà 2^(QS+1) ´óСµÄ»º³å³Ø£¬ÕâÀï QS ÊDzéѯÖйØÏµµÄÊýÁ¿£®Ó°Ï죨effort£©ÓÃÓÚΪÿһ´ú ¼ÆËãÒ»¸öȱʡֵ£®ÓÐЧֵÊǽéÓÚ 1 ºÍ 80 Ö®¼äµÄÊý×Ö£¬40 ÊÇȱʡֵ£® ´ú£¨Generations£©ÉùÃ÷Ëã·¨Öеķ´¸´´ÎÊý£®´ËÊý×Ö±ØÐëÊÇÕýÕûÊý£® Èç¹ûÉùÃ÷ÁË 0£¬ÄÇô¾ÍʹÓà Effort * Log2(PoolSize)£®´ËËã·¨µÄÔËÐРʱ¼ä´ó¸ÅÊÇ»º³å³Ø´óС£¨pool size£©ºÍ´ú£¨Generations£©Ö®ºÍµÄ·ÖÊý£® Ñ¡ÔñÆ«ÒÆ£¨selection bias£©ÊÇÈ«ÌåÄÚ²¿µÄÑ¡ÔñÐÔѹÁ¦ £¨selective pressure£©£® ÆäÖµ¿ÉÒÔ½éÓÚ 1.50 µ½ 2.00 Ö®¼ä£»ºóÕßÊÇȱʡ£® Ëæ»úÖÖ×Ó¿ÉÒÔÉèÖÃΪÈÃÕâ¸öËã·¨±íÏÖΪÄܹ»²úÉú¿É¸´ÏÖµÄÖµ£®Èç¹û°Ñ ËüÉèÖÃΪ -1 ÄÇô´ËËã·¨µÄÐÐΪ½«²»¿ÉÅж¨£®
Ö»Óе±Éæ¼°µÄFROM¹ØÏµÊýÁ¿ÖÁÉÙÓÐ GEQO_THRESHOLD ¸öʱ£¬ ²ÅʹÓûùÒò²éѯÓÅ»¯£® £¨Çë×¢ÒâÒ»¸öJOIN¹¹ÔìÖ»Ëã×öÒ»¸öFROMÏ£© ȱʡÊÇ 11£¬¶ÔÓÚÊýÁ¿Ð¡ÓÚ´ËÊýµÄ²éѯ£¬Ò²ÐíʹÓÃÅж¨ÐÔµÄÇî¾ÙËÑË÷¸üÓÐЧ£® Õâ¸ö²ÎÊýÒ²¿ØÖÆÓÅ»¯Æ÷ÔÚ°Ñ×Ó²éѯµÄ FROM ×Ó¾äÈںϵ½ Éϲã²éѯµÄʱºòµ½µ×ʹ¶à´óµÄ¾¢£®
Key Set Query Optimizer£¨¼ü¼¯²éѯÓÅ»¯£© £¨KSQO£©´Ùʹ²éѯÓÅ»¯Æ÷°ÑÒ»¸öWHERE×Ó¾äÀïÃæ Óкܶà OR£¬AND ×Ó¾äµÄ²éѯ£¬£¨ ±ÈÈç WHERE (a=1 AND b=2) OR (a=2 AND b=3) ...ת»»³ÉÒ»¸ö union ²éѯ£®Õâ¸ö·½·¨±ÈȱʡʵÏÖ¿ìµÃ¶à£¬ µ«ÊÇËü²»Ò»¶¨¸ø³öÍêȫһÑùµÄ½á¹û£¬ÒòΪUNIONÒþº¬µØÔö¼ÓÁËÒ»Ìõ SELECT DISTINCT×Ó¾äÒÔÏû³ýÖØ¸´Êä³öÐУ® µ±ºÍÀàËÆMicrosoft AccessÕâÑùµÄ ²úÆ·Ò»ÆðʹÓõÄʱºò£¬³£³£Óõ½ KSQO£¬ÒòΪËü×ÜÊÇϲ»¶Éú³ÉÉÏÃæ Ñù×ӵIJéѯ£®
ÒÔǰ£¬¶ÔÄÇЩÓÐÐí¶à OR ºÍ AND ×Ó¾äµÄ²éѯ£¬KSQO ÊǾø¶Ô±ØÒªµÄ£¬µ«Êǵ½ÁË PostgreSQL 7.0 ºÍÒԺ󣬱ê×¼µÄ¹æ»®Æ÷ ¾Í¿ÉÒԺܺÏÀíµØ´¦ÀíÕâЩ²éѯ£®Òò´ËȱʡÊǹأ®
ÉèÖÃÓÅ»¯Æ÷¼ÆËãµÄÒ»´Î·Ç˳Ðò´ÅÅÌÒ³Ãæ×¥È¡µÄ¿ªÏú£® ÕâÊÇÒÔ˳Ðò´ÅÅÌÒ³Ãæ×¥È¡µÄ¿ªÏúµÄ±¶Êý¼ÆÁ¿µÄ£®
×¢Òâ: Ôã¸âµÄÊÇ£¬ÎÒÃÇûÓкܺõ͍ÒåÎÒÃÇÉÏÃæ¸Õ¸ÕÃèÊöÍêµÄ "COST£¨¿ªÏú£©" ¼Ò×åµÄµäÐÍÖµµÄ·½·¨£®ÎÒÃǹÄÀøÄã×Ô¼ºÊÔÑé²¢ÇÒÓëÎÒÃǹ²ÏíÄãµÄ·¢ÏÖ£®
´ò¿ª¸÷ÖÖ¶ÏÑÔ¼ì²é£®ÕâÊǵ÷ÊÔÖúÊÖ£®Èç¹ûÄã¾ÀúÁËÆæ¹ÖµÄ벡»òÕß ±ÀÀ££¬¿ÉÄÜÄãÏ£Íû°ÑÕâ¸öÑ¡Ïî´ò¿ª£¬ÒòΪËü¿ÉÄܻᱩ¶³ÌÐòµÄ´íÎó£® ÒªÊ¹ÓÃÕâ¸öÑ¡Ïî£¬ÖÆ×÷PostgreSQLµÄʱºò±ØÐ붨Òå USE_ASSERT_CHECKINGºê£® £¨²ÎÔÄÅäÖÃÑ¡Ïî --enable-cassert£©£® Çë×¢ÒâÈç¹ûPostgreSQLÊÇÕâÑùÖÆ×÷µÄ»°£¬ÄÇô DEBUG_ASSERTIONS ȱʡÊÇ ON£®
Õâ¸öÖµÔ½¸ß£¬ÄÇôÔÚ·þÎñÆ÷ÔËÐйý³ÌÖÐ ¾ÍÓÐÔ½¶à "µ÷ÊÔ"ÈÕÖ¾Éú³É£® ȱʡʱ£¬´ËֵΪ 0£¬Òâζ×ÅûÓе÷ÊÔÊä³ö£®Ä¿Ç°ÓÐÒâÒåµÄ×î¸ßֵΪ 4£®
¶ÔÓÚÈκÎÖ´ÐеIJéѯ£¬°Ñ¸Ã²éѯ£¬ËüÉú³ÉµÄ·ÖÎöÊ÷£¬ËüÉú³ÉµÄÖ´Ðй滮£¬»òÕßÆä ²éÑ¯ÖØÐ´Êä³ö´òÓ¡µ½·þÎñÆ÷ÈÕÖ¾ÖУ® Ñ¡Ôñ DEBUG_PRETTY_PRINT »áÉú³ÉƯÁÁЩµ«Êdz¤Ò»Ð©µÄÊä³ö¸ñʽ£® °Ñ DEBUG_LEVEL ÉèÖÃΪ´óÓëÁãµÄÖµ»áÒþº¬µØ´ò¿ª ÕâЩ±êÖ¾ÖеÄһЩ£®
ȱʡʱ£¬Áª½ÓÈÕÖ¾Ö»¼Ç¼ËùÁª½ÓÖ÷»úµÄ IP µØÖ·£®Èç¹ûÄãÏëÏÔʾÖ÷»úÃû£¬ Äã¿ÉÒÔ´ò¿ªÕâ¸öÑ¡Ï²»¹ý£¬ÕâÑùÓпÉÄÜ´øÀ´Ò»Ð©²»¿ÉºöÂÔµÄÐÔÄÜËðʧ£¬ --È¡¾öÓÚÄãµÄÃû×Ö½âÎöµÄÉèÖã® Õâ¸öÑ¡ÏîÖ»ÄÜÔÚ·þÎñÆ÷Æô¶¯µÄʱºòÉèÖã®
¶Ôÿ´Î³É¹¦µÄÁª½Ó¶¼Ïò·þÎñÆ÷ÈÕÖ¾Àï´òÓ¡Ò»ÐÐÐÅÏ¢£® ȱʡʱÊǹرյ쬾¡¹ÜËü¿ÉÄܺÜÓÐÓã®Õâ¸öÑ¡ÏîÖ»ÄÜÔÚ·þÎñÆ÷Æô¶¯µÄʱºòÉèÖ㬠»òÕßÔÚ postgresql.conf ÅäÖÃÎļþÀïÉèÖã®
ÔÚÿÌõ·þÎñÆ÷ÐÅÏ¢Ç°Ãæ¼ÓÉϺó¶Ë·þÎñ½ø³ÌµÄ½ø³ÌºÅǰ׺£® Õâ¶ÔÀí³öijÌõÐÅÏ¢ÊôÓÚÄǸöÁª½ÓºÜÓаïÖú£® ȱʡʱÊǹرյģ®
ÔÚÿÌõ·þÎñÆ÷ÐÅÏ¢Ç°Ãæ¼ÓÉÏʱ¼ä´Áǰ׺£® ȱʡʱÊǹرյģ®
¶ÔÿÌõ²éѯ£¬Ïò·þÎñÆ÷ÈÕÖ¾ÀïÊä³öÏàӦģ¿éµÄÐÔÄÜͳ¼Æ£® ÕâÊÇÔʼµÄµ÷½Ú¹¤¾ß£®
ÔÚÁª½ÓÈÕÖ¾ÐÅÏ¢ÀïÃæÏÔʾÕýÔÚÁ¬½ÓµÄÖ÷»úµÄ¶Ë¿ÚºÅ£® Äã¿ÉÒÔ»ØË·´Ë¶Ë¿ÚºÅ²¢ÕÒ³öÊÇÄĸöÓû§³õʼ»¯µÄÁª½Ó£® ÒòΪÕâ¸ö¹¦ÄÜ»ù±¾Ã»Óã¬ËùÒÔȱʡÊǹرգ® Õâ¸öÑ¡ÏîÖ»ÄÜÔÚ·þÎñÆ÷Æô¶¯µÄʱºòÉèÖã®
ÕâЩ±êÖ¾¾ö¶¨ºó¶Ë·¢Ë͸øÍ³¼ÆÊÕ¼¯½ø³ÌµÄÐÅÏ¢¡Ãµ±Ç°ÃüÁ¿é²ã´ÎµÄ»îÔ¾ÐÔ Í³¼Æ»òÕßÐвã´ÎµÄ»îÔ¾ÐÔͳ¼Æ£®ËùÓеÄȱʡ¶¼ÊǹرÕ(off)£®´ò¿ªÍ³¼ÆÊÕ¼¯ »áµ¼ÖÂÿ¸ö²éѯ¶à¸¶³öÒ»µãµãʱ¼ä¿ªÏú£¬µ«ÊǶÔÓÚµ÷ÊÔºÍÐÔÄÜÓÅ»¯È·ÊÇÎ޼۵ģ®
Èç¹û´ò¿ª£¬ÄÇôÔÚ·þÎñÆ÷Æô¶¯µÄʱºòÊÕ¼¯µÄÐÅÏ¢±»ÇåÁ㣮 Èç¹û¹Ø±Õ£¬ÄÇôͳ¼ÆÔÚ·þÎñÆ÷ÖØÆð¹ý³ÌÖÐÀÛ¼Ó£®È±Ê¡ÊÇ´ò¿ª£® Õâ¸öÑ¡ÏîÖ»ÄÜÔÚ·þÎñÆ÷Æô¶¯µÄʱºòÉèÖã®
¿ØÖÆ·þÎñÆ÷ÊÇ·ñÆô¶¯Í³¼ÆÊÕ¼¯×Ó½ø³Ì£®È±Ê¡Ê±ÊÇ´ò¿ª£¬ µ«Èç¹ûÄã¶Ôͳ¼ÆÊÕ¼¯²»¸ÐÐËȤ£¬ÄÇô¿ÉÒԹرգ®Õâ¸öÑ¡ÏîÖ»ÄÜÔÚÆô¶¯·þÎñÆ÷ʱ ÉèÖã®
PostgreSQL ÔÊÐí°Ñ syslog ×÷ΪÈÕ־ϵͳ£®Èç¹ûÕâ¸öÑ¡Ïî ÉèΪ 1£¬ÔòÐÅϢͬʱÍùsyslogºÍstdoutÊä³ö£®Èç¹ûÉèΪ 2£¬ ÔòÖ»Êä³öµ½syslog£ £¨ÓÐЩÐÅÏ¢»¹ÊÇ»áÊä³öµ½stdout/stderr£®£© ȱʡÊÇ 0£¬Òâζ׏رÕÏòsyslogµÄÊä³ö£® Õâ¸öÑ¡ÏîÖ»ÄÜÔÚ·þÎñÆ÷Æô¶¯µÄʱºòÉèÖã®
ҪʹÓÃsyslog£¬ÖÆ×÷ PostgreSQL ʱ±ØÐë´ò¿ª --enable-syslog ÅäÖÃÑ¡Ï
Õâ¸öÑ¡ÏîÔÚ´ò¿ªsyslogºóÅжÏҪʹÓÃµÄ syslog "¹¦ÄÜ"£®Äã¿ÉÒÔ´Ó LOCAL0£¬LOCAL1£¬LOCAL2£¬LOCAL3£¬LOCAL4£¬LOCAL5£¬LOCAL6£¬LOCAL7 ÖÐÑ¡Ôñ£»È±Ê¡ÊÇ LOCAL0£®²ÎÔÄÄãµÄϵͳµÄ syslog£®
Èç¹û´ò¿ªÁËÏòsyslogÖмÇÈÕÖ¾µÄ¹¦ÄÜ£¬ Õâ¸öÑ¡Ïî¾ö¶¨ÓÃÓÚÔÚ syslog ÈÕÖ¾ÐÅÏ¢Öбêʶ PostgreSQL µÄ³ÌÐòÃû£®È±Ê¡ÊÇ postgres£®
Ϊ LISTEN ºÍ NOTIFY ÃüÁîÉú³ÉÒ»´ó¶Ñµ÷ÊÔÊä³ö£®
Èç¹ûÉèÖÃÎªÕæ£¬ÄÇô CST£¬ EST£¬ºÍ SAT ¶¼½âÊÍ³É Australian Ê±Çø£¬¶ø²»ÊDZ±ÃÀÖÐ/¶«²¿Ê±ÇøºÍÖÜÁù£®È±Ê¡ÊǼ٣®
Íê³É¿Í»§¶ËÈÏÖ¤µÄ×ʱ¼ä£¬ÒÔÃë¼Ç£®Èç¹ûÒ»¸ö×¼¿Í»§Î´ÄÜÔÚÕâ¸öʱ¼ä³¤¶ÈÄÚ Íê³ÉÈÏÖ¤ÐÒ飬ÄÇô·þÎñÆ÷½«×ÔÐÐÖжÏÁª½Ó£®ÕâÑù¾Í±ÜÃâÁË¹ÒÆðµÄ¿Í»§¶Ë ÎÞÏÞÖÆµØÕ¼¾ÝÁª½Ó£®Õâ¸öÑ¡ÏîÖ»ÄÜÔÚ·þÎñÆ÷Æô¶¯µÄʱºòÔÚ postgresql.conf ÎļþÀïÉèÖã®
Õâ¸öÊÇÒÔºÁÃë¼ÆµÄʱ¼ä£¬ÓÃÓÚÉèÖÃÔÚ¼ì²éÊÇ·ñ´æÔÚËÀËøÌõ¼þ֮ǰµÄµÈ´ý ʱ¼ä£® ¼ì²éÊÇ·ñ´æÔÚËÀËøÌõ¼þÊÇÒ»¸ö»ºÂýµÄ¹ý³Ì£¬Òò´ËÎÒÃDz»Ï£ÍûÎÒÃÇÿ´Î µÈ´ýËøµÄʱºò¶¼ÔËÐÐÕâ¸ö¹ý³Ì£®ÎÒÃÇ£¨Àֹ۵أ¿£©¼ÙÉèÔÚÉú²úÓ¦ÓÃÖеÄËÀËø ÊDz»³£³öÏֵģ¬Òò´ËÎÒÃÇÔÚ¿ªÊ¼Ñ¯ÎÊÊÇ·ñ¿ÉÒÔ½âËøÖ®Ç°Ö»µÈ´ýÒ»¸öËø Ïà¶Ô¶ÌµÄÒ»¶Îʱ¼ä£® Ôö¼ÓÕâ¸öÖµ¾Í¼õÉÙÁËÀË·ÑÔÚÎÞÓõÄËÀËø¼ì²éÉϵÄʱ¼ä£¬µ«ÊǼõÂýÁ˱¨¸æ ÕæÕýËÀËø´íÎóµÄËÙ¶È£® ȱʡÊÇ 1000£¨Ò²¾ÍÊÇ 1 Ã룩£¬¿ÉÄÜÊÇÄãÄܹ»ÄÍÐĵȴýµÄ×î¶Ìʱ¼ä£® ÔÚÒ»¸öÖØÔØµÄ·þÎñÆ÷ÉÏ£¬Äã¿ÉÄÜÐèÒªÔö´óËü£®Õâ¸öÖµµÄµäÐÍÉèÖÃÓ¦¸Ã ³¬¹ýÄãµÄÊÂÎñµÄʱ¼ä£¬ÕâÑù¾Í¿ÉÒÔ¼õÉÙÔÚËøÊÍ·Å֮ǰ¾Í¿ªÊ¼ËÀËø¼ì²éµÄ ÎÊÌ⣮ Õâ¸öÑ¡ÏîÖ»ÄÜÔÚ·þÎñÆ÷Æô¶¯µÄʱºòÉèÖã®
ÿ¸ö SQL ÊÂÎñ¶¼ÓÐÒ»¸ö¸ôÀë¼¶±ð£¬¿ÉÒÔÊÇ"¶ÁÒÑÌá½»" »òÕßÊÇ"¿É´®ÐÔ»¯"£®Õâ¸ö²ÎÊý¿ØÖÆÃ¿¸öеÄÊÂÎñÉèÖÃµÄ ¸ôÀë¼¶±ð£®È±Ê¡ÊǶÁÒÑÌá½»£®
²Î¿¼ PostgreSQL Óû§ÊÖ²áºÍÃüÁî SET TRANSACTION »ñÈ¡¸ü¶àÐÅÏ¢£®
Èç¹ûÐèÒª´ò¿ªÒ»¸ö¿ÉÒÔ¶¯Ì¬×°ÔصÄÄ£¿é²¢ÇÒÉùÃ÷µÄÃû×ÖûÓÐĿ¼ ²¿·Ö(Ò²¾ÍÊÇ˵Ãû×ÖÀï²»°üº¬Ð±¿¸)£¬ÄÇôϵͳ½«ËÑË÷Õâ¸öĿ¼ÒÔ ²éÕÒÉùÃ÷µÄÎļþ£®(ËùʹÓõÄÃû×Ö¾ÍÊÇÔÚ CREATE FUNCTION »òÕßLOAD ÃüÁîÖÐÉùÃ÷µÄÃû×Ö£®)
ÓÃÓÚ dynamic_library_path µÄÊýÖµ±ØÐëÊÇÒ»¸öðºÅ·Ö¸ôµÄ ¾ø¶Ô·¾¶Ãû×ÖÁÐ±í£®Èç¹ûÒ»¸ö·¾¶Ãû×ÖÒÔÌØÊâ±äÁ¿ $libdir£¬PostgreSQL±àÒëºÃµÄ¿âĿ¼£¬¿ªÍ·£¬ ÄÇô¾ÍÌæ»»ÎªPostgreSQL·¢²¼ÌṩµÄÄ£¿é°²×°Â·¾¶£® ÏÂÃæÊÇÒ»¸öÀý×ÓÊýÖµ¡Ã
ÓÃÓÚÕâ¸ö²ÎÊýµÄȱʡÊýÖµÊÇ $libdir£® Èç¹û¸ÃÊýÖµÉèÖÃΪ¿Õ×Ö´®£¬ÄÇô¾Í»á¹Ø±Õ×Ô¶¯Â·¾¶²éÕÒ£®
Õâ¸ö²ÎÊý¿ÉÒÔÔÚÔËÐÐʱÓɳ¬¼¶Óû§Ð޸쬵«ÊÇÇë×¢ÒâÕâÑùÉèÖÃµÄ ²ÎÊýÖ»³ÖÐøµ½¸Ã¿Í»§Áª½ÓµÄÖÕÖ¹£¬Òò´ËÕâ¸ö·½·¨Ó¦¸Ã±£Áô¸ø¿ª·¢ÓÃ;£® ÎÒÃÇÍÆ¼öÔÚ postgresql.conf ÅäÖÃÎļþÀïÉèÖÃÕâ¸ö ²ÎÊý£®
Èç¹ûÕâ¸öÑ¡Ïî´ò¿ª£¬PostgreSQLºó¶Ë¾Í»áÔÚÈô¸É¸ö λÖõ÷ÓÃfsync()ϵͳµ÷ÓÃÒÔ±£Ö¤¸üÐÂÎïÀíµØÐ´Èë´ÅÅÌ ¶ø²»ÊÇÐüÔÚд»º³åÇøÀ ÕâÑù×ö¼«´óµØÔö¼ÓÁËÒ»¸öÊý¾Ý¿â°²×°ÔÚ¾ÀúÁË´ó¹æÄ£µÄ²Ù×÷ϵͳ»òÓ²¼þ ±ÀÀ£ºóÈÔÈ»¿ÉÓõĻú»á£®£¨Êý¾Ý¿â·þÎñÆ÷µÄ±ÀÀ£²»»á ³öÏÖÕâ¸öÎÊÌ⣩£®
²»¹ý£¬Õâ¸ö²Ù×÷´ó´óµØ½µµÍÁË PostgreSQL µÄËÙ¶È£¬ÒòΪÔÚËùÓеÄÕâЩλÖã¬Ëü¶¼±ØÐë Í£ÏÂÀ´µÈ´ý²Ù×÷ϵͳÊä³öËüµÄ»º³åÇø£® ûÓÐ fsyncµÄʱºò£¬²Ù×÷ϵͳ¾Í¿ÉÒÔ¾¡¿ÉÄܵش¦ÀíºÃ »º³å£¬ÅÅÐò£¬ºÍºóд£¬Òò´Ë¿ÉÒÔÓзdz£ÏÔÖøµÄÐÔÄÜÌáÉý£® ²»¹ý£¬Èç¹ûϵͳ±ÀÀ££¬Ò»´ÎÒѾÌá½»µÄÊÂÎñµÄ²¿·ÖÊý¾Ý--¶ÔÓ¦ÊÇ´ÅÅÌÉÏ µÄÐÅÏ¢--½«ÈÔȻͣÁôÔÚÄÚ´æÖУ®¾Í¿ÉÄܵ¼Ö²»Á¬¹áµÄÊý¾Ý
Õâ¸öÑ¡ÏîÒ»Ö±ÔÚPostgreSQLÓû§ºÍ¿ª·¢ÕßÉçÍÅÀïÓÐ ÕùÂÛ£¬ÓÐЩÈË×ÜÊǰÑËü¹Ø±Õ£¬ÓÐЩÈËÖ»ÊÇÔÚ´óÁ¿Êý¾Ý×°ÔØµÄʱºò²Å ¹Ø±ÕËü£¬ÕâÑùÈç¹û³ö´íÁ˵ϰ¾ÍÓÐÒ»¸öÏÔ¶øÒ×¼ûµÄÖØÐ¿ªÊ¼µÄÆðµã£® ÓÐЩÈ˰ÑËü´ò¿ªÖ»ÊÇΪÁ˱£Ö¤°²È«£®ÒòΪÕâÑù×ö¸ü°²È«£¬ËùÒÔ È±Ê¡ÊÇ´ò¿ªµÄ£®Èç¹ûÄãÐÅÈÎÄãµÄ²Ù×÷ϵͳ£¬ÄãµÄ Ó²¼þºÍÄãµÄ¹¤¾ß¹«Ë¾£¨»òÕßÊÇÄãµÄ UPS£©£¬Äã¿ÉÄÜÔ¸Òâ¹Ø±ÕËü£®
ÎÒÃÇÐèÒªÖ¸³öµÄÊÇ×öfsyncµÄÐÔÄÜϽµÔÚ PostgreSQL °æ±¾ 7.1 ÀïÃæ±ÈÒÔǰ°æ±¾ÏÔÖø¼õÉÙÁË£®Èç¹ûÒÔǰÄãÒòΪÐÔÄÜÔÒò ½ûÖ¹ÁËfsync£¬ÄÇôÏÖÔÚÄã¿ÉÄÜ»áÖØÐ¿¼ÂÇһϣ®
Õâ¸öÑ¡ÏîÖ»ÄÜÔÚ·þÎñÆ÷Æô¶¯µÄʱºòÉèÖ㬻òÕßÉèÖÃÔÚ postgresql.conf ÎļþÀ
ÉèÖà Kerberos ·þÎñÆ÷ÃÜÔ¿ÎļþµÄλÖ㮲ÎÔÄ Section 4.2.3 »ñȡϸ½Ú£®
¾ö¶¨ÔÊÐí¶àÉÙ¸ö²¢·¢Áª½Ó£®È±Ê¡ÊÇ 32 (³ý·ÇÔÚÖÆ×÷·þÎñÆ÷µÄʱºòÐÞ¸Ä)£® Õâ¸öÑ¡ÏîÖ»ÄÜÔÚ·þÎñÆ÷Æô¶¯µÄʱºòÉèÖã®
ÉèÖ÷ÖÎöÆ÷½ÓÊܵÄ×î´ó±í´ïʽǶÌ×Éî¶È£®È±Ê¡Öµ¶ÔÈκγ£¼û²éѯÀ´Ëµ ¶¼¹»¸ßÁË£¬µ«ÊÇÈç¹ûÄãÐèÒªµÄ»°Äã¿ÉÒÔÌá¸ßÕâ¸öÊýÖµ£® £¨²»¹ýÈç¹ûÄã°ÑËüÉýµÃÌ«¸ß£¬Äã¾ÍµÃðÒòΪջÒç³öµ¼Öµĺó¶Ë±ÀÀ£ µÄ·çÏÕ£®£©
ÉèÖÃÿ¸ö·þÎñÆ÷×Ó½ø³ÌÖÐͬʱ´ò¿ªµÄÎļþÊýÄ¿µÄ×î´óÖµ£® ȱʡÊÇ 1000£®´úÂëʵ¼ÊʹÓõÄÏÞÖÆÒª±ÈÕâ¸öÉèÖÃÒÔ¼° sysconf(_SC_OPEN_MAX) µÄ½á¹ûС£® Òò´Ë£¬ÔÚÄÇЩ·µ»ØºÏÀíÏÞÖÆµÄϵͳÉÏ£¬ÄãÓò»×ŵ£ÐÄÕâ¸öÉèÖã® µ«ÊÇÔÚһЩƽ̨ÉÏ(ÌØ±ðÊÇ´ó¶àÊý BSD ϵͳ)£¬ sysconf·µ»ØµÄÖµÒªÔ¶±È´óÁ¿½ø³ÌͬʱÊÔͼ´ò¿ª¸ÃÊýÁ¿µÄÎļþʱ ϵͳËùÄÜÖ§³ÖµÄ´ó£®Èç¹ûÄã·¢ÏÖ×Ô¼º¿´µ½ "´ò¿ªÌ«¶àÎļþ(Too many open files)"´íÎó£¬ ÄÇôÊÔ׎µµÍÕâ¸öÉèÖÿ´¿´£®Õâ¸öÑ¡ÏîÖ»ÄÜÔÚ·þÎñÆ÷Æô¶¯Ê±ÉèÖ㬠»òÕßÔÚ postgresql.conf ÅäÖÃÎļþÖÐÉèÖã» Èç¹ûÔÚÅäÖÃÎļþÖÐÐÞ¸ÄÁËËü£¬ÄÇôËüÖ»Ó°ÏìËæºóÆô¶¯µÄ·þÎñÆ÷×Ó½ø³Ì£®
ÉèÖÃÄÇЩ×ÔÓɿռäÊÇͨ¹ý·ÅÔÚ¹²ÏíµÄ×ÔÓɿռäÓ³Éä±íÖнøÐиú×ٵĹØÏµ(±í)µÄ ×î´óÊýÄ¿£® ȱʡÊÇ 100£®Õâ¸öÑ¡ÏîÖ»ÄÜÔÚ·þÎñÆ÷Æô¶¯µÄʱºòÉèÖã®
ÉèÖÃÄÇЩ×ÔÓɿռäÊÇͨ¹ý·ÅÔÚ¹²ÏíµÄ×ÔÓɿռäÓ³Éä±íÖнøÐиú×ÙµÄ ×î´ó´ÅÅÌÒ³ÃæÊýÄ¿£®È±Ê¡ÊÇ 10000£®Õâ¸öÑ¡ÏîÖ»ÄÜÔÚ·þÎñÆ÷Æô¶¯µÄʱºòÉèÖã®
¹²Ïí±íµÄ´óСÊÇÒÔ¼ÙÉèÈÎÒâʱ¿Ì×î¶àÖ»ÓÐ max_locks_per_transaction * max_connections ¸ö¶ÀÁ¢µÄ¶ÔÏóÐèÒª±»Ëø×¡Îª»ù´¡½øÐмÆËãµÄ£®È±Ê¡Öµ 64£¬ÒѾ¾ÀúÊ·Ö¤Ã÷ ÊÇ×ã¹»µÄÁË£¬²»¹ýÈç¹ûÄãµÄ¿Í»§¿ÉÄÜÔÚÒ»¸öÊÂÎñÀïÃæÐ޸ĺܶ಻ͬµÄ±í£¬ ÄÇôÄã¾Í¿ÉÄÜÐèÒªÌá¸ßÕâ¸öÊýÖµ£®Õâ¸öÑ¡ÏîÖ»ÄÜÔÚ·þÎñÆ÷Æô¶¯µÄʱºòÉèÖã®
·þÎñÆ÷ÕìÌýµÄ TCP ¶Ë¿Ú£»È±Ê¡ 5432£®Õâ¸öÑ¡ÏîÖ»ÄÜÔÚ·þÎñÆ÷Æô¶¯µÄʱºòÉèÖã®
ÉèÖÃÊý¾Ý¿â·þÎñÆ÷½«Ê¹ÓõĹ²ÏíÄڴ滺³åÇøÊýÁ¿£®È±Ê¡ÊÇ 64£® ÿ¸ö»º³åÇø´óСµÄµäÐÍÖµÊÇ 8192 ×Ö½Ú£® Õâ¸öÑ¡ÏîÖ»ÄÜÔÚ·þÎñÆ÷Æô¶¯µÄʱºòÉèÖã®
°²¾²µØÔËÐÐ postmaster£®Èç¹ûÉèÖÃÕâ¸öÑ¡Ï postmaster ½«×Ô¶¯ ÔÚºǫ́ÔËÐв¢ÇÒÅׯúµô¿ØÖÆ tty£¬Òò´Ë²»»áÓÐÈÎÒâÐÅÏ¢Êä³öµ½stdout »òstderr£¨ºÍ postmaster µÄ -S Ñ¡ÏîЧ¹ûÏàͬ£©£®³ý·Ç´ò¿ªÁË ±ÈÈçsyslogÕâÑùµÄÈÕ־ϵͳ£¬ ÎÒÃDz»½¨ÒéʹÓÃÕâ¸öÑ¡ÏÒòΪÕâÑùÁî²éÕÒ´íÎóÐÅÏ¢·Ç³£À§ÄÑ£®
ÉùÃ÷ÔÚÇóÖúÓÚÁÙʱ´ÅÅÌÎļþ֮ǰÓÃÓÚÄÚ²¿ÅÅÐòºÍÉ¢ÁУ¨hash£©µÄÄÚ´æ µÄÊýÁ¿£®´ËÖµÊÇÒÔǧ×Ö½ÚΪ¼ÆÁ¿µ¥Î»µÄ£¬È±Ê¡Îª 512KB£® Çë×¢Ò⣬¶ÔÓÚ¸´ÔÓ²éѯ£¬¶à¸öÅÅÐòºÍ/»òÉ¢ÁУ¨hash£©¿ÉÄܻᲢÐÐ ÔËÐУ¬¶øÇÒÔÚ¿ªÊ¼ÏòÁÙʱÎļþÊä³öÊý¾Ý֮ǰ£¬ ÿ¸ö²Ù×÷¶¼»á±»ÔÊÐíʹÓÃÕâÀïÉùÃ÷µÄÊýÁ¿µÄÄڴ森 ÒòΪÿ¸öºó¶Ë¶¼»á×öÒ»¸ö»ò¸ü¶àµÄÅÅÐò£¬Òò´ËÐèÒªµÄ¿Õ¼ä¿ÉÄÜÊÇ SORT_MEMµÄÐí¶à±¶£®
Õâ¸öÑ¡Ïî¿ØÖÆ¼Ì³ÐÓïÒ壬ÓÈÆäÊÇÔÚȱʡʱÊÇ·ñÔÚ¸÷ÖÖÃüÁîÀÂÇ °Ñ×Ó±í°üÀ¨½øÀ´£® °æ±¾ 7.1 ÒÔǰµÄÌØÐÔ²»ÊÇÕâÑùµÄ£®Èç¹ûÄãÐèÒªÀÏÌØÐÔ£¬Äã¿ÉÒÔ°ÑÕâ¸ö±äÁ¿ ÉèΪ¼Ù£¬µ«ÊÇ´Ó³¤Ô¶¿´À´£¬ÎÒÃǽ¨ÒéÄãÐÞ¸ÄÄãµÄÓ¦ÓÃÒÔʹÓà ONLY ¹Ø¼ü×ÖÀ´Åųý×Ó±í£®²Î¿¼ SQL ÓïÑÔË÷Òý ºÍ Óû§ÊÖ²á»ñÈ¡¹ØÓڼ̳еĸü¶àÐÅÏ¢£®
´ò¿ª SSL Áª½Ó£®Ê¹ÓÃ֮ǰÇë²ÎÔÄ Section 3.7 £®È±Ê¡Êǹأ®
Èç¹û´ËÖµÎªÕæ£¬ÄÇô·þÎñÆ÷½ÓÊÜ TCP/IP Áª½Ó£® ·ñÔòÖ»½ÓÊܱ¾µØµÄ Unix ÓòÌ×½Ó×ÖÁª½Ó£® ȱʡÊǹرգ® Õâ¸öÑ¡ÏîÖ»ÄÜÔÚ·þÎñÆ÷Æô¶¯µÄʱºòÉèÖã®
Èç¹û´ò¿ªËü£¬ÄÇôÏÂÃæÕâÑùµÄ±í´ïʽ expr = NULL (»òÕß NULL = expr) ±»µ±×ö expr IS NULL£¬´¦Àí£¬Ò²¾ÍÊÇ˵£¬ Èç¹û expr µÃ³ö NULL ÖµÔò·µ»ØÕ棬·ñÔò·µ»Ø¼Ù£® expr = NULL µÄÕýÈ·µÄÐÐΪ×ÜÊÇ·µ»Ø NULL(δ֪)£®Òò´ËÕâ¸öÑ¡ÏîȱʡʱÊǹرյģ®
²»¹û£¬ÔÚMicrosoft AccessÀïµÄ¹ýÂË±íµ¥ Éú³ÉµÄ²éѯºÃÏñʹÓõÄÊÇ expr = NULL ²âÊÔ NULL£¬ Òò´Ë£¬Èç¹ûÄãʹÓÃÕâ¸ö½çÃæ·ÃÎÊÊý¾Ý¿â£¬Äã¿ÉÄÜÏë°ÑÕâ¸öÑ¡Ïî´ò¿ª£® ÒòΪÐÎÈç expr = NULL µÄ ±í´ïʽ×ÜÊÇ·µ»Ø NULL (ʹÓÃÕýÈ·µÄ´ú»»)£¬Òò´ËËüÃDz¢²»³£Ó㬠¶øÇÒÔÚÒ»°ãµÄÓ¦ÓÃÖÐÒ²²»³£¼û£¬Òò´ËÕâ¸öÑ¡Ïîʵ¼ÊÉÏûÓÐʲôº¦´¦£® µ«ÊÇÐÂÓû§³£³£ÔÚÉæ¼° NULL µÄ±í´ïʽÓïÒåÉϸе½ºúÍ¿£¬ Òò´ËÎÒÃÇȱʡʱ²¢²»´ò¿ªÕâ¸öÑ¡Ï
Çë×¢ÒâÕâ¸öÑ¡ÏîÖ»Ó°ÏìÎı¾µÄ = ²Ù×÷·û£¬ ²»°üÀ¨ÆäËü±È½Ï²Ù×÷·û»òÕ߯äËüÓëÒ»Ð©Éæ¼°µÈºÅ²Ù×÷·ûµÄ ±í´ïʽ¼ÆËã(±ÈÈç IN)£®Òò´Ë£¬Õâ¸öÑ¡Ïî²»ÊÇ À¬»ø³ÌÐòµÄ¹·Æ¤¸àÒ©£®
Çë²Î¿¼Óû§ÊÖ²á»ñÈ¡Ïà¹ØÐÅÏ¢£®
ÉùÃ÷ postmaster ÓÃÓÚÕìÌýÀ´×Ô¿Í»§¶ËÓ¦ÓÃÁª½ÓµÄ Unix ÓòÌ×½Ó×ÖĿ¼Ãû£® ȱʡͨ³£ÊÇ /tmp£¬²»¹ý¿ÉÒÔÔÚÖÆ×÷ʱ¸Ä±ä£®
ÉèÖà Unix ÓòÌ×½Ó×ÖµÄ×éËùÓÐÈË£®£¨Ì×½Ó×ÖµÄËùÓÐȨÓû§×ÜÊÇÆô¶¯ postmaster µÄÓû§£®£©Óë UNIX_SOCKET_PERMISSIONS Ñ¡ÏîÒ»ÆðʹÓÿÉÒÔ¸øÕâÖÖÌ×½Ó×ÖÀàÐÍÔö¼Ó¶îÍâµÄ·ÃÎÊ¿ØÖÆ»úÖÆ£® ȱʡʱÊÇÒ»¸ö¿Õ×Ö´®£¬Ò²¾ÍÊÇʹÓõ±Ç°Óû§µÄȱʡµÄ×飮 Õâ¸öÑ¡ÏîÖ»ÄÜÔÚ·þÎñÆ÷Æô¶¯Ê±ÉèÖã®
¸ø Unix ÓòÌ×½Ó×ÖÉèÖ÷ÃÎÊȨÏÞ£®Unix ÓòÌ×½Ó×ÖʹÓÃͨ³£µÄ Unix ÎļþϵͳȨÏÞ¼¯£®¿ÉÑ¡µÄÖµ¿ÉÒÔÊÇÒ»¸ö chmod ºÍ umask ϵͳµ÷ÓÿÉÒÔ½ÓÊܵÄÊý×Öģʽ£® £¨ÒªÊ¹Óÿͻ§»¯µÄ°Ë½øÖƸñʽ£¬¸ÃÊý×Ö±ØÐëÒÔ 0 £¨Á㣩¿ªÍ·£®£©
ȱʡȨÏÞÊÇ 0777£¬Òâ¼´ÈκÎÈ˶¼¿ÉÒÔÁª½Ó£® ºÏÀíµÄÑ¡Ôò¿ÉÄÜÊÇ0770 £¨Ö»ÓÐÓû§ºÍ×飬 ²ÎÔÄUNIX_SOCKET_GROUP£©ºÍ 0700 £¨Ö»ÓÐÓû§£©£® £¨Çë×¢Òâ¶ÔÓÚ Unix Ì×½Ó×Ö¶øÑÔ£¬Êµ¼ÊÉÏÖ»ÓÐдȨÏÞÓÐÒâÒ壬¶øÇÒ Ò²Ã»Óа취ÉèÖûòÕßÈ¡Ïû¶Á»òÖ´ÐÐȨÏÞ£®£©
ÕâÖÖ·ÃÎÊ¿ØÖÆ»úÖÆÊÇºÍ Chapter 4. ÀïÃæÃèÊöµÄÄÇЩÍêÈ«¶ÀÁ¢µÄ£®
Õâ¸öÑ¡ÏîÖ»ÄÜÔÚ·þÎñÆ÷Æô¶¯Ê±ÉèÖã®
ÉùÃ÷ postmaster ÓÃÓÚÕìÌýÀ´×Ô¿Í»§¶ËÓ¦ÓÃÁª½ÓµÄ TCP/IP Ö÷»úÃû»òÕßµØÖ·£® ȱʡÊÇ PGHOST »·¾³±äÁ¿µÄÖµ£¬ Èç¹ûûÓÐÉèÖà PGHOST£¬È±Ê¡ÊÇÕìÌý ËùÓÐÅäÖÃÁ˵ĵØÖ·£¨°üÀ¨localhost£©£®
ÓÖ¼û Section 11.3 »ñÈ¡ WAL µ÷½ÚµÄϸ½Ú£®
ÔÚ×Ô¶¯ WAL ¼ì²éµãÖ®¼äµÄ×î´ó¾àÀ룬µ¥Î»ÊÇÈÕÖ¾Îļþ¶Î £¨Ã¿¸ö¶ÎÒ»°ãÊÇ 16 Õ××Ö½Ú£©£® Õâ¸öÑ¡ÏîÖ»ÄÜÔÚ·þÎñÆ÷Æô¶¯µÄʱºòÉèÖ㬻òÕßÉèÖÃÔÚ postgresql.conf ÎļþÀ
×Ô¶¯ WAL ¼ì²éµãÖ®¼äµÄ×ʱ¼ä£¬ÒÔÃë¼Æ£® Õâ¸öÑ¡ÏîÖ»ÄÜÔÚ·þÎñÆ÷Æô¶¯µÄʱºòÉèÖ㬻òÕßÉèÖÃÔÚ postgresql.conf ÎļþÀ
дһ¸öÌá½»µÄ¼Ç¼µ½ WAL »º³åºÍ°Ñ»º³å³åË¢µ½´ÅÅÌÉϵÄʱ¼ä¼ä¸ô£¬ ÒÔºÁÃë¼Æ£®·ÇÁãµÄÑÓ³ÙÔÊÐí¶à¸öÊÂÎñÓÃÒ»¸öfsyncÌá½»£¬Ìõ¼þÊÇ ÏµÍ³µÄ¸ººÉ¸ßµ½ÔÚ¸ø³öµÄ¼ä¸ôÀïÆäËüµÄÊÂÎñÒѾ¿ÉÒÔÌá½»ÁË£® Èç¹ûûÓÐÆäËüµÄÊÂÎñ×¼±¸ºÃ½øÐÐÌá½»£¬ÄÇôÕâ¸öÑÓ³Ù¾ÍÊÇÀË·Ñʱ¼ä£® Òò´Ë£¬Õâ¸öÑÓ³ÙÖ»ÓÐÔÚºó¶Ë°ÑËüµÄÌá½»¼Ç¼д³öµÄ˲¼äÖÁÉÙÓÐ COMMIT_SIBLINGS ¸öÆäËüµÄÊÂÎñ»îÔ¾µÄÇé¿öϲÅÖ´ÐУ®
ÔÚÖ´ÐÐCOMMIT_DELAYÑÓ³Ù֮ǰËùÒªÇóµÄ²¢ÐеĴò¿ªµÄÊÂÎñµÄ×îµÍÊýÄ¿£® ÊýÖµÔ½´ó£¬¾ÍÔ½ÓпÉÄÜÖÁÉÙÓÐÁíÍâÒ»¸öÊÂÎñÔÚÑӳٵļä¸ôÖÐ×öºÃÁËÌá½»µÄ ×¼±¸£®
¹²ÏíÄÚ´æÖÐÓÃÓÚ WAL µÄ´ÅÅÌÒ³»º³åÇøÊýÄ¿£® Õâ¸öÑ¡ÏîÖ»ÄÜÔÚ·þÎñÆ÷Æô¶¯Ê±ÉèÖã®
Èç¹ûΪ·ÇÁ㣬ÔòÔÚstderrÉÏ´ò¿ªÓë WAL Ïà¹ØµÄµ÷ÊÔÊä³ö£®
ÔÚ¼ì²éµãʱԤÏÈ´´½¨µÄÈÕÖ¾ÎļþÊýÄ¿£® Õâ¸öÑ¡ÏîÖ»ÄÜÔÚ·þÎñÆ÷Æô¶¯µÄʱºòÉèÖ㬻òÕßÉèÖÃÔÚ postgresql.conf ÎļþÀ
ÓÃÓÚÇ¿ÖÆ WAL ¸üе½´ÅÅÌÉϵķ½·¨£®¿ÉÄܵÄÊýÖµÊÇ FSYNC £¨ÔÚÿ´ÎÌύʱµ÷ÓÃfsync()£© FDATASYNC £¨ÔÚÿ´ÎÌύʱµ÷ÓÃfdatasync()£© OPEN_SYNC £¨ÓôøO_SYNCÑ¡ÏîµÄopen() д WAL Îļþ£©£¬»òÕßÊÇ OPEN_DATASYNC £¨ÓôøO_DSYNCÑ¡ÏîµÄopen() д WAL Îļþ£©£® ²¢·ÇÔÚËùÓÐÆ½Ì¨É϶¼¿ÉÒÔʹÓÃÕâЩѡÏ Õâ¸öÑ¡ÏîÖ»ÄÜÔÚ·þÎñÆ÷Æô¶¯µÄʱºòÉèÖ㬻òÕßÉèÖÃÔÚ postgresql.conf ÎļþÀ
ΪÁË·½±ãÆð¼û£¬ÕâÀﻹΪÐí¶à²ÎÊýÌṩÁ˺ö൥×ÖĸѡÏ¹Ø£® ËüÃÇÔÚϱíÀïÃèÊö£®
Table 3-1. ¶ÌÑ¡Ïî¼ü×Ö
| ¶ÌÑ¡Ïî | µÈЧ | ÆÀ×¢ |
|---|---|---|
| -B x | shared_buffers = x | |
| -d x | debug_level = x | |
| -F | fsync = off | |
| -h x | virtual_host = x | |
| -i | tcpip_socket = on | |
| -k x | unix_socket_directory = x | |
| -l | ssl = on | |
| -N x | max_connections = x | |
| -p x | port = x | |
| -fi, -fh, -fm, -fn, -fs, -ft | enable_indexscan=off, enable_hashjoin=off, enable_mergejoin=off, enable_nestloop=off, enable_seqscan=off, enable_tidscan=off | * |
| -S x | sort_mem = x | * |
| -s | show_query_stats = on | * |
| -tpa,-tpl,-te | show_parser_stats=on,show_planner_stats=on,show_executor_stats=on | * |
$ postmaster -o '-S 1024 -s'
»òÕßͨ¹ý¿Í»§¶ËµÄPGOPTIONS£¬ÏóÇ°ÃæµÄÀý×ÓÄÇÑù£®