Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
PostgreSQLÌåϵ¼Ü¹¹
 
×÷Õߣºjerry-89
  2655  次浏览      27
2021-1-7 
 
±à¼­ÍƼö:
±¾ÎÄÊ×ÏȽéÉÜÁËPostgreSQL ϵͳµÄ»ù±¾Ìåϵ½á¹¹¡¢Potgres(³£×¤½ø³Ì)¡¢Postgres(×Ó½ø³Ì)¡¢Postgres(×Ó½ø³Ì)ÒÔ¼°ºó¶ËµÄ´¦ÀíÁ÷³Ì¡£
±¾ÎÄÀ´×Ôcsdn£¬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼­¡¢ÍƼö¡£

PostgreSQL ϵͳµÄ»ù±¾Ìåϵ½á¹¹

PostgreSQL ʹÓÿͻ§»ú/·þÎñÆ÷£¨C/S£©µÄģʽÌṩ·þÎñ£¬Ò»¸öPostgreSQL»á»°ÓÉÏÂÁÐÏà¹ØµÄ½ø³Ì£¨³ÌÐò£©×é³É£º

(1)Ò»¸ö·þÎñÆ÷¶Ë½ø³Ì¡£¸Ã½ø³Ì¹ÜÀíÊý¾Ý¿âÎļþ£¬½ÓÊܿͻ§¶ËÓëÊý¾Ý¿âµÄÁ¬½Ó£¬ÇÒ´ú±í¿Í»§¶Ë¶ÔÊý¾Ý¿â½øÐвÙ×÷¡£¸Ã½ø³ÌµÄ³ÌÐòÃû½Ð×ö postgres¡£

(2)ǰ¶ËÓ¦Ó㬼´ÐèÒª½øÐÐÊý¾Ý¿â²Ù×÷µÄ¿Í»§¶ËÓ¦Ó᣿ͻ§¶ËÓ¦ÓÿÉÄܱ¾Éí¾ÍÊǶàÖÖ¶àÑùµÄ£ºËüÃÇ¿ÉÒÔÊÇÒ»¸ö×Ö·û½ç ÃæµÄ¹¤¾ß£¬ Ò²¿ÉÒÔÊÇÒ»¸öͼÐνçÃæµÄÓ¦Ó㬻òÕßÊÇÒ»¸öͨ¹ý·ÃÎÊÊý¾Ý¿âÀ´ÏÔÊ¾ÍøÒ³µÄ web ·þÎñÆ÷£¬»òÕßÊÇÒ»¸öÌØÊâµÄÊý¾Ý¿â¹ÜÀí¹¤¾ß¡£ һЩ¿Í»§¶ËÓ¦ÓÃÊÇºÍ PostgreSQL ·¢²¼Ò»ÆðÌṩµÄ£¬µ«¾ø´ó²¿·ÖÊÇÓû§¿ª·¢µÄ¡£

ºÍµäÐ͵Ŀͻ§¶Ë/·þÎñÆ÷Ó¦Óã¨C/SÓ¦Óã©Ò»Ñù£¬¿Í»§¶ËºÍ·þÎñÆ÷¿ÉÒÔÔÚ²»Í¬µÄÖ÷»úÉÏ¡£´Ëʱ£¬ËüÃÇͨ¹ýTCP/IP½øÐÐÍøÂçÁ¬½Ó£¬ÄãÓ¦¸Ã¼ÇסÕâÒ»µã£¬ÒòΪÔÚ¿Í»§»úÉÏ¿ÉÒÔ·ÃÎʵÄÎļþδ±ØÄܹ»ÔÚÊý¾Ý¿â·þÎñÆ÷»úÆ÷ÉÏ·ÃÎÊ£¨»òÕßÖ»ÄÜÓò»Í¬µÄÎļþÃû½øÐзÃÎÊ£©¡£

PostgreSQL ·þÎñÆ÷¿ÉÒÔ´¦ÀíÀ´×Ô¿Í»§¶ËµÄ¶à¸ö²¢·¢ÇëÇó¡£ÎªÁËÄÜÕâÑù´¦Àí£¬Ëü»áΪÿ¸öÇëÇóÆô¶¯£¨¡°forks¡±£©Ò»¸öеĽø³Ì£¬È»ºó£¬¿Í»§¶ËºÍзþÎñÆ÷¶Ë½ø³Ì¾Í²»ÔÙ¾­¹ý×î³õµÄpostgres ½ø³Ì¶øÖ±½ÓͨÐÅ¡£ Òò´Ë£¬ ·þÎñÆ÷¶ËµÄÖ÷½ø³ÌÒ»Ö±ÔËÐУ¬µÈ´ý×ÅÀ´×Ô¿Í»§¶ËµÄÁ¬½Ó£»¶ø¿Í»§¶ËºÍÏà¹ØÁªµÄ·þÎñÆ÷¶Ë½ø³ÌÔòÔÚÐèÒªµÄʱºò²Å»áÔËÐС££¨µ±È»£¬ÕâЩ¶ÔÓû§À´ËµÊÇ͸Ã÷µÄ£¬ÔÚÕâÀï̸ÕâЩÖ÷ÒªÊÇΪÁË˵Ã÷µÄÍêÕûÐÔ¡££©

PostgreSQLÊý¾Ý¿âÊÇÒ»ÖÖ¼«ºÃ¿ÉÒÔÔËÐÐÔÚ¸÷ÖÖÆ½Ì¨ÉϵÄÃâ·ÑµÄ¿ª·ÅÔ´ÂëµÄ¶ÔÏó¹ØÏµÊý¾Ý¿â£¬ËüÊÇÒ»ÖÖÒÔ¹ØÏµÊý¾Ý¿âºÍSQLΪ»ù´¡£¬À©Õ¹Á˳éÏóÊý¾ÝÀàÐÍ£¬´Ó¶ø¾ß±¸ÃæÏò¶ÔÏóÌØÐÔµÄÊý¾Ý¿â¡£

PostgreSQLÌåϵ½á¹¹Í¼£¨×é³É½á¹¹ºÍ¹ØÏµ£©

PostgreSQLÓÉÁ¬½Ó¹ÜÀíϵͳ£¨ÏµÍ³¿ØÖÆÆ÷£©£¬±àÒëÖ´ÐÐϵͳ£¬´æ´¢¹ÜÀíϵͳ£¬ÊÂÎñϵͳ£¬ÏµÍ³±íÎå´ó²¿·Ö×é³É¡£

Á¬½Ó¹ÜÀíϵͳ½ÓÊÜÍⲿ²Ù×÷¶ÔϵͳµÄÇëÇ󣬶ԲÙ×÷ÇëÇó½øÐÐÔ¤´¦ÀíºÍ·Ö·¢£¬ÆðϵͳÂß¼­¿ØÖÆ×÷Óã»

±àÒëÖ´ÐÐϵͳÓɲéѯ±àÒëÆ÷£¬²éѯִÐÐÆ÷×é³É£¬Íê³É²Ù×÷ÇëÇóÔÚÊý¾Ý¿âÖеķÖÎö´¦ÀíºÍת»¯¹¤×÷£¬×îÖÕʵÏÖÎïÀí´æ´¢½éÖÊÖÐÊý¾ÝµÄ²Ù×÷£»

´æ´¢¹ÜÀíϵͳÓÉË÷Òý¹ÜÀíÆ÷£¬ÄÚ´æ¹ÜÀíÆ÷£¬Íâ´æ¹ÜÀíÆ÷×é³É£¬¸ºÔð´æ´¢ºÍ¹ÜÀíÎïÀíÊý¾Ý£¬Ìṩ¶Ô±àÒë²éѯϵͳµÄÖ§³Ö£»

ÊÂÎñϵͳÓÉÊÂÎñ¹ÜÀíÆ÷£¬ÈÕÖ¾¹ÜÀíÆ÷£¬²¢·¢¿ØÖÆ£¬Ëø¹ÜÀíÆ÷×é³É£¬ÈÕÖ¾¹ÜÀíÆ÷ºÍÊÂÎñ¹ÜÀíÆ÷Íê³É¶Ô²Ù×÷ÇëÇóµÄÊÂÎñÒ»ÖÂÐÔÖ§³Ö£¬Ëø¹ÜÀíÆ÷ºÍ²¢·¢¿ØÖÆÌṩ¶Ô²¢·¢·ÃÎÊÊý¾ÝµÄÒ»ÖÂÐÔÖ§³Ö£»

ϵͳ±íÊÇPostgreSQLÊý¾Ý¿âµÄÔªÐÅÏ¢¹ÜÀíÖÐÐÄ£¬°üÀ¨Êý¾Ý¿â¶ÔÏóÐÅÏ¢ºÍÊý¾Ý¿â¹ÜÀí¿ØÖÆÐÅÏ¢¡£ÏµÍ³±í¹ÜÀíÔªÊý¾ÝÐÅÏ¢£¬½«PostgreSQLÊý¾Ý¿âµÄ¸÷¸öÄ£¿éÓлúµØÁ¬½ÓÔÚÒ»Æð£¬ÐγÉÒ»¸ö¸ßЧµÄÊý¾Ý¹ÜÀíϵͳ¡£

ϵͳ±í

ÔÚ¹ØÏµÊý¾Ý¿âÖУ¬ÎªÁËʵÏÖÊý¾Ý¿âϵͳµÄ¿ØÖÆ£¬±ØÐëÌṩÊý¾Ý×ÖµäµÄ¹¦ÄÜ¡£Êý¾Ý×ֵ䲻½ö´æ´¢¸÷ÖÖ¶ÔÏóµÄÃèÊöÐÅÏ¢£¬¶øÇҴ洢ϵͳ¹ÜÀíËùÐèµÄ¸÷ÖÖ¶ÔÏóµÄϸ½ÚÐÅÏ¢¡£Êý¾Ý×Öµä°üº¬Êý¾Ý¿âϵͳÖÐËùÓжÔÏó¼°ÆäÊôÐÔµÄÃèÊöÐÅÏ¢£¬¶ÔÏóÖ®¼ä¹ØÏµµÄÃèÊöÐÅÏ¢£¬¶ÔÏóÊôÐÔµÄ×ÔÈ»ÓïÑÔº¬ÒåÒÔ¼°Êý¾Ý×Öµä±ä»¯µÄÀúÊ·£¬Êý¾Ý×ÖµäÊǹØÏµÊý¾Ý¿âϵͳ¹ÜÀí¿ØÖÆÐÅÏ¢µÄºËÐÄ£¬ÔÚPostgreSQLÊý¾Ý¿âϵͳÖÐϵͳ±í°çÑÝ×ÅÊý¾Ý×ÖµäµÄ½ÇÉ«¡£

ϵͳ±íÊÇPostgreSQLÊý¾Ý¿â´æ·Å½á¹¹ÔªÊý¾ÝµÄµØ·½£¬ËûÔÚPostgreSQLÖбíÏÖΪ´æ·ÅÓÐϵͳÐÅÏ¢µÄÆÕͨ±í»òÕßÊÓͼ£¨Óû§¿ÉÒÔɾ³ý£¬Öؽ¨£©¡£

ϵͳ±í±£´æÁËÊý¾Ý¿âµÄËùÓÐÔªÊý¾Ý£¬ËùÒÔϵͳÔËÐÐʱ¶Ôϵͳ±íµÄ·ÃÎÊÊǷdz£Æµ·±µÄ¡£ÎªÁËÌá¸ßϵͳÐÔÄÜ£¬ÔÚÄÚ´æÖн¨Á¢Á˹²ÏíµÄϵͳ±í£¬Ê¹ÓÃHash±íÌá¸ß²éѯЧÂÊ¡£

Ö÷Ҫϵͳ±í¹¦ÄÜ

1 pg_namespace ´æ´¢ÃüÃû¿Õ¼ä

2 pg_tablespace ´æ´¢¿Õ¼äÐÅÏ¢

3 pg_database ´æ´¢µ±Ç°Êý¾Ý¼¯´ØÖÐÊý¾Ý¿âµÄÐÅÏ¢¡£

4 pg_class ´æ´¢±í¼°Óë±íÀàËÆ½á¹¹µÄÊý¾Ý¿â¶ÔÏóÐÅÏ¢£¬°üº¬£¬Ë÷Òý£¬ÐòÁУ¬ÊÓͼ£¬¸´ºÏÊý¾ÝÀàÐÍ£¬TOAST±íµÈ¡£

5 pg_type ´æ´¢Êý¾ÝÀàÐÍÐÅÏ¢¡£

6 pg_attribute ´æ´¢±íµÄÊôÐÔÐÅÏ¢¡£

7 pg_index ´æ´¢Ë÷ÒýµÄ¾ßÌåÐÅÏ¢¡£

PostgreSQLÊý¾Ý¿âϵͳµÄÖ÷Òª¹¦Äܶ¼¼¯ÖÐÓÚPostgres³ÌÐò£¬ÆäÈë¿ÚÊÇMainÄ£¿éÖеÄmainº¯Êý£¬ÔÚ³õʼ»¯Êý¾Ý¼¯´Ø£¬Æô¶¯Êý¾Ý¿â·þÎñÆ÷ÊÇ£¬¶¼½«´ÓÕâÀ↑ʼִÐС£MainÄ£¿éÖ÷ÒªµÄ¹¤×÷ʱȷ¶¨µ±Ç°µÄ²Ù×÷ϵͳƽ̨£¬²¢¾Ý´Ë×öһЩƽ̨Ïà¹ØµÄ»·¾³±äÁ¿ÉèÖúͳõʼ»¯£¬È»ºóͨ¹ý¶ÔÃüÁîÐвÎÊýµÄÅжϣ¬½«¿ØÖÆ×ªµ½ÏàÓ¦µÄÄ£¿éÖÐÈ¥¡£ÏÂͼÊÇmainº¯ÊýµÄµ÷ÓÃÁ÷³Ì¡£

PostgreSQLϵͳÖ÷º¯ÊýmainµÄÁ÷³Ì

PostgreSQLÊØ»¤½ø³ÌPostmasterΪÓû§Á¬½ÓÇëÇó·ÖÅäºǫ́Postgres·þÎñ½ø³Ì£¬»¹½«Æô¶¯Ïà¹ØµÄºǫ́·þÎñ½ø³Ì£ºSysLogger(ϵͳÈÕÖ¾½ø³Ì),PgStat(ͳ¼ÆÊý¾ÝÊÕ¼¯½ø³Ì),

AutoVacuum(ϵͳ×Ô¶¯ÇåÀí½ø³Ì).ÔÚPostmaster½øÈ뵽ѭ»·¼àÌýÖÐʱÆô¶¯ÈçϽøÐУºBgWriter(ºǫ́д½ø³Ì),WalWriter(ԤдʽÈÕ־д½ø³Ì),PgArch(ԤдʽÈÕÖ¾¹éµµ½ø³Ì)¡£ÕâЩ½ø³Ì½«ÔÚºóÐøÎÄÕÂÖнéÉÜ¡£

ÏÂͼÊÇPostgreSQLµÄºǫ́Á÷³Ìͼ£º

1.1 Potgres(³£×¤½ø³Ì)

¹ÜÀíºó¶ËµÄ³£×¤½ø³Ì£¬Ò²³ÆÎª¡¯postmaster¡¯¡£ÆäĬÈϼàÌýUNIXDomain SocketºÍTCP/IP£¨WindowsµÈ£¬Ò»²¿·ÖµÄƽֻ̨¼àÌýtcp/ip£©µÄ5432¶Ë¿Ú£¬µÈ´ýÀ´×Ôǰ¶ËµÄµÄÁ¬½Ó´¦Àí¡£¼àÌýµÄ¶Ë¿ÚºÅ¿ÉÒÔÔÚPostgreSQLµÄÉèÖÃÎļþpostgresql.confÀïÃæ¿ÉÒԸġ£

Ò»µ©ÓÐǰ¶ËÁ¬½Ó¹ýÀ´£¬postgres»áͨ¹ýfork(2)Éú³É×Ó½ø³Ì¡£Ã»ÓÐFork(2)µÄwindowsƽ̨µÄ»°£¬ÔòÀûÓÃcreateProcess()Éú³ÉеĽø³Ì¡£ÕâÖÖÇéÐεϰ£¬ºÍfork(2)²»Í¬µÄÊÇ£¬¸¸½ø³ÌµÄÊý¾Ý²»»á±»¼Ì³Ð¹ýÀ´£¬ËùÒÔÐèÒªÀûÓù²ÏíÄÚ´æ°Ñ¸¸½ø³ÌµÄÊý¾Ý¼Ì³Ð¹ýÀ´¡£

1.2 Postgres(×Ó½ø³Ì)

×Ó½ø³Ì¸ù¾Ýpg_hba.conf¶¨ÒåµÄ°²È«²ßÂÔÀ´ÅжÏÊÇ·ñÔÊÐí½øÐÐÁ¬½Ó£¬¸ù¾Ý²ßÂÔ£¬»á¾Ü¾øÄ³Ð©Ìض¨µÄIP¼°ÍøÂ磬»òÕßÒ²¿ÉÒÔÖ»ÔÊÐíÄ³Ð©ÌØ¶¨µÄÓû§»òÕß¶ÔijЩÊý¾Ý¿â½øÐÐÁ¬½Ó¡£

Postgres»á½ÓÊÜǰ¶Ë¹ýÀ´µÄ²éѯ£¬È»ºó¶ÔÊý¾Ý¿â½øÐмìË÷£¬×îºÃ°Ñ½á¹û·µ»Ø£¬ÓÐʱҲ»á¶ÔÊý¾Ý¿â½øÐиüС£¸üеÄÊý¾Ýͬʱ»¹»á¼Ç¼ÔÚÊÂÎñÈÕÖ¾ÀïÃæ£¨PostgreSQL³ÆÎªWALÈÕÖ¾£©£¬Õâ¸öÖ÷ÒªÊǵ±Í£µçµÄʱºò£¬·þÎñÆ÷µ±»ú£¬ÖØÐÂÆô¶¯µÄʱºò½øÐлָ´´¦ÀíµÄʱºòʹÓõġ£ÁíÍ⣬°ÑÈÕÖ¾¹éµµ±£´æÆðÀ´£¬¿ÉÔÚÐèÒª½øÐлָ´µÄʱºòʹÓá£ÔÚPostgreSQL 9.0ÒÔºó£¬Í¨¹ý°ÑWALÈÕÖ¾´«ËÍÆäËûµÄpostgreSQL£¬¿ÉÒÔʵʱµÃ½øÐÐÊý¾Ý¿â¸´ÖÆ£¬Õâ¾ÍÊÇËùνµÄ¡®Êý¾Ý¿â¸´ÖÆ¡¯¹¦ÄÜ¡£

1.3 ÆäËûµÄ½ø³Ì

PostgresÖ®Í⻹ÓÐһЩ¸¨ÖúµÄ½ø³Ì¡£ÕâЩ½ø³Ì¶¼ÊÇÓɳ£×¤postgresÆô¶¯µÄ½ø³Ì¡£

(1) PostmasterÖ÷½ø³ÌºÍ·þÎñ½ø³Ì

µ±PGÊý¾Ý¿âÆô¶¯Ê±£¬Ê×ÏÈ»áÆô¶¯PostmasterÖ÷½ø³Ì¡£Õâ¸ö½ø³ÌÊÇPGÊý¾Ý¿âµÄ×Ü¿ØÖƽø³Ì£¬¸ºÔðÆô¶¯ºÍ¹Ø±ÕÊý¾Ý¿âʵÀý¡£Êµ¼ÊÉÏPostmaster½ø³ÌÊÇÒ»¸öÖ¸ÏòpostgresÃüÁîµÄÁ´½Ó£¬ÈçÏ£º

ll/opt/postgresql/bin/postmaster

/opt/postgresql/bin/postmaster-> postgres

µ±Óû§ºÍPGÊý¾Ý¿â½¨Á¢Á¬½Óʱ£¬ÒªÏÈÓëPostmaster½ø³Ì½¨Á¢Á¬½Ó£¬´Ëʱ¿Í»§¶Ë½ø³Ì»á·¢ËÍÉí·ÝÑéÖ¤ÏûÏ¢¸øPostmasterÖ÷½ø³Ì£¬PostmasterÖ÷½ø³Ì¸ù¾ÝÏûÏ¢½øÐÐÉí·ÝÑéÖ¤£¬Ñé֤ͨ¹ýºó£¬PostmasterÖ÷½ø³Ì»áfork³öÒ»¸ö»á»°·þÎñ½ø³ÌΪÕâ¸öÓû§Á¬½Ó·þÎñ¡£¿ÉÒÔͨ¹ýpg_stat_activity±íÀ´²é¿´·þÎñ½ø³ÌµÄpid£¬ÈçÏ£º

test=# select pid,usename,client_addr, client_port frompg_stat_activity;

(2) Writer process

Writer processÔÚÊʵ±µÄʱ¼äµã°Ñ¹²ÏíÄÚ´æÉϵĻº´æÐ´Íù´ÅÅÌ¡£Í¨¹ýÕâ¸ö½ø³Ì£¬¿ÉÒÔ·ÀÖ¹ÔÚ¼ì²éµãµÄʱºò(checkpoint),´óÁ¿µÄÍù´ÅÅÌд¶øµ¼ÖÂÐÔÄܶñ»¯£¬Ê¹µÃ·þÎñÆ÷¿ÉÒÔ±£³Ö±È½ÏÎȶ¨µÄÐÔÄÜ¡£Background writerÆðÀ´ÒÔºó¾ÍÒ»Ö±³£×¤Äڴ棬µ«ÊDz¢·ÇÒ»Ö±ÔÚ¹¤×÷£¬Ëü»áÔÚ¹¤×÷Ò»¶Îʱ¼äºó½øÐÐÐÝÃߣ¬ÐÝÃßµÄʱ¼ä¼ä¸ôͨ¹ýpostgresql.confÀïÃæµÄ²ÎÊýbgwriter_delayÉèÖã¬Ä¬ÈÏÊÇ200΢Ãë¡£

Õâ¸ö½ø³ÌµÄÁíÍâÒ»¸öÖØÒªµÄ¹¦ÄÜÊǶ¨ÆÚÖ´Ðмì²éµã(checkpoint)¡£

¼ì²éµãµÄʱºò£¬»á°Ñ¹²ÏíÄÚ´æÉϵĻº´æÄÚÈÝÍùÊý¾Ý¿âÎļþд£¬Ê¹µÃÄÚ´æºÍÎļþµÄ״̬һÖ¡£Í¨¹ýÕâÑù£¬¿ÉÒÔÔÚϵͳ±ÀÀ£µÄʱºò¿ÉÒÔËõ¶Ì´ÓWAL»Ö¸´µÄʱ¼ä£¬ÁíÍâÒ²¿ÉÒÔ·ÀÖ¹WALÎÞÏÞµÄÔö³¤¡£ ¿ÉÒÔͨ¹ýpostgresql.confµÄcheckpoint_segments¡¢checkpoint_timeoutÖ¸¶¨Ö´Ðмì²éµãµÄʱ¼ä¼ä¸ô¡£

Writer½ø³ÌÊǰѹ²ÏíÄÚ´æÖеÄÔàҳдµ½´ÅÅÌÉϵĽø³Ì¡£ËüµÄ×÷ÓÃÓÐÁ½¸ö£ºÒ»ÊǶ¨ÆÚ°ÑÔàÊý¾Ý´ÓÄڴ滺³åÇøË¢³öµ½´ÅÅÌÖУ¬¼õÉÙ²éѯʱµÄ×èÈû£»¶þÊÇPGÔÚ¶¨ÆÚ×÷¼ì²éµãʱÐèÒª°ÑËùÓÐÔàҳд³öµ½´ÅÅÌ£¬Í¨¹ýBgWriterÔ¤ÏÈд³öһЩÔàÒ³£¬¿ÉÒÔ¼õÉÙÉèÖüì²éµã£¨CheckPoint£¬Êý¾Ý¿â»Ö¸´¼¼ÊõµÄÒ»ÖÖ£©Ê±Òª½øÐеÄIO²Ù×÷£¬Ê¹ÏµÍ³µÄIO¸ºÔØÇ÷ÏòƽÎÈ¡£BgWriterÊÇPostgreSQL8.0ÒÔºóмӵÄÌØÐÔ£¬ËüµÄ»úÖÆ¿ÉÒÔͨ¹ýpostgresql.confÎļþÖÐÒÔ"bgwriter_"¿ªÍ·ÅäÖòÎÊýÀ´¿ØÖÆ£º

bgwriter_delay:

backgroud writer½ø³ÌÁ¬ÐøÁ½´ÎflushÊý¾ÝÖ®¼äµÄʱ¼äµÄ¼ä¸ô¡£Ä¬ÈÏÖµÊÇ200£¬µ¥Î»ÊǺÁÃë¡£

bgwriter_lru_maxpages£º

backgroud writer½ø³Ìÿ´ÎдµÄ×î¶àÊý¾ÝÁ¿£¬Ä¬ÈÏÖµÊÇ100£¬µ¥Î»buffers¡£Èç¹ûÔàÊý¾ÝÁ¿Ð¡ÓÚ¸ÃÊýֵʱ£¬Ð´²Ù×÷È«²¿ÓÉbackgroud writer½ø³ÌÍê³É£»·´Ö®£¬´óÓÚ¸Ãֵʱ£¬´óÓڵIJ¿·Ö½«ÓÐserver process½ø³ÌÍê³É¡£ÉèÖøÃֵΪ0ʱ±íʾ½ûÓÃbackgroud writerд½ø³Ì£¬ÍêÈ«ÓÐserver processÀ´Íê³É£»ÅäÖÃΪ-1ʱ±íʾËùÓÐÔàÊý¾Ý¶¼ÓÉbackgroud writerÀ´Íê³É¡£(ÕâÀï²»°üÀ¨checkpoint²Ù×÷)

bgwriter_lru_multiplier£º

Õâ¸ö²ÎÊý±íʾÿ´ÎÍù´ÅÅÌдÊý¾Ý¿éµÄÊýÁ¿£¬µ±È»¸ÃÖµ±ØÐëСÓÚbgwriter_lru_maxpages¡£ÉèÖÃ̫СʱÐèҪдÈëµÄÔàÊý¾ÝÁ¿´óÓÚÿ´ÎдÈëµÄÊý¾ÝÁ¿£¬ÕâÑùÊ£ÓàÐèҪдÈë´ÅÅ̵Ť×÷ÐèÒªserver process½ø³ÌÀ´Íê³É£¬½«»á½µµÍÐÔÄÜ£»ÖµÅäÖÃÌ«´ó˵Ã÷дÈëµÄÔàÊý¾ÝÁ¿¶àÓÚµ±Ê±ËùÐèbufferµÄÊýÁ¿£¬·½±ãÁ˺óÃæÔÙ´ÎÉêÇëbuffer¹¤×÷£¬Í¬Ê±¿ÉÄܳöÏÖIOµÄÀË·Ñ¡£¸Ã²ÎÊýµÄĬÈÏÖµÊÇ2.0¡£

bgwriterµÄ×î´óÊý¾ÝÁ¿¼ÆË㷽ʽ£º

1000/bgwriter_delay * bgwriter_lru_maxpages*8K=×î´óÊý¾ÝÁ¿

bgwriter_flush_after£º

Êý¾ÝÒ³´óС´ïµ½bgwriter_flush_afterʱ´¥·¢BgWriter£¬Ä¬ÈÏÊÇ512KB¡£

(3) WAL writer process£¨Ô¤Ð´Ê½ÈÕ־д£©

WAL writer process°Ñ¹²ÏíÄÚ´æÉϵÄWAL»º´æÔÚÊʵ±µÄʱ¼äµãÍù´ÅÅÌд£¬Í¨¹ýÕâÑù£¬¿ÉÒÔ¼õÇáºó¶Ë½ø³ÌÔÚд×Ô¼ºµÄWAL»º´æÊ±µÄѹÁ¦£¬Ìá¸ßÐÔÄÜ¡£ÁíÍ⣬·Çͬ²½Ìá½»ÉèΪtrueµÄʱºò£¬¿ÉÒÔ±£Ö¤ÔÚÒ»¶¨µÄʱ¼ä¼ä¸ôÄÚ£¬°ÑWAL»º´æÉϵÄÄÚÈÝдÈëWALÈÕÖ¾Îļþ¡£

ԤдʽÈÕÖ¾WAL£¨Write Ahead Log£¬Ò²³ÆÎªXlog£©µÄÖÐÐÄ˼ÏëÊǶÔÊý¾ÝÎļþµÄÐ޸ıØÐëÊÇÖ»ÄÜ·¢ÉúÔÚÕâЩÐÞ¸ÄÒѾ­¼Ç¼µ½ÈÕÖ¾Ö®ºó£¬Ò²¾ÍÊÇÏÈдÈÕÖ¾ºóдÊý¾Ý£¨ÈÕÖ¾ÏÈÐУ©¡£Ê¹ÓÃÕâÖÖ»úÖÆ¿ÉÒÔ±ÜÃâÊý¾ÝƵ·±µÄдÈë´ÅÅÌ£¬¿ÉÒÔ¼õÉÙ´ÅÅÌI/O¡£Êý¾Ý¿âÔÚå´»úÖØÆôºó¿ÉÒÔÔËÓÃÕâЩWALÈÕÖ¾À´»Ö¸´Êý¾Ý¿â¡£postgresql.confÎļþÖÐÓëWalWriter½ø³ÌÏà¹ØµÄ²ÎÊýÈçÏ£º

wal_level£º¿ØÖÆwal´æ´¢µÄ¼¶±ð¡£wal_level¾ö¶¨ÓжàÉÙÐÅÏ¢±»Ð´Èëµ½WALÖС£ ĬÈÏÖµÊÇ×îСµÄ£¨minimal£©£¬ÆäÖÐֻдÈë´Ó±ÀÀ£»òÁ¢¼´¹Ø»úÖлָ´µÄËùÐèÐÅÏ¢¡£replica Ôö¼Ó wal ¹éµµÐÅÏ¢ ͬʱ°üÀ¨ Ö»¶Á·þÎñÆ÷ÐèÒªµÄÐÅÏ¢¡££¨9.6 ÖÐÐÂÔö£¬½«Ö®Ç°°æ±¾µÄ archive ºÍ hot_standby ºÏ²¢£©

logical Ö÷ÒªÓÃÓÚlogical decoding ³¡¾°

fsync£º¸Ã²ÎÊýÖ±½Ó¿ØÖÆÈÕÖ¾ÊÇ·ñÏÈдÈë´ÅÅÌ¡£Ä¬ÈÏÖµÊÇON£¨ÏÈдÈ룩£¬±íʾ¸üÐÂÊý¾ÝдÈë´ÅÅÌʱϵͳ±ØÐëµÈ´ýWALµÄдÈëÍê³É¡£¿ÉÒÔÅäÖøòÎÊýΪOFF£¬±íʾ¸üÐÂÊý¾ÝдÈë´ÅÅÌÍêÈ«²»ÓõȴýWALµÄдÈëÍê³É¡£

synchronous_commit£º²ÎÊýÅäÖÃÊÇ·ñµÈ´ýWALÍê³Éºó²Å·µ»Ø¸øÓû§ÊÂÎñµÄ״̬ÐÅÏ¢¡£Ä¬ÈÏÖµÊÇON£¬±íÃ÷±ØÐëµÈ´ýWALÍê³Éºó²Å·µ»ØÊÂÎñ״̬ÐÅÏ¢£»ÅäÖóÉOFFÄܹ»¸ü¿ìµØ·´À¡»ØÊÂÎñ״̬¡£

wal_sync_method£ºWALдÈë´ÅÅ̵ĿØÖÆ·½Ê½£¬Ä¬ÈÏÖµÊÇfsync£¬¿ÉÑ¡ÓÃÖµ°üÀ¨open_datasync¡¢fdatasync¡¢fsync_writethrough¡¢fsync¡¢open_sync¡£open_datasyncºÍopen_sync·Ö±ð±íʾÔÚ´ò¿ªWALÎļþʱʹÓÃO_DSYNCºÍO_SYNC±êÖ¾£»fdatasyncºÍfsync·Ö±ð±íʾÔÚÿ´ÎÌύʱµ÷ÓÃfdatasyncºÍfsyncº¯Êý½øÐÐÊý¾ÝдÈ룬Á½¸öº¯Êý¶¼ÊǰѲÙ×÷ϵͳµÄ´ÅÅÌ»º´æÐ´»Ø´ÅÅÌ£¬µ«Ç°ÕßֻдÈëÎļþµÄÊý¾Ý²¿·Ö£¬¶øºóÕß»¹»áͬ²½¸üÐÂÎļþµÄÊôÐÔ£»fsync_writethrough±íʾÔÚÿ´ÎÌá½»²¢Ð´»Ø´ÅÅ̻ᱣ֤²Ù×÷ϵͳ´ÅÅÌ»º´æºÍÄÚ´æÖеÄÄÚÈÝÒ»Ö¡£

full_page_writes£º±íÃ÷ÊÇ·ñ½«Õû¸öpageдÈëWAL¡£

wal_buffers£ºÓÃÓÚ´æ·ÅWALÊý¾ÝµÄÄÚ´æ¿Õ¼ä´óС£¬ÏµÍ³Ä¬ÈÏÖµÊÇ64K£¬¸Ã²ÎÊý»¹ÊÜwal_writer_delay¡¢commit_delayÁ½¸ö²ÎÊýµÄÓ°Ïì¡£

wal_writer_delay£ºWalWriter½ø³ÌµÄд¼ä¸ôʱ¼ä£¬Ä¬ÈÏÖµÊÇ200ºÁÃ룬Èç¹ûʱ¼ä¹ý³¤¿ÉÄÜÔì³ÉWAL»º³åÇøµÄÄÚ´æ²»×㣻ʱ¼ä¹ý¶Ì½«»áÒýÆðWALµÄ²»¶ÏдÈ룬Ôö¼Ó´ÅÅÌI/O¸ºµ£¡£

wal_writer_flush_after£º

commit_delay£º±íʾһ¸öÒѾ­Ìá½»µÄÊý¾ÝÔÚWAL»º³åÇøÖдæ·ÅµÄʱ¼ä£¬Ä¬ÈÏÖµÊÇ0ºÁÃ룬±íʾ²»ÓÃÑÓ³Ù£»ÉèÖÃΪ·Ç0ֵʱÊÂÎñÖ´ÐÐcommitºó²»»áÁ¢¼´Ð´ÈëWALÖУ¬¶øÈÔ´æ·ÅÔÚWAL»º³åÇøÖУ¬µÈ´ýWalWriter½ø³ÌÖÜÆÚÐÔµØÐ´Èë´ÅÅÌ¡£

commit_siblings£º±íʾµ±Ò»¸öÊÂÎñ·¢³öÌá½»ÇëÇóʱ£¬Èç¹ûÊý¾Ý¿âÖÐÕýÔÚÖ´ÐеÄÊÂÎñÊýÁ¿´óÓÚcommit_siblingsÖµ£¬Ôò¸ÃÊÂÎñ½«µÈ´ýÒ»¶Îʱ¼ä£¨commit_delayµÄÖµ£©£»·ñÔò¸ÃÊÂÎñÔòÖ±½ÓдÈëWAL¡£ÏµÍ³Ä¬ÈÏÖµÊÇ5£¬¸Ã²ÎÊý»¹¾ö¶¨ÁËcommit_delayµÄÓÐЧÐÔ¡£

wal_writer_flush_after£ºµ±ÔàÊý¾Ý³¬¹ýãÐֵʱ£¬»á±»Ë¢³öµ½´ÅÅÌ¡£

(4) Archive process

Archive process°ÑWALÈÕÖ¾×ªÒÆµ½¹éµµÈÕÖ¾Àï¡£Èç¹û±£´æÁË»ù´¡±¸·ÝÒÔ¼°¹éµµÈÕÖ¾£¬¼´Ê¹ÊµÔÚ´ÅÅÌÍêÈ«Ë𻵵Äʱºò£¬Ò²¿ÉÒԻظ´Êý¾Ý¿âµ½×îеÄ״̬¡£

ÀàËÆÓÚOracleÊý¾Ý¿âµÄARCH¹éµµ½ø³Ì£¬²»Í¬µÄÊÇARCHÊǰÉredo log½øÐй鵵£¬PgArchÊǰÑWALÈÕÖ¾½øÐй鵵¡£ÔÙÉîÈëµã£¬WALÈÕÖ¾»á±»Ñ­»·Ê¹Óã¬Ò²¾ÍÊÇ˵£¬¹ýÈ¥µÄWALÈÕÖ¾»á±»Ð²úÉúµÄÈÕÖ¾¸²¸Ç£¬PgArch½ø³Ì¾ÍÊÇΪÁËÔÚ¸²¸Çǰ°ÑWALÈÕÖ¾±¸·Ý³öÀ´¡£¹éµµÈÕÖ¾µÄ×÷ÓÃÊÇΪÁËÊý¾Ý¿âÄܹ»Ê¹ÓÃÈ«Á¿±¸·ÝºÍ±¸·Ýºó²úÉúµÄ¹éµµÈÕÖ¾£¬´Ó¶øÈÃÊý¾Ý¿â»Øµ½¹ýÈ¥µÄÈÎһʱ¼äµã¡£PG´Ó8.X°æ±¾¿ªÊ¼ÌṩµÄPITR£¨Point-In-Time-Recovery£©¼¼Êõ£¬¾ÍÊÇÔËÓõĹ鵵ÈÕÖ¾¡£

PgArch½ø³Ìͨ¹ýpostgresql.confÎļþÖеÄÈçϲÎÊý½øÐÐ

archive_mode£º

±íʾÊÇ·ñ½øÐй鵵²Ù×÷£¬¿ÉÑ¡ÔñΪoff£¨¹Ø±Õ£©¡¢on£¨Æô¶¯£©ºÍalways£¨×ÜÊÇ¿ªÆô£©£¬Ä¬ÈÏֵΪoff£¨¹Ø±Õ£©¡£

archive_command£º

ÓɹÜÀíÔ±ÉèÖõÄÓÃÓڹ鵵WALÈÕÖ¾µÄÃüÁî¡£ÔÚÓÃÓڹ鵵µÄÃüÁîÖУ¬Ô¤¶¨Òå±äÁ¿¡°%p¡±ÓÃÀ´Ö¸´úÐèÒª¹éµµµÄWALȫ·¾¶ÎļþÃû£¬¡°%f¡±±íʾ²»´øÂ·¾¶µÄÎļþÃû£¨ÕâÀïµÄ·¾¶¶¼ÊÇÏà¶ÔÓÚµ±Ç°¹¤×÷Ŀ¼µÄ·¾¶£©¡£Ã¿¸öWAL¶ÎÎļþ¹éµµÊ±½«µ÷ÓÃarchive_commandËùÖ¸¶¨µÄÃüÁî¡£µ±¹éµµÃüÁî·µ»Ø0ʱ£¬PostgreSQL¾Í»áÈÏΪÎļþ±»³É¹¦¹éµµ£¬È»ºó¾Í»áɾ³ý»òÑ­»·Ê¹ÓøÃWAL¶ÎÎļþ¡£·ñÔò£¬Èç¹û·µ»ØÒ»¸ö·ÇÁãÖµ£¬PostgreSQL»áÈÏΪÎļþûÓб»³É¹¦¹éµµ£¬±ã»áÖÜÆÚÐÔµØÖØÊÔÖ±µ½³É¹¦¡£

archive_timeout£º

±íʾ¹éµµÖÜÆÚ£¬ÔÚ³¬¹ý¸Ã²ÎÊýÉ趨µÄʱ¼äÊ±Ç¿ÖÆÇл»WAL¶Î£¬Ä¬ÈÏֵΪ0£¨±íʾ½ûÓøù¦ÄÜ£©¡£

(5) stats collector process

ͳ¼ÆÐÅÏ¢µÄÊÕ¼¯½ø³Ì¡£ÊÕ¼¯ºÃͳ¼Æ±íµÄ·ÃÎÊ´ÎÊý£¬´ÅÅ̵ķÃÎÊ´ÎÊýµÈÐÅÏ¢¡£ÊÕ¼¯µ½µÄÐÅÏ¢³ýÁËÄܱ»autovaccumÀûÓ㬻¹¿ÉÒÔ¸øÆäËûÊý¾Ý¿â¹ÜÀíÔ±×÷ΪÊý¾Ý¿â¹ÜÀíµÄ²Î¿¼ÐÅÏ¢¡£

PgStat½ø³ÌÊÇPostgreSQLÊý¾Ý¿âµÄͳ¼ÆÐÅÏ¢ÊÕ¼¯Æ÷£¬ÓÃÀ´ÊÕ¼¯Êý¾Ý¿âÔËÐÐÆÚ¼äµÄͳ¼ÆÐÅÏ¢£¬Èç±íµÄÔöɾ¸Ä´ÎÊý£¬Êý¾Ý¿éµÄ¸öÊý£¬Ë÷ÒýµÄ±ä»¯µÈµÈ¡£ÊÕ¼¯Í³¼ÆÐÅÏ¢Ö÷ÒªÊÇΪÁËÈÃÓÅ»¯Æ÷×ö³öÕýÈ·µÄÅжϣ¬Ñ¡Ôñ×î¼ÑµÄÖ´Ðмƻ®¡£postgresql.confÎļþÖÐÓëPgStat½ø³ÌÏà¹ØµÄ²ÎÊý£¬ÈçÏ£º

track_activities£º±íʾÊÇ·ñ¶Ô»á»°Öе±Ç°Ö´ÐеÄÃüÁÆôͳ¼ÆÐÅÏ¢ÊÕ¼¯¹¦ÄÜ£¬¸Ã²ÎÊýÖ»¶Ô³¬¼¶Óû§ºÍ»á»°ËùÓÐÕ߿ɼû£¬Ä¬ÈÏֵΪon£¨¿ªÆô£©¡£

track_counts£º±íʾÊÇ·ñ¶ÔÊý¾Ý¿â»î¶¯¿ªÆôͳ¼ÆÐÅÏ¢ÊÕ¼¯¹¦ÄÜ£¬ÓÉÓÚÔÚAutoVacuum×Ô¶¯ÇåÀí½ø³ÌÖÐÑ¡ÔñÇåÀíµÄÊý¾Ý¿âʱ£¬ÐèÒªÊý¾Ý¿âµÄͳ¼ÆÐÅÏ¢£¬Òò´Ë¸Ã²ÎÊýĬÈÏֵΪon¡£

track_io_timing£º¶¨Ê±µ÷ÓÃÊý¾Ý¿éI/O£¬Ä¬ÈÏÊÇoff£¬ÒòΪÉèÖÃΪ¿ªÆô״̬»á·´¸´µÄµ÷ÓÃÊý¾Ý¿âʱ¼ä£¬Õâ¸øÊý¾Ý¿âÔö¼ÓÁ˺ܶ࿪Ïú¡£Ö»Óг¬¼¶Óû§¿ÉÒÔÉèÖÃ

track_functions£º±íʾÊÇ·ñ¿ªÆôº¯ÊýµÄµ÷ÓôÎÊýºÍµ÷ÓúÄʱͳ¼Æ¡£

track_activity_query_size£ºÉèÖÃÓÃÓÚ¸ú×Ùÿһ¸ö»î¶¯»á»°µÄµ±Ç°Ö´ÐÐÃüÁîµÄ×Ö½ÚÊý£¬Ä¬ÈÏֵΪ1024£¬Ö»ÄÜÔÚÊý¾Ý¿âÆô¶¯ºóÉèÖá£

stats_temp_directory£ºÍ³¼ÆÐÅÏ¢µÄÁÙʱ´æ´¢Â·¾¶¡£Â·¾¶¿ÉÒÔÊÇÏà¶Ô·¾¶»òÕß¾ø¶Ô·¾¶£¬²ÎÊýĬÈÏΪpg_stat_tmp£¬ÉèÖô˲ÎÊý¿ÉÒÔ¼õÉÙÊý¾Ý¿âµÄÎïÀíI/O£¬Ìá¸ßÐÔÄÜ¡£´Ë²ÎÊýÖ»ÄÜÔÚpostgresql.confÎļþ»òÕß·þÎñÆ÷ÃüÁîÐÐÖÐÐ޸ġ£

(6) Logger process

°ÑpostgresqlµÄ»î¶¯×´Ì¬Ð´µ½ÈÕÖ¾ÐÅÏ¢Îļþ£¨²¢·ÇÊÂÎñÈÕÖ¾£©£¬ÔÚÖ¸¶¨µÄʱ¼ä¼ä¸ôÀïÃæ£¬¶ÔÈÕÖ¾Îļþ½øÐÐrotate.

(7) Autovacuum£¨×Ô¶¯ÇåÀí£©Æô¶¯½ø³Ì

autovacuum launcher processÊÇÒÀÀµÓÚpostmaster¼ä½ÓÆô¶¯vacuum½ø³Ì¡£¶øÆä×ÔÉíÊDz»Ö±½ÓÆô¶¯×Ô¶¯vacuum½ø³ÌµÄ¡£Í¨¹ýÕâÑù¿ÉÒÔÌá¸ßϵͳµÄ¿É¿¿ÐÔ¡£

ÔÚPGÊý¾Ý¿âÖУ¬¶ÔÊý¾Ý½øÐÐUPDATE»òÕßDELETE²Ù×÷ºó£¬Êý¾Ý¿â²»»áÁ¢¼´É¾³ý¾É°æ±¾µÄÊý¾Ý£¬¶øÊDZê¼ÇΪɾ³ý״̬¡£ÕâÊÇÒòΪPGÊý¾Ý¿â¾ßÓÐ¶à°æ±¾µÄ»úÖÆ£¬Èç¹ûÕâЩ¾É°æ±¾µÄÊý¾ÝÕýÔÚ±»ÁíÍâµÄÊÂÎñ´ò¿ª£¬ÄÇôÔÝʱ±£ÁôËûÃÇÊǺÜÓбØÒªµÄ¡£µ±ÊÂÎñÌá½»ºó£¬¾É°æ±¾µÄÊý¾ÝÒѾ­Ã»ÓмÛÖµÁË£¬Êý¾Ý¿âÐèÒªÇåÀíÀ¬»øÊý¾ÝÌÚ³ö¿Õ¼ä£¬¶øÇåÀí¹¤×÷¾ÍÊÇAutoVacuum½ø³Ì½øÐеġ£postgresql.confÎļþÖÐÓëAutoVacuum½ø³ÌÏà¹ØµÄ²ÎÊýÓУº

autovacuum£ºÊÇ·ñÆô¶¯ÏµÍ³×Ô¶¯ÇåÀí¹¦ÄÜ£¬Ä¬ÈÏֵΪon¡£

log_autovacuum_min_duration£ºÕâ¸ö²ÎÊýÓÃÀ´¼Ç¼ autovacuum µÄÖ´ÐÐʱ¼ä£¬µ± autovaccum µÄÖ´ÐÐʱ¼ä³¬¹ý log_autovacuum_min_duration²ÎÊýÉèÖÃʱ£¬ÔòautovacuumÐÅÏ¢¼Ç¼µ½ÈÕÖ¾ÀĬÈÏΪ "-1", ±íʾ²»¼Ç¼¡£

autovacuum_max_workers£ºÉèÖÃϵͳ×Ô¶¯ÇåÀí¹¤×÷½ø³ÌµÄ×î´óÊýÁ¿¡£

autovacuum_naptime£ºÉèÖÃÁ½´Îϵͳ×Ô¶¯ÇåÀí²Ù×÷Ö®¼äµÄ¼ä¸ôʱ¼ä¡£

autovacuum_vacuum_thresholdºÍautovacuum_analyze_threshold£ºÉèÖõ±±íÉϱ»¸üеÄÔª×éÊýµÄãÐÖµ³¬¹ýÕâЩãÐֵʱ·Ö±ðÐèÒªÖ´ÐÐvacuumºÍanalyze¡£

autovacuum_vacuum_scale_factorºÍautovacuum_analyze_scale_factor£ºÉèÖñí´óСµÄËõ·ÅϵÊý¡£

autovacuum_freeze_max_age£ºÉèÖÃÐèÒªÇ¿ÖÆ¶ÔÊý¾Ý¿â½øÐÐÇåÀíµÄXIDÉÏÏÞÖµ¡£

autovacuum_vacuum_cost_delay£ºµ±autovacuum½ø³Ì¼´½«Ö´ÐÐʱ£¬¶Ô vacuum Ö´ÐÐ cost ½øÐÐÆÀ¹À£¬Èç¹û³¬¹ý autovacuum_vacuum_cost_limitÉèÖÃֵʱ£¬ÔòÑÓ³Ù£¬Õâ¸öÑÓ³ÙµÄʱ¼ä¼´Îª autovacuum_vacuum_cost_delay¡£Èç¹ûֵΪ -1, ±íʾʹÓà vacuum_cost_delay Öµ£¬Ä¬ÈÏֵΪ 20 ms¡£

autovacuum_vacuum_cost_limit£ºÕâ¸öֵΪautovacuum ½ø³ÌµÄÆÀ¹À·§Öµ, ĬÈÏΪ -1, ±íʾʹÓà "vacuum_cost_limit " Öµ£¬Èç¹ûÔÚÖ´ÐÐautovacuum ½ø³ÌÆÚ¼äÆÀ¹ÀµÄcost ³¬¹ýautovacuum_vacuum_cost_limit, Ôò autovacuum ½ø³ÌÔò»áÐÝÃß¡£

(8) ×Ô¶¯vacuum½ø³Ì

autovacuum worker process½ø³Ìʵ¼ÊÖ´ÐÐvacuumµÄÈÎÎñ¡£ÓÐʱºò»áͬʱÆô¶¯¶à¸övacuum½ø³Ì¡£

(9) wal sender / wal receiver

wal sender ½ø³ÌºÍwal receiver½ø³ÌÊÇʵÏÖpostgresql¸´ÖÆ(streaming replication)µÄ½ø³Ì¡£Wal sender½ø³Ìͨ¹ýÍøÂç´«ËÍWALÈÕÖ¾£¬¶øÆäËûPostgreSQLʵÀýµÄwal receiver½ø³ÌÔò½ÓÊÕÏàÓ¦µÄÈÕÖ¾¡£Wal receiver½ø³ÌµÄËÞÖ÷PostgreSQL£¨Ò²³ÆÎªStandby£©½ÓÊܵ½WALÈÕÖ¾ºó£¬ÔÚ×ÔÉíµÄÊý¾Ý¿âÉÏ»¹Ô­£¬Éú³ÉÒ»¸öºÍ·¢ËͶ˵ÄPostgreSQL(Ò²³ÆÎªMaster)ÍêȫһÑùµÄÊý¾Ý¿â¡£

(10) CheckPoint£¨¼ì²éµã£©½ø³Ì

¼ì²éµãÊÇϵͳÉèÖõÄÊÂÎñÐòÁе㣬ÉèÖüì²éµã±£Ö¤¼ì²éµãǰµÄÈÕÖ¾ÐÅϢˢµ½´ÅÅÌÖС£postgresql.confÎļþÖÐÓëÖ®Ïà¹ØµÄ²ÎÊýÓУº

1.4 ºó¶ËµÄ´¦ÀíÁ÷³Ì

ÏÂÃæ¿´¿´Êý¾Ý¿âÒýÇæpostgres×Ó½ø³ÌµÄ´¦Àí¸ÅÒª¡£ÎªÁ˼òµ¥Æð¼ûÏÂÃæµÄ˵Ã÷ÖУ¬°Ñbackendprocess¼ò³ÆÎªbackend¡£BackendµÄmainº¯ÊýÊÇPostgresMain (tcop/postgres.c)¡£

½ÓÊÕǰ¶Ë·¢Ë͹ýÀ´µÄ²éѯ(SQLÎÄ)

SQLÎÄÊǵ¥´¿µÄÎÄ×Ö£¬µçÄÔÊÇÈÏʶ²»Á˵ģ¬ËùÒÔҪת»»³É±È½ÏÈÝÒ×´¦ÀíµÄÄÚ²¿ÐÎʽ¹¹ÎÄÊ÷parser tree,Õâ¸ö´¦ÀíµÄ³ÆÎª¹¹ÎĽâÎö¡£¹¹ÎĽâÎöµÄÄ£¿é³ÆÎªparser.Õâ¸ö½×¶ÎÖ»Äܹ»Ê¹ÓÃÎÄ×Ö×ÖÃæÉϵÃÀ´µÄÐÅÏ¢£¬ËùÒÔֻҪûÓï·¨´íÎóÖ®ÀàµÄ´íÎ󣬼´Ê¹ÊÇselect²»´æÔڵıíÒ²²»»á±¨´í¡£Õâ¸ö½×¶ÎµÄ¹¹ÎÄÊ÷±»³ÆÎªraw parse tree. ¹¹ÎÄ´¦ÀíµÄÈë¿ÚÔÚraw_parser (parser/parser.c)¡£

¹¹ÎÄÊ÷½âÎöÍêÒԺ󣬻áת»»Îª²éѯÊ÷(Query tree)¡£Õâ¸öʱºò£¬»á·ÃÎÊÊý¾Ý¿â£¬¼ì²é±íÊÇ·ñ´æÔÚ£¬Èç¹û´æÔڵϰ£¬Ôò°Ñ±íÃûת»»ÎªOID¡£Õâ¸ö´¦Àí³ÆÎª·ÖÎö´¦Àí(Analyze), ½øÐзÖÎö´¦ÀíµÄÄ£¿éÊÇanalyzer¡£ ÁíÍ⣬PostgreSQLµÄ´úÂëÀïÃæÌáµ½¹¹ÎÄÊ÷parser treeµÄʱºò£¬¸ü¶àµÄʱºòÊÇÖ¸²éѯÊ÷Query tree¡£·ÖÎö´¦ÀíµÄÄ£¿éµÄÈë¿ÚÔÚparse_analyze (parser/analyze.c)

PostgreSQL»¹Í¨¹ý²éѯÓï¾äµÄÖØÐ´ÊµÏÖÊÓͼ(view)ºÍ¹æÔò(rule), ËùÒÔÐèÒªµÄʱºò£¬ÔÚÕâ¸ö½×¶Î»á¶Ô²éѯÓï¾ä½øÐÐÖØÐ´¡£Õâ¸ö´¦Àí³ÆÎªÖØÐ´(rewrite)£¬ÖØÐ´µÄÈë¿ÚÔÚQueryRewrite (rewrite/rewriteHandler.c)¡£

ͨ¹ý½âÎö²éѯÊ÷£¬¿ÉÒÔʵ¼ÊÉú³É¼Æ»®Ê÷¡£Éú³É²éѯÊ÷µÄ´¦Àí³ÆÎª¡®Ö´Ðмƻ®´¦Àí¡¯£¬×î¹Ø¼üÊÇÒªÉú³É¹À¼ÆÄÜÔÚ×î¶ÌµÄʱ¼äÄÚÍê³ÉµÄ¼Æ»®Ê÷(plan tree)¡£Õâ¸ö²½Öè³ÆÎª¡¯²éѯÓÅ»¯¡¯(²»½Ðquery optimize, ¶øÊÇoptimize), ¶øÍê³ÉÕâ¸ö´¦ÀíµÄÄ£¿é³ÆÎª²éѯÓÅ»¯Æ÷(²»½Ðquery optimizer,¶øÊÇoptimizer, »òÕß³ÆÎªplanner)¡£Ö´Ðмƻ®´¦ÀíµÄÈë¿ÚÔÚstandard_planner (optimizer/plan/planner.c)¡£

°´ÕÕÖ´Ðмƻ®ÀïÃæµÄ²½Öè¿ÉÒÔÍê³É²éѯҪ´ïµ½µÄÄ¿µÄ¡£ÔËÐÐÖ´Ðмƻ®Ê÷ÀïÃæ²½ÖèµÄ´¦Àí³ÆÎªÖ´Ðд¦Àí¡®execute¡¯, Íê³ÉÕâ¸ö´¦ÀíµÄÄ£¿é³ÆÎªÖ´ÐÐÆ÷¡®Executor¡¯, Ö´ÐÐÆ÷µÄÈë¿ÚµØÖ·Îª£¬ExecutorRun (executor/execMain.c)

Ö´Ðнá¹û·µ»Ø¸øÇ°¶Ë¡£

·µ»Øµ½²½ÖèÒ»ÖØ¸´Ö´ÐС£

 

 

   
2655 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

»ùÓÚEAµÄÊý¾Ý¿â½¨Ä£
Êý¾ÝÁ÷½¨Ä££¨EAÖ¸ÄÏ£©
¡°Êý¾Ýºþ¡±£º¸ÅÄî¡¢ÌØÕ÷¡¢¼Ü¹¹Óë°¸Àý
ÔÚÏßÉ̳ÇÊý¾Ý¿âϵͳÉè¼Æ ˼·+Ч¹û
 
Ïà¹ØÎĵµ

GreenplumÊý¾Ý¿â»ù´¡Åàѵ
MySQL5.1ÐÔÄÜÓÅ»¯·½°¸
ijµçÉÌÊý¾ÝÖÐ̨¼Ü¹¹Êµ¼ù
MySQL¸ßÀ©Õ¹¼Ü¹¹Éè¼Æ
Ïà¹Ø¿Î³Ì

Êý¾ÝÖÎÀí¡¢Êý¾Ý¼Ü¹¹¼°Êý¾Ý±ê×¼
MongoDBʵս¿Î³Ì
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
PostgreSQLÊý¾Ý¿âʵսÅàѵ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]
 
×îÐÂÎÄÕÂ
InfluxDB¸ÅÄîºÍ»ù±¾²Ù×÷
InfluxDB TSM´æ´¢ÒýÇæÖ®Êý¾ÝдÈë
Éî¶ÈÂþ̸Êý¾Ýϵͳ¼Ü¹¹¡ª¡ªLambda architecture
Lambda¼Ü¹¹Êµ¼ù
InfluxDB TSM´æ´¢ÒýÇæÖ®Êý¾Ý¶ÁÈ¡
×îпγÌ
OracleÊý¾Ý¿âÐÔÄÜÓÅ»¯¡¢¼Ü¹¹Éè¼ÆºÍÔËÐÐά»¤
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
NoSQLÊý¾Ý¿â£¨Ô­Àí¡¢Ó¦Óá¢×î¼Ñʵ¼ù£©
ÆóÒµ¼¶Hadoop´óÊý¾Ý´¦Àí×î¼Ñʵ¼ù
OracleÊý¾Ý¿âÐÔÄÜÓÅ»¯×î¼Ñʵ¼ù
³É¹¦°¸Àý
ij½ðÈÚ¹«Ë¾ Mysql¼¯ÈºÓëÐÔÄÜÓÅ»¯
±±¾© ²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
ÖªÃûijÐÅϢͨÐŹ«Ë¾ NoSQL»º´æÊý¾Ý¿â¼¼Êõ
±±¾© oracleÊý¾Ý¿âSQLÓÅ»¯
ÖйúÒÆ¶¯ IaaSÔÆÆ½Ì¨-Ö÷Á÷Êý¾Ý¿â¼°´æ´¢¼¼Êõ