»º´æ
»º´æ¶ÔÓÚÊý¾Ý¿âµÄϵͳÐÔÄÜÓÐ×ÅÖØÒªÒâÒå¡£
±¾ÎÄËäÒÔPostgresΪÀý£¬µ«Ò²¿É¶ÔÓ¦µ½ÆäËûÊý¾Ý¿âϵͳ¡£
Ò»¡¢¸ßËÙ»º³å´æ´¢Æ÷ÊÇʲôÒÔ¼°ÎªÊ²Ã´ÐèÒªËü
²»Í¬µÄ¼ÆËã»ú²¿¼þÓÐ×Ų»Í¬µÄÔËÐÐËÙ¶È¡£ÈËÀàÔÚÀí½âÊý×ֵĹæÄ£ÉÏÃæ£¬Óë¼ÆËã»úÓÐ׿«´óµÄ²î¾à¡£
¶Ô´Ë£¬Í¨¹ýÏÂÃæÕâÕűí¸ñ£¨½ØÈ¡×Ô¡¶ÎÄ×Ö¼äµÄÎÞÏ޿ռ䡷The Infinite Space Between Words£©£¬»áÓÐÒ»¸ö¸üÖ±¹ÛµÄÈÏʶ¡£
±íÖÐÊý¾ÝÊÇ´ÓÈËÀà½Ç¶È¼ÓÒÔ¹ÀËã¡£

ÔÚÊý¾Ý¿âϵͳÖУ¬¼¼ÊõÈËÔ±×î¹Ø×¢µÄÍùÍùÊÇÓ²Å̵ÄI/OÎÊÌâ¡£
ÓëеĹÌ̬ӲÅÌ£¨SSD£©Ïà±È£¬´ÅÅÌÔÚËæ»úI/O·½ÃæµÄÐÔÄܽϲ
´ó¶àÊýOLTPµÄ¹¤×÷¸ºÔض¼ÊôÓÚËæ»úI/O£¬Òò´Ë»ñȡӲÅÌÖÐÐÅϢʱ£¬ËٶȾͻἫÆä»ºÂý¡£
ΪÁ˿˷þÕâÒ»ÁÓÊÆ£¬PostgresÀûÓÃËæ»ú´æÈ¡´æ´¢Æ÷£¨RAM£©À´»º´æÊý¾Ý£¬¶øÕ⼫´óµØÌá¸ßÁËÐÔÄÜ¡£¼´Ê¹¶Ô±ÈSSD£¬RAMËÙ¶ÈÉÏÒ²Òª¿ìÉϺܶࡣ
ÉÏÃæÊÇ»º´æ´¦ÀíÆ÷£¨cache£©µÄÆÕÊÊÔÔò£¬¼¸ºõÊÊÓÃÓÚËùÓеÄÊý¾Ý¿âϵͳ¡£
¶þ¡¢Àí½âÊõÓï
ÔÚ½øÒ»²½ÍØÕ¹ÖªÊ¶Ö®Ç°£¬ÏÈÁ˽âÒ»Ð©ÌØ¶¨ÊõÓï¡£
Ê×ÏÈ£¬¿É½èÖúһƪÓÅÐãµÄÎÄÕÂÕ¹¿ªÔĶÁ¡£
ÿµ±Äã¶ÁÍêһƪµÄʱºò£¬¾Í½Ó×Å»»Ò»ÆªÄѶȸüÉîÒ»µãµÄÎÄÕ¼ÌÐø¡£Õâ¸ö¹ý³ÌÖУ¬ÒªÌرðÁôÒâÓйضÑÄÚ´æÔª×éµÄ²¿·Ö¡£
ÁíÍ⣬»¹¿ÉÒÔ¿´Ïà¹ØµÄ¹Ù·½Îĵµ£¬µ«ÕâÀàÏà¶ÔÄÑÀí½âЩ¡£
²»¹ÜÄÚÈÝÊÇʲô£¬Postgres¶¼ÓÐÒ»¸ö³éÏ󻯴洢£¬¼´¼ÆËã»ú±à³ÌÓïÑԽű¾£¨page£¬8kb£©¡£
Ï·ùͼ¸ø³öÁËÒ»¸ö¼òÒª½éÉÜ¡£

ÕâÒ»³éÏó¸ÅÄîÊÇÏÂÎÄÀï½«ÒªÖØµã½â¾öµÄÎÊÌâ¡£
Èý¡¢»º´æµÄ¶ÔÏó
Postgre»º´æµÄÄÚÈÝÈçÏ£º
±í¸ñÊý¾Ý
Ö¸±í¸ñµÄ¾ßÌåÄÚÈÝ¡£
Ë÷Òý
Ë÷ÒýÒà´æ´¢ÖÁ8k´óСµÄ¿é£¬¼´ºÍ±í¸ñÊý¾Ý´æ´¢Î»ÖÃÒ»Ö£¬½Ó×Å¿´ÏÂÃæµÄ´æ´¢ÇøÓò¡£
²éѯִÐмƻ®
¿´Ò»Ìõ²éѯִÐмƻ®Ê±£¬ÓÐÒ»¸ö¼Æ»®½×¶Î£¬Ö÷ÒªÓÃÀ´ÌôÑ¡×îÊÊÓÃÓÚ²éѯµÄ¼Æ»®¡£Postgres»¹¿ÉÒÔ´¢´æÕâ¸ö¼Æ»®£¬¶øÕâ»ùÓÚµÄÊÇÿһ´Î»á»°£¬¶øÒ»µ©»á»°½áÊø£¬´æ´¢µÄ¼Æ»®¾Í»á±»É¾³ý¡£Õâµ¼ÖÂÆäÓÅ»¯¡¢·ÖÎö±äµÃ¼¬ÊÖÁËÆðÀ´£¬µ«´Ó×ÜÌåÉÏÀ´¿´ÕâÒ»µã²»ÊÇÄÇÃ´ÖØÒª£¬³ý·Ç´¦ÓÚÖ´ÐÐÖеIJéѯ·Ç³£¸´ÔÓ£¬²¢ÇÒ/°üº¬´óÁ¿Öظ´²éѯ¡£
Îĵµ´Óϸ½Ú×ÅÊÖ¶ÔÕâЩÄÚÈÝ×ö³öÁ˺ܺõĽâÊÍ¡£ÎÒÃÇ¿ÉÒÔͨ¹ý²éѯpg_prepared_statementsÀ´ÕÒ³ö»º´æÁËÄÄЩ¶«Î÷¡£ÕâÀïҪעÒâµÄÊÇ£¬ÔÚ½áÊøµÄ»á»°¼äÎÞ·¨»ñÈ¡»º´æ£¬ÓÐÇÒ½ö¶ÔÕýÔÚ½øÐеĻỰ¿É¼û¡£
ÏÂÎĽ«½øÒ»²½Ñо¿±í¸ñÊý¾ÝºÍË÷Òý»º´æµÄϸ½ÚÎÊÌâ¡£
ËÄ¡¢ÄÚ´æÇø
Postgres¾ßÓжà¸öÅäÖòÎÊý£¬ÔòÐèÒªÀí½â²ÎÊýÖ¸´úµÄº¬Òå¡£
¶ÔÓÚ»º´æÀ´Ëµ£¬×îÖØÒªµÄÅäÖõ±Êôshared_buffers¡£ÕâÔÚPostgresÔ´´úÂëÄÚ²¿£¬ÓÖ³ÆÎªNBuffers£¬ÓÃÒÔ´æ´¢¹²ÏíÊý¾ÝÖÁÄÚ´æ¡£
Shared_buffersÒ²½ö½öÊÇÓÉ8kb´óСµÄ¿éËùÐγɵÄÊý×顣ÿ¸ö½Å±¾ÄÚ²¿¶¼°üº¬ÔªÊý¾Ý£¬ÈçǰËùÑÔ£¬ÔÚ´Ë´¦Æðµ½Çø·ÖµÄ×÷Óá£ProgresÔڲ鿴ӲÅÌÊý¾Ý֮ǰ£¬»áÏȲéÕÒshared_buffersÄڵĽű¾£¬Èô´Ë´¦ÓÐhit²ÎÓ룬ÔòÆä½«ÔÚÕâÒ»»·½Ú·µ»ØÊý¾Ý£¬´Ó¶ø±ÜÃâÓ²Å̵ÄI/OÎÊÌâ¡£
Îå¡¢LRU/ClockÇåÀí»º´æËã·¨
¹ØÓÚ´æ´¢Æ÷ÄÚÊý¾ÝµÄ»º´æºÍÇåÀíµÄ×°Öã¬ÊÜ¿ØÖÆÓÚClockÇåÀí»º´æËã·¨¡£
ÒòÆä±»ÓÃÒÔ´¦ÀíOLTP¹¤×÷¸ºÔØ£¬¹Ê¶ø¼¸ºõËùÓеÄÐÅÏ¢´«Êä¶¼ÊÇÔÚÄÚ´æÏ½øÐеġ£
ÏÂÃæ´Óϸ½Ú´¦Ì¸Ò»Ì¸Ã¿Ò»Ïî²Ù×÷¡£
»º³åÇø·ÖÅä
PostgresÊÇÒ»¸ö»ùÓÚ¹ý³ÌµÄϵͳ£¬»»ÑÔÖ®£¬Ã¿Ò»´ÎÁ¬½Ó×ÔÉí¶¼º¬ÓÐÒ»¸ö±¾µØ²Ù×÷ϵͳ½ø³Ì£¬ÕâÔ´ÓÚPostgresµÄroot½ø³Ì£¨Ô³Æpostmaster£©¡£
ÈôÒ»¸ö½ø³ÌÒªÇóÒ»¸öLRU¸ßËÙ»º³å´æ´¢Æ÷ϵĽű¾£¨Ò»µ©¸Ã½Å±¾¾¹ýÒ»¸ö¾µäµÄSQL²éѯ¶ø»ñµÃ£¬Ôò½ø³Ì½áÊø£©£¬ËüÒªÇóÔÚ»º³åÇø·ÖÅä¡£ÈôblockÒÑ´æÓÚ¸ßËÙ»º³å´æ´¢Æ÷£¬ÔòÆä½«±»Ëø¶¨²¢·µ»Ø¡£¶øÕâ¸öËø¶¨¹ý³ÌÒ²½«ÌáÉýÏÂÃæ½«ÒªÌÖÂÛµ½µÄʹÓüÆÊý¡£¶øÈç¹ûʹÓüÆÊýÏÔʾΪ0£¬Ôò½Å±¾½«±»½â³ýËø¶¨¡£
Ö»Óе±ËùÓлº³åÇø»òslots¶¼°üº¬Ò»¸ö½Å±¾Ö®ºó£¬²Å»á½øÐе½»º´æÇøÇåÀí»·½Ú¡£
»º´æÇøÇåÀí
¼ÆËã»úѧ¿ÆÑ§µÄÒ»¸ö¾µäÎÊÌâ¾ÍÊÇÈ·¶¨ÄÄЩ½Å±¾Ó¦µ±´ÓÄÚ´æÖÐɾ³ý£¬²¢Ð´ÈëÓ²ÅÌ¡£
ÓÉÓÚ¶Ô֮ǰµÄÔËÐÐûÓмǼ£¬¼òµ¥Ò»¸öLRU£¨Least Recently Used£¬×î½ü²»³£Ê¹ÓÃËã·¨£©ÔÚʵ¼ÊÖкÜÄѺܺõع¤×÷¡£
¶øPostgres±£´æÁ˽ű¾Ê¹ÓüÆÊýµÄÔËÐй켣£¬Òò´ËÈç¹ûÒ»¸ö½Å±¾µÄʹÓüÆÊýÊÇ0£¬ÔòÆä½«´ÓÄÚ´æÖб»É¾³ý²¢Ð´ÈëÓ²ÅÌ¡£´ËÍ⣬ÔÚÓöµ½ÔàÒ³µÄÇé¿öÏ£¬Ò²½«±»Ð´ÈëÓ²ÅÌ£¨ÏêÇé¼ûÏÂÎÄ£©¡£
ÔÝÇÒÅ×ϾßÌåϸ½Ú²»¿´µÄ»°£¬»º´æËã·¨±¾Éí¼¸ºõ²»ÐèÒªµ÷Õû£¬¶øÇÒÆäÖÇÄ̶ܳÈÔ¶³¬ÓÚÈ˵ÄÏëÏó¡£
Áù¡¢ÔàÒ³ºÍ¸ßËÙ»º³å´æ´¢Æ÷ʧЧ
Ò»Ö±µ½ÕâÀïÎÒÃǶ¼ÔÚÌÖÂÛÑ¡Ôñ²éѯµÄÎÊÌ⣬ÄÇDML²éÑ¯ÄØ£¿¼òµ¥À´Ëµ£¬¶þÕßдÈëÏàͬµÄ½Å±¾¡£ÈôΪÄڴ棬ÔòÖ±½ÓдÈ룬·ñÔòÏÈ´ÓÄÚ´æÖÐÌáÈ¡³öÀ´ÔÙдÈë¡£
Õâ¾ÍÊDzúÉú¡°ÔàÒ³¡±Õâ¸ö¸ÅÄîµÄ»·½Ú£¬Ò²¾ÍÊÇ˵£¬Ò»¸ö½Å±¾Òѱ»Ð޸Ļ¹Î´Ð´ÈëÓ²Å̵ÄÇé¿ö¡£
ÔÚÎÒÃǼÌÐøÖ®Ç°£¬»¹ÓÐÐí¶à¹¦¿ÎºÍÑо¿Òª×ö£¬ÕâÀïÌØ±ðÇ¿µ÷¹ØÓÚWALÈÕÖ¾ºÍÄÚ²¿Ê¼þ£¨checkpoints£©¡£
WALÊÇÒ»¸öÖØ×öÈÕÖ¾£¬Ö÷ÒªÓÃÒÔ±£´æÏµÍ³ÄÚ²¿·¢ÉúÒ»ÇеĹ켣¡£ÕâÊÇͨ¹ý½«ËùÓеı仯·Ö±ð¼ÈëÒ»¸öWALÈÕÖ¾À´ÊµÏÖ¡£Checkpointer¾ÍÊÇÒ»¸öÔÚÒ»¸ötime settingµÄ¿ØÖÆÏ£¬¶¨Ê±½«ËùνµÄÔàҳдÈë´ÅÅ̵Ľø³Ì¡£Ö®ËùÒÔÈç´Ë²Ù×÷£¬ÊÇÒòΪ¿¼Âǵ½Êý¾Ý¿â±ÀÀ£Ê±´ÓÍ·¿ªÊ¼Öظ´ËùÓвÙ×÷µÄÐèÒª¡£
ÕâÊÇ´ÓÄÚ´æÖÐɾ³ý½Å±¾×î³£¼ûµÄ·½·¨£¬¶øÔÚ¾µä°¸ÀýÖÐLRUËã·¨ÇåÀí¼¸ºõûÓгöÏÖ¹ý¡£
Æß¡¢Àí½â¸ßËÙ»º³å´æ´¢Æ÷£¨cache£©
ExplainÊÇÀí½â¼ÆËã»úÄÚ²¿ÕýÔÚ½øÐÐдʲôµÄºÃ·½·¨¡£Õâ¸ö·½·¨ÉõÖÁÄܹ»¸æËßÄãÓжàÉÙÊý¾Ý¿éÊÇÀ´×Ô´ÅÅ̵ģ¬ÓÖÓжàÉÙÊÇÀ´×Ôshared_buffers£¬¼´ÄÚ´æµÄ¡£
ÀýÈçÏÂÃæÕâ¸ö²éѯ¼Æ»®£º

¹²Ïí¶ÁȡָµÄÊÇÆäÈ¡×Ô´ÅÅÌÇÒ²»±»»º´æ¡£Èô¸Ã²éѯÔÙ´ÎÔËÐУ¬ÇÒ»º´æÅäÖÃÕýÈ·µÄ»°£¨ÎÒÃǽ«ÔÚÏÂÃæÌÖÂÛ£©£¬Æä½«ÒÔ¹²ÏíhitµÄÐÎʽ³ÊÏÖ¡£

ͨ¹ýÕâ¸ö·½·¨£¬ºÜÈÝÒ×´Ó²éѯµÄ½Ç¶ÈÀ´»ñÖª»º´æµÄÁ¿£¬¶øÎÞÐèͨ¹ýOS/PostgresµÄInternalsÀ´Íê³É¡£
°Ë¡¢È«ÃæÉ¨Ãè°¸Àý
È«ÃæÉ¨Ã裬ÔÚûÓÐË÷ÒýÇÒPostgres±ØÐë´Ó´ÅÅÌÖÐÌáÈ¡ËùÓÐÊý¾ÝµÄÇé¿öÏ£¬¶ÔÓÚÕâÀà¸ßËÙ»º³å´æ´¢Æ÷À´Ëµ¹éÊôÎÊÌâÇøÓò¡£
ÓÉÓÚµ¥´ÎɨÃèÄÜÇå³þ´æ´¢Æ÷ÄÚµÄËùÓÐÊý¾Ý£¬¹Ê¶øÆä²Ù×÷·½·¨ÓÐËù²»Í¬¡£ËüÑ¡ÓÃÒ»×é¹²¼Æ256K.B´óСµÄ»º³åÇø£¬¶ø·Ç³£¹æµÄLRU/ClockÇåÀí»º´æËã·¨¡£ÏÂÃæµÄ²éѯչʾÁËËüµÄ²Ù×÷·½·¨¡£

ÔÙ´ÎÖ´ÐÐÉÏÊö²éѯ¡£

´ÓÖÐÎÒÃÇ¿ÉÒÔÇå³þµØ¿´µ½32¸ö¿éÇå³þµØ×ªÈëÁËÄڴ棬¼´32*8= 256 KB¡£ÕâÔÚsrc¡¢backend¡¢storage¡¢bufferºÍREADMEÖж¼ÓÐËù˵Ã÷/½âÊÍ/ÌåÏÖ¡£
¾Å¡¢ÄÚ´æÁ÷ºÍOS»º´æ
PostgresÊÇÒ»¸ö¿çƽ̨Êý¾Ý¿â£¬Æä»º´æºÜ´ó³Ì¶ÈÉÏÒÀÀµÓÚ²Ù×÷ϵͳ¡£
ʵ¼ÊÉÏshared_buffersÊÇÔÚ¸´ÖÆOSµÄ²Ù×÷¡£ÏÂÃæ¸ø³öÒ»ÕŵäÐ͵ÄÊý¾ÝÔÚPostgresÄÚ²¿µÄÁ÷Ïòͼ¡£

Æð³õµÄÈ·ÁîÈËÀ§»ó£¬ÓÉÓÚ»º´æÊÇÓÉOSºÍPostgres¶þÕßͬʱ¹ÜÀíµÄ£¬µ«ÕâÑù²Ù×÷Ò²ÊÇÓÐÔÒòµÄ¡£
̸¼°²Ù×÷ϵͳ£¬¸ßËÙ»º³å´æ´¢Æ÷ÔòÐèÒªÒ»¸ö¶ÀÁ¢µÄpost£¬ÍøÉÏÒ²Óкܶà¿É¹©ÀûÓõÄ×ÊÔ´¡£
Òª¼ÇסOS»º´æÊý¾ÝÊÇ´¦ÓÚºÍÉÏÃæÌáµ½µÄÒ»ÑùµÄÔÒò£¬¼´ÎªÊ²Ã´ÎÒÃÇÐèÒªÒ»¸ö¸ßËÙ»º³å´æ´¢Æ÷ÄÇÒ»²¿·ÖÄÚÈÝ¡£
ÎÒÃÇ¿ÉÒÔ°ÑI/O·ÖΪÁ½À࣬¼´¶ÁºÍд¡£¼òÑÔÖ®£¬Êý¾Ý´Ó´ÅÅÌÁ÷ÈëÄÚ´æ½Ð×ö¶Á£»Êý¾ÝÓÉÄÚ´æÁ÷Èë´ÅÅ̳ÆÎªÐ´¡£
¶Á
²Î¿¼ÉÏÃæµÄÁ÷³Ìͼ£¬¿ÉÒÔ·¢ÏÖдָµÄÊÇÊý¾Ý´Ó´ÅÅ̵½OS´æ´¢Æ÷ÔÙµ½shared_buffersµÄ×ªÒÆ¹ý³Ì¡£
ÓÐʱ£¬OS´æ´¢Æ÷ºÍshared_buffers¿ÉÒÔ¿ØÖÆÏàͬµÄ½Å±¾£¬¶øÕâ¿ÉÄܵ¼Ö¿ռäÀË·Ñ£¬µ«ÕâÀïÒª¼Çס£¬OS´æ´¢Æ÷ËùÓõÄÊǼòµ¥µÄLRUËã·¨¶ø·ÇÊý¾Ý¿âÓÅ»¯µÄclock sweep¡£Ò»µ©½Å±¾Ò³µÄ¹²Ïí»º³å¹¦ÄܼõÈõ£¬OS´æ´¢Æ÷ÄÚÔòÎÞ·¨¶ÁÈ¡£¬ÇÒÈôÓб¸·Ý£¬Ò²ºÜÈÝÒ×±»É¾³ý¡£
ÔÚʵ¼ÊÇé¿öÏ£¬²¢²»´æÔÚÌ«¶à±»Í¬Ê±´¢´æÓÚ¸÷ÄÚ´æÇøÓòµÄ½Å±¾Ò³¡£ÕâÒ²Êǽ¨Òé×Ðϸ¹æ»®shared_buffers´óСµÄÔÒòÖ®Ò»¡£¹ý·ÖÓ²ÐԵĹ涨½«ÓÐËðÆäÐÔÄÜ£¬ÀýÈçÈÃÆä³ÐÔØ×î´ó·Ý¶îµÄÄÚ´æ»òÊǸøÆä·ÖÅäµÄ¹ýÉÙ¡£
Õë¶ÔÆäÓÅ»¯ÎÊÌ⣬ÏÂÎĽ«Ïê½â¡£
д
дÊÇÓÉÄÚ´æµ½´ÅÅ̵ÄÊý¾Ý×ªÒÆ¡£Õâ¸ö»·½ÚÕýÊÇÔàÒ³²úÉúÖ®´¦¡£Ò»¸ö½Å±¾Ò»µ©±»±ê¼ÇΪÔàÒ³£¬Ôò½«±»´«ÊäÖÁOS´æ´¢Æ÷£¬ËæºóÔò±»Ð´Èë´ÅÅÌ¡£ÔÚÕâ¸ö»·½Ú£¬OSÔÚÊäÈëͨÐÅÁ¿µÄ»ù´¡ÉÏÏíÓиü´óµÄµ÷¶ÈÊäÈëÊä³öµÄ×ÔÓÉ¡£
ÈçÉÏÎÄËù˵£¬ÈôOS´æ´¢Æ÷ÈÝÁ¿½ÏС£¬ÔòÆä²»ÄܶÔдÈë½øÐÐÖØÐÂÅÅÐò£¬Ò²²»ÄܶÔÊäÈëÊä³ö½øÐÐÓÅ»¯¡£¶øÕâ¶ÔÓڸ߹¤×÷¸ºÔصÄдÀ´ËµÊǷdz£ÖØÒªµÄ¡£Òò´Ë£¬OS´æ´¢Æ÷µÄ´óСҲºÜÖØÒª¡£
Ê®¡¢³õʼÅäÖÃ
¶ÔÓںܶàÊý¾Ý¿âϵͳÀ´Ëµ£¬²¢²»´æÔÚÖ±½ÓÊÊÓõÄÍòÄÜÅäÖá£ÅäÓлù´¡ÅäÖõÄPostgreSQL ships¾¹ýÓÅ»¯ÔöÇ¿ÁËÆä¼æÈÝÐÔ¶ø·ÇÐÔÄÜ¡£
ÒÀ¾ÝÓ¦ÓóÌÐò¡¢¹¤×÷¸ºÔØÀ´ÓÅ»¯ÅäÖã¬ÊÇÊý¾Ý¿â¹ÜÀíÔ±¡¢¿ª·¢ÕßµÄÔðÈΡ£È»¶øPostgresÓÐÒ»¸öºÜºÃµÄÎĵµÓÃÒÔָʾ´ÓºÎ´¦¿ªÊ¼¡£
Ò»µ©È·Á¢ÁËĬÈÏ¡¢Æô¶¯ÅäÖ㬼´¿Éͨ¹ý¸ºÔØ¡¢ÐÔÄܲâÊԲ鿴Æä²Ù×÷Çé¿ö¡£
Òª¼Çס¶Ô³õʼÅäÖõĵ÷ÕûÊÇΪÁ˸üºÃµÄ»ñÈ¡¶ø²»ÊÇÐÔÄܵÄÌá¸ß¡£Í¨³£Çé¿öÏ£¬×îºÃÄܼì²â²¢Ñ¡Ôñ¸üÊÊÒËÆä¹¤×÷¸ºÔصÄÅäÖá£
ʮһ¡¢ËæÊ±ÓÅ»¯
¶ÔÓÚ²»¿É¼ì²âµÄ¶«Î÷£¬×ÔȻҲÎÞ·¨ÓÅ»¯¡£
ÓÐÁËpostgres£¬¾ÍÓÐÁËÁ½Öֿɹ©¼ì²âµÄ·½·¨¡£
²Ù×÷ϵͳ
¶ÔÓÚÔÚÄĸöƽ̨ÉÏPostgres¿ÉÒÔ×îºÃµØ¹¤×÷Õâ¸öÎÊÌâµÄ´ð°¸£¬²¢Î´µÃµ½ÆÕ±éµÄ¹²Ê¶£¬ËùÒÔ´Ë´¦¼ÙÉèÊÊÓõÄÊÇLinux¼ÒÍ¥°æ²Ù×÷ϵͳ¡£µ«Õâ¸öÏë·¨ÀàËÆ¡£
Ê×ÏÈ£¬ÓÐÒ»¸ö½Ð×öIo topµÄ¹¤¾ß£¬¿ÉÒÔÓÃËüÀ´¼ì²â´ÅÅ̵ÄÊäÈëÊä³ö¡£ºÍtopÏàËÆµÄÊÇ£¬ËüÔÚ¼ì²â´ÅÅÌÊäÈëÊä³öʱ³ÙÔç»áÅÉÉÏÓó¡¡£ÕâÊÇÖ»ÐèÒªÔËÐÐiotopÖ¸ÁîÀ´¼ì²â¶ÁÈ¡¡¢Ð´Èë¡£

ÉÏͼÇå³þµØÕ¹Ê¾ÁËÔÚ¸ºÔØÏÂPostgresÊÇÈçºÎÔËÐе쬼´ÄÄЩÊÇÕë¶Ô´ÅÅ̵ģ¬ÓÖÓÐÄÄЩÊÇÀ´×ÔRAMµÄ£¬ÕâЩÊý¾Ý¿Éͨ¹ý²úÉúµÄ¸ºÔØÀ´»ñÈ¡¡£
Ö±½ÓÀ´×ÔPostgres
ͨ³£Çé¿öÏ£¬×îºÃ¼à²âÖ±½ÓÀ´Ô´ÓÚPostgresµÄÊý¾Ý£¬¶ø²»ÊǾÀúÁËOS·¾¶´«ÊäµÄÊý¾Ý¡£
´ËÍ⣬ͨ³£Ö»ÓÐÔÚÈ·ÈÏPostgres±¾Éí´æÔÚ´íÎóµÄÌõ¼þÏ£¬²Å»áÖ´ÐÐOS²ãÃæµÄ¼à²â£¬µ«ÕâÖÖÇé¿öÒ»°ã²»³£¼û¡£
°éËæPostgres£¬ÓÐһЩ¿É¹©Ö§ÅäµÄ¹¤¾ß£¬¿ÉÒÔÓÃÀ´¼ì²âÄÚ´æµÄÐÔÄÜ¡£
Explain
ĬÈÏÊÇSQL explain¡£ËüÄܸø³ö±ÈÆäËüÊý¾Ý¿âϵͳҪ¸ü¶àµÄÐÅÏ¢£¬µ«ÔÚÀí½âÉϵÄÄѶÈÒ²ÒªÏà¶Ô¸ßһЩ¡£¹Ê¶øÐèҪͨ¹ýÁ·Ï°À´¼ÓÒÔÊìϤ¡£²»Òª´í¹ýÄǼ¸¸öÓÐÓõÄflags£¬ÒòΪÈçǰËù¼û£¬ËûÃǽ«±»Ìر𻺴档
½øÈëÏÂÃæµÄÁ´½ÓÀ´ÉîÈëÁ˽âexplainµÄÏà¹ØÄÚÈÝ£º
¸ü¶àexplainÏêÇé¹Ø×¢ÍøÕ¾ postgresguide.com
Explain visualizer
²éѯÈÕÖ¾
²éѯÈÕÖ¾ÊÇÓÃÒÔÁ˽âϵͳÄÚ²¿Ëù·¢ÉúµÄʼþµÄÁíһ;¾¶¡£
ÎÒÃÇÎÞÐèÊÂÎÞ¾ÞϸµØÈ«²¿¼Ç¼£¬Ö»ÐèÒª¼ÇÂ¼ÌØ¶¨Ê±¼ä¼ä¸ô¼äµÄ²éѯ£¬»òÕßÔËÓÃlog_min_duration_statement²ÎÊýÒÔ²ÉÓÃÂýËÙ²éѯÈÕÖ¾¡£
×Ô¶¯explain
ÕâÒ²¿ÉÒÔ°ïÖúÄãÀûÓÃÂýËÙ²éѯ×Ô¶¯¼Ç¼ִÐмƻ®¡£ËüÄܹ»ÈÃÄãÔÚÎÞÐèÊÖ¶¯ÔËÐÐexplainµÄÇé¿öϽøÐе÷ÊÔ¡£
Pgͳ¼Æ±¨±í
ÉÏÃæÌáµ½µÄ·½°¸¶¼ºÜºÃ£¬µ«ÊÇȱ·¦¹®¹ÌµÄÀíÄî¡£
ÕâÊÇPostgresÄÚ²¿½¨Á¢µÄÄ£¿é£¬µ«ÊÇÔÚĬÈÏÇé¿öÏ»á²úÉúȱÏÝ¡£
¿ÉÒÔͨ¹ý´´Ôìextension pg_stat_statementsÀ´Ê¹Ö®¹¤×÷¡£
Ò»µ©Æä¿ªÊ¼ÔËÐУ¬¾¹ýÒ»¶¨Á¿µÄ²éѯ֮ºó£¬¼´¿ÉÒÔÕ¹¿ªÈçϲéѯ¡£

¸ø³ö´óÁ¿²éѯËùÏûºÄµÄʱ³¤¼°Æäƽ¾ùÖµµÄϸ½ÚÐÅÏ¢¡£
Õâ¸ö·½·¨µÄȱÏÝÔÚÓÚËüÏûºÄÁ˲¿·ÖÐÔÄÜ£¬¹Ê¶øÔÚÉú²úϵͳÖв»³£ÍƼöÕâ¸ö·½·¨¡£
PG Buffer´æ´¢Æ÷ºÍPG fincore
Èç¹ûÏëÒª»ñµÃ¸üÉîÈëµÄÁ˽⣬»¹ÓÐÁ½¸ö¿ÉÒÔÖ±½ÓÉîÈëshared_buffersºÍOS ´æ´¢Æ÷ÄÚ²¿µÄÄ£¿é¡£
ÖµµÃ×¢ÒâµÄÊÇ£¬explain£¨analyze£¬buffers£©Ö»ÏÔʾ³ö×Ôshared_buffersµÄ¹¤¾ß£¬²»°üÀ¨³ö×ÔOS´æ´¢Æ÷µÄ¡£
PG»º³å´æ´¢Æ÷
Õâ°ïÖúÎÒÃÇÊµÊ±ÕÆÎÕ¹²Ïí»º³åÇøÄÚµÄÊý¾Ý¡£ÊÕ¼¯À´×Ôshared_buffersµÄÊý¾Ý£¬²¢´æÖÁpg_buffercacheÄÚ²¿·½±ã²é¿´¡£
ÏÂÃæ¸ø³öÒ»¸ö²éѯÑùÀý£¬ËüÁгöÁËǰһ°ÙµÄ±í¸ñºÍ´æ´¢µÄ½Å±¾µÄÊýÁ¿¡£

ÕâÊÇÒ»¸öÍⲿģ¿é£¬¸ºÔðÌṩOSÈçºÎ´æ´¢½Å±¾µÄÐÅÏ¢¡£ÕâÒ»²ã¼¶½ÏµÍÇÒÓ°ÏìÁ¦½ÏÇ¿¡£
PgÔ¤¼ÓÔØÄ£¿é£¨Êý¾Ý»º´æÔ¤¼ÓÔØÄ£¿é£©
ÕâÊÇÒ»¸öÄÚÖÃÄ£¿é£¬ËüȷʵÄܹ»¸ºÔØÊý¾Ýµ½shared_buffers»òOS´æ´¢Æ÷»òΪ¶þÕß¹²ÓС£Èç¹û¾õµÃÄÚ´æÔ¤ÈÈÊǸöÎÊÌâµÄ»°£¬±ã¿ÉÒÔ½è´ËÀ´½øÐкܺõĵ÷ÊÔ¡£
ËäÈ»»¹ÓÐÆäËü¿ÉÒÔÓÃÒÔÁ˽âPostgres´æ´¢Æ÷µÄ·½·¨£¬µ«ÎÒÕâÀïÒѾÁгöÁË×îΪÆÕ±éÒÔ¼°×îΪ±ãÓÚʹÓõļ¸ÏîÁË¡£ÓÐÁËÕâЩ¹¤¾ß£¬¾Í²»»áÔÙ³öÏÖÓÉÓÚÄÚ´æÎÊÌâµ¼ÖµÄÊý¾Ý¿âÔËÐлºÂý¡£
|