Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PostgreSQL11 設定パラメーター解体新書 / PostgreSQL 11 parameter

ester41
January 26, 2019

PostgreSQL11 設定パラメーター解体新書 / PostgreSQL 11 parameter

OSC 2019 Osakaの登壇資料です。

ester41

January 26, 2019
Tweet

More Decks by ester41

Other Decks in Technology

Transcript

  1. PostgreSQLͷ಺෦ߏ଄ (ϓϩηεߏ੒) postgres (όοΫΤϯυϓϩηε) postgres (ϥΠλʔ) postgres (νΣοΫϙΠϯλʔ) postgres (౷ܭ৘ใίϨΫλʔ)

    postgres (ࣗಈόΩϡʔϜϥϯνϟʔ) postgres (ࣗಈόΩϡʔϜϫʔΧʔ) postgres (WALϥΠλʔ) postgres (Ϛελʔαʔόʔϓϩηε) WALόοϑΝʔ WALϑΝΠϧ σʔλϑΝΠϧ ڞ༗όοϑΝʔ ౷ܭ৘ใ ىಈ࣌ʹϓϩηεΛϑΥʔΫ ઀ଓཁٻ͝ͱʹϓϩηεΛϑΥʔΫ ࣗಈόΩϡʔϜΛܖػʹϓϩηεΛϑΥʔΫ
  2. PostgreSQLͷ಺෦ߏ଄ (ϝϞϦʔߏ੒) ϓϩηεϝϞϦʔ όοΫΤϯυϓϩηε Ұ࣌όοϑΝʔ (temp_buffers) ࡞ۀϝϞϦʔ (work_mem) ϝϯςφϯε༻࡞ۀϝϞϦʔ (maintenance_work_mem)

    ڞ༗ϝϞϦʔ WALόοϑΝʔ (wal_buffers) ڞ༗όοϑΝʔ (shard_buffers) σʔλϑΝΠϧ WALϑΝΠϧ WALϥΠλʔϓϩηε όΩϡʔϜϫʔΧʔϓϩηε ۭ͖ྖҬϚοϓ ՄࢹੑϚοϓ ϥΠλʔ/ νΣοΫϙΠϯλʔϓϩηε
  3. postgresql.confʹ͍ͭͯ(2/3) ઃఆ஋͸ɺҎԼͷSQLͰ֬ೝ͢Δ͜ͱ͕ՄೳͰ͢ɻ SELECT name, setting, context FROM pg_settings; ग़ྗ஋͸ҎԼͷ௨ΓͱͳΓ·͢ɻ name

    ύϥϝʔλʔ໊ setting ݱࡏͷઃఆ஋ content ύϥϝʔλʔ͕༗ޮͱͳΔλΠϛϯά ɾinternal: ઃఆ஋Λมߋ͢Δ͜ͱ͸Ͱ͖·ͤΜɻ ɾpostmaster: αʔόʔىಈ࣌ͷΈมߋ͕ՄೳͰ͢ɻ ɾsighup: αʔόʔϦϩʔυͰมߋ͕ՄೳͰ͢ɻ ɾsuperuser: εʔύʔϢʔβʔͷΈมߋͰ͖ଈ࣌൓ө͞Ε·͢ɻ ɾuser: શϢʔβʔͰมߋͰ͖ଈ࣌൓ө͞Ε·͢ɻ
  4. ઀ଓઃఆɾػೳઃఆ(3/22) ύϥϝʔλʔ໊ port ൓ө(ର৅) ཁϦελʔτ σϑΥϧτ஋ 5432 ղઆ ΫϥΠΞϯτ͔Βαʔόʔʹ઀ଓ͢Δࡍʹ࢖༻͢Δ ϙʔτ൪߸Ͱ͢ɻ

    σʔλϕʔεΫϥελͰϙʔτ൪߸͕ڞ༗͞Ε·͢ɻ 1ͭͷαʔόʔʹෳ਺ͷσʔλϕʔεΫϥελΛ࡞੒͢ Δࡍ͸ɺมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ 5432(มߋͳ͠)
  5. ઀ଓઃఆɾػೳઃఆ(4/22) ύϥϝʔλʔ໊ max_connections ൓ө(ର৅) ཁϦελʔτ σϑΥϧτ஋ 100 ղઆ αʔόʔʹ઀ଓͰ͖Δ࠷େηογϣϯ਺Ͱ͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ

    ͳ͓ɺҰൠϢʔβʔ͕઀ଓͰ͖Δ਺͸ɺޙड़ͷ superuser_reserved_connectionsΛࠩ͠Ҿ͍ͨ਺ͱͳ Γ·͢ɻ ਪ঑஋ 100(มߋͳ͠)
  6. ઀ଓઃఆɾػೳઃఆ(7/22) ύϥϝʔλʔ໊ db_user_namespace ൓ө(ର৅) ཁϦϩʔυ σϑΥϧτ஋ off ղઆ PostgreSQLͷϢʔβʔ৘ใ͸ɺσʔλϕʔεΫϥελ Ͱڞ༗͞Ε͍ͯ·͕͢ɺ͜ͷύϥʔϝʔλʔΛonʹ͢

    Δ͜ͱͰɺσʔλϕʔε͝ͱʹϢʔβʔ৘ใΛઃఆ͢Δ ͜ͱ͕ՄೳͱͳΓ·͢ɻ Ϣʔβʔͷ࡞੒͸ɺusername@dbnameͷΑ͏ʹͳΓ ·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ off(มߋͳ͠)
  7. ઀ଓઃఆɾػೳઃఆ(8/22) ύϥϝʔλʔ໊ default_transaction_isolation ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ read committed ղઆ SQLτϥϯβΫγϣϯϨϕϧΛઃఆ͠·͢ɻ

    ҎԼͷઃఆ஋͕ଘࡏ͠·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ɾread uncommitted ɾread committed ɾrepeatable read ɾserializable ਪ঑஋ read committed(มߋͳ͠)
  8. ઀ଓઃఆɾػೳઃఆ(10/22) ύϥϝʔλʔ໊ lc_messages ൓ө(ର৅) ଈ࣌൓ө(εʔύʔϢʔβʔ) σϑΥϧτ஋ C ղઆ දࣔ͢ΔϝοηʔδͷݴޠΛઃఆ͠·͢ɻ ࢖༻Ͱ͖Δݴޠ͸γεςϜʹґଘ͠·͢ɻ

    initdbͰࢦఆͨ͠ϩέʔϧʹΑΓมΘΓ·͢ɻ ϩέʔϧ͕“C”ͷ৔߹͸ɺ“C”ͱͳΓ·͢ɻ (“C”ͱ͸σϑΥϧτઃఆͱ͍͏ҙຯͰ͢ɻͭ·Γӳޠͱͳ Γ·͢ɻ) ਪ঑஋ ja_JP.UTF-8
  9. ઀ଓઃఆɾػೳઃఆ(11/22) ύϥϝʔλʔ໊ lc_monetary, lc_numeric, lc_time ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ C ղઆ

    ௨աॻࣜɺ਺஋ͷॻࣜɺ೔࣌ॻࣜΛઃఆ͠·͢ɻ ࢖༻Ͱ͖Δݴޠ͸γεςϜʹґଘ͠·͢ɻ initdbͰࢦఆͨ͠ϩέʔϧʹΑΓมΘΓ·͢ɻ ϩέʔϧ͕“C”ͷ৔߹͸ɺ“C”ͱͳΓ·͢ɻ ਪ঑஋ ja_JP.UTF-8
  10. ઀ଓઃఆɾػೳઃఆ(13/22) ύϥϝʔλʔ໊ archive_mode ൓ө(ର৅) ཁϦελʔτ σϑΥϧτ஋ off ղઆ WALΞʔΧΠϏϯάػೳͷ༗ޮແޮΛઃఆ͠·͢ɻ archive_command͕ઃఆ͞Ε͓ͯΓɺwal_level͕minimalҎ্Ͱ͋

    Δ͜ͱ͕ඞਢͱͳΓ·͢ɻ ҎԼͷઃఆ஋͕ଘࡏ͠·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ɾoff: ػೳΛແޮԽ͠·͢ɻ ɾon: ௨ৗӡ༻࣌(ΞʔΧΠϒϦΧόϦ͓Αͼ ελϯόΠϞʔυҎ֎)ͷΈػೳΛ༗ޮԽ͠·͢ɻ ɾalways: ͢΂ͯͷঢ়ଶͰػೳΛ༗ޮԽ͠·͢ɻ ਪ঑஋ off(มߋͳ͠)
  11. ઀ଓઃఆɾػೳઃఆ(14/22) ύϥϝʔλʔ໊ archive_command ൓ө(ର৅) ཁϦϩʔυ σϑΥϧτ஋ ’’(ۭന) ղઆ WALϑΝΠϧηάϝϯτΛΞʔΧΠϒ͢ΔγΣϧίϚ ϯυΛࢦఆ͠·͢ɻ

    ίϚϯυதͷ%p͸֨ೲ͞ΕΔϑΝΠϧͷύεͰஔ͖׵ ͑ΒΕɺ%f͸ϑΝΠϧ໊Ͱஔ͖׵͑ΒΕ·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ ’’(มߋͳ͠)
  12. ઀ଓઃఆɾػೳઃఆ(15/22) ύϥϝʔλʔ໊ archive_timeout ൓ө(ର৅) ཁϦϩʔυ σϑΥϧτ஋ 0 ղઆ WALϑΝΠϧηάϝϯτΛΞʔΧΠϒ͢Δ·Ͱͷ࣌ؒ Λࢦఆ͠·͢ɻ

    ඵ਺Ͱࢦఆ͠ɺ0ͷ৔߹͸ແޮԽ͞Ε·͢ɻ ஋Λখ͗͘͢͞͠ΔͱΞʔΧΠϒϑΝΠϧͷංେԽʹ ܨ͕ΔͨΊɺ60sҎ্ͷ஋Λࢦఆ͢ΔΑ͏ʹͯͩ͘͠͞ ͍ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ 0(มߋͳ͠)
  13. ઀ଓઃఆɾػೳઃఆ(17/22) ύϥϝʔλʔ໊ enable_bitmapscan, enable_gathermerge, enable_hashagg, enable_hashjoin, enable_indexscan, enable_indexonlyscan ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ)

    σϑΥϧτ஋ on ղઆ ΦϓςΟϚΠβʔ͕࢖༻͢Δϓϥϯϝιουͷ༗ޮແ ޮΛઃఆ͠·͢ɻ ॱʹϏοτϚοϓεΩϟϯܭըɺΪϟβʔϚʔδܭ ըɺϋογϡू໿ܭըɺϋογϡ݁߹ܭըɺΠϯσο Ϋε૸ࠪܭըɺΠϯσοΫεΦϯϦʔεΩϟϯܭըͱ ͳΓ·͢ɻ ਪ঑஋ on(มߋͳ͠)
  14. ઀ଓઃఆɾػೳઃఆ(18/22) ύϥϝʔλʔ໊ enable_mergejoin, enable_nestloop, enable_seqscan, enable_tidscan, enable_sort ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋

    on ղઆ ΦϓςΟϚΠβʔ͕࢖༻͢Δϓϥϯϝιουͷ༗ޮແ ޮΛઃఆ͠·͢ɻ ॱʹϚʔδ݁߹ܭըɺωεςουϧʔϓܭըɺγʔέ ϯγϟϧ૸ࠪܭըɺϋογϡ݁߹ܭըɺ໌ࣔతͳιʔ τɺTID ૸ࠪܭըɺ໌ࣔతͳιʔτͱͳΓ·͢ɻ γʔέϯγϟϧ૸ࠪܭը͓Αͼ໌ࣔతͳιʔτ͸׬શ ʹແޮԽ͢Δ͜ͱ͸Ͱ͖·ͤΜɻ ਪ঑஋ on(มߋͳ͠)
  15. ઀ଓઃఆɾػೳઃఆ(19/22) ύϥϝʔλʔ໊ enable_parallel_append ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ on ղઆ ΦϓςΟϚΠβʔ͕࢖༻͢Δϓϥϯϝιουͷ༗ޮແ ޮΛઃఆ͠·͢ɻ

    PostgreSQL11Ͱ௥Ճ͞Εͨ৽ύϥϝʔλʔͰ͢ɻ ϋογϡύʔςΟγϣχϯά͞Εͨςʔϒϧʹରͯ͠༗ ޮͱͳΔɺύϥϨϧू໿ܭըͱͳΓ·͢ɻ ਪ঑஋ on(มߋͳ͠)
  16. ઀ଓઃఆɾػೳઃఆ(20/22) ύϥϝʔλʔ໊ enable_parallel_hash, enable_partition_pruning ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ on ղઆ ΦϓςΟϚΠβʔ͕࢖༻͢Δϓϥϯϝιουͷ༗ޮແ

    ޮΛઃఆ͠·͢ɻ PostgreSQL11Ͱ௥Ճ͞Εͨ৽ύϥϝʔλʔͰ͢ɻ ॱʹύϥϨϧϋογϡ݁߹ܭըɺύϥϨϧύʔςΟγ ϣϯܭըͱͳΓ·͢ɻ ύϥϨϧύʔςΟγϣϯܭը͸ɺϓϥϯχϯάͰฒྻ ॲཧͰύʔςΟγϣϯςʔϒϧʹରͯ͠ΞΫηε͢Δඞ ཁ͕͋Δ͔֬ೝͰ͖ΔػೳͰ͢ɻ ਪ঑஋ on(มߋͳ͠)
  17. ઀ଓઃఆɾػೳઃఆ(21/22) ύϥϝʔλʔ໊ enable_partitionwise_join, enable_partitionwise_aggregate ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ off ղઆ ΦϓςΟϚΠβʔ͕࢖༻͢Δϓϥϯϝιουͷ༗ޮແ

    ޮΛઃఆ͠·͢ɻ PostgreSQL11Ͱ௥Ճ͞Εͨ৽ύϥϝʔλʔͰ͢ɻ ॱʹύʔςΟγϣϯಉ࢜ͷ݁߹ɺύʔςΟγϣϯಉ࢜ ͷू߹ͱͳΓ·͢ɻ ϓϥϯχϯάͰCPU͓ΑͼϝϞϦΛଟ͘࢖༻͢Δͨ ΊɺແޮԽ͞Ε͍ͯ·͢ɻ ਪ঑஋ off(มߋͳ͠)
  18. ઀ଓઃఆɾػೳઃఆ(22/22) ύϥϝʔλʔ໊ jit ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ off ղઆ PostgreSQL11Ͱ௥Ճ͞Εͨ৽ػೳͰ͋ΔɺJIT(Just In

    Time)ίϯύΠϧΛ༗ޮԽ͠·͢ɻ PostgreSQL11Ͱ௥Ճ͞Εͨ৽ύϥϝʔλʔͰ͢ɻ WHERE۟΍ूܭͳͲͰ࢖༻͞Ε·͕͢ɺ·ͩ҆ఆԽ͠ ͍ͯͳ͍Α͏ͰɺσϑΥϧτͰແޮԽ͞Ε͍ͯ·͢ɻ ਪ঑஋ off(มߋͳ͠)
  19. ϨϓϦέʔγϣϯ(1/17) PostgreSQLͷϨϓϦέʔγϣϯͷઃఆʹ͍ͭͯղઆ͠·͢ɻ PostgreSQL͸ɺετϦʔϛϯάϨϓϦέʔγϣϯͱϩδΧϧϨϓϦέʔγϣϯͷ2ͭΛ ఏڙ͍ͯ͠·͢ɻ ετϦʔϛϯάϨϓϦέʔγϣϯ͸ɺWAL(Write Ahead Logging)Λwalsenderϓϩηε ͕εϨʔϒαʔόʔ΁࿈ܞ͠ɺεϨʔϒαʔόʔͷwalreceiver͕ड৴ͯ͠ϨϓϦέʔ γϣϯΛఏڙ͠·͢ɻ ϩδΧϧϨϓϦέʔγϣϯ͸ɺϓϥΠϚϦʔαʔόʔ͕WALΛϩδΧϧσίʔσΟϯά

    ͱݺ͹ΕΔػೳͰϩδΧϧϨϓϦέʔγϣϯͷϓϩτίϧʹม׵͠ɺwalsenderϓϩη ε͕εϨʔϒαʔόʔ΁࿈ܞ͠·͢ɻεϨʔϒαʔόʔ͸ɺόοΫάϥ΢ϯυϫʔΧʔ ͕ड৴ͯ͠ϨϓϦέʔγϣϯΛఏڙ͠·͢ɻ ৄ͘͠͸ɺϨϓϦέʔγϣϯͷղઆεϥΠυΛ͝ࢀর͍ͩ͘͞ɻ https://www.slideshare.net/masahikosawada98/postgresql-86891271
  20. ύϥϝʔλʔ໊ wal_level ൓ө(ର৅) ཁϦελʔτ σϑΥϧτ஋ replica ղઆ WALʹอ࣋͢Δ৘ใྔΛઃఆ͠·͢ɻ ҎԼͷઃఆ஋͕ଘࡏ͠·͢ɻ ͳ͓ɺ্ҐϨϕϧ͸ԼҐϨϕϧͷ৘ใΛαϙʔτ͠·͢ɻ

    ɾminimal: Ϋϥογϡ࣌΍ଈ࣌ఀࢭ͔Βͷ෮ؼʹ ඞཁͳ৘ใͷΈอ࣋͠·͢ɻ ɾreplica: WALΞʔΧΠϒ͓ΑͼετϦʔϛϯά ϨϓϦέʔγϣϯʹඞཁͳ৘ใΛอ࣋͠·͢ɻ ɾlogical: ϩδΧϧσίʔσΟϯάʹඞཁͳ৘ใΛอ࣋͠·͢ɻ ਪ঑஋ logical ϨϓϦέʔγϣϯ(2/17)
  21. ύϥϝʔλʔ໊ max_wal_senders ൓ө(ର৅) ཁϦελʔτ σϑΥϧτ஋ 10 ղઆ εϨʔϒαʔόʔ͔Βͷಉ࣌઀ଓ࠷େ਺Λࢦఆ͠·͢ɻ 0ͷ৔߹͸ϨϓϦέʔγϣϯ͕ແޮԽ͞Ε·͢ɻ ૯઀ଓ਺ʹΧ΢ϯτ͞ΕΔͨΊɺmax_connectionsͷ஋

    Ҏ্ʹઃఆ͢Δ͜ͱ͸Ͱ͖·ͤΜɻ ϚελʔʹઃఆΛߦ͍·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ (ετϦʔϛϯάϨϓϦέʔγϣϯͷεϨʔϒ਺ + ϩδΧϧϨϓϦέʔγϣϯͷαϒεΫϦϓγϣϯ਺ * 2) + 1 ϨϓϦέʔγϣϯ(3/17)
  22. ύϥϝʔλʔ໊ max_replication_slots ൓ө(ର৅) ཁϦελʔτ σϑΥϧτ஋ 10 ղઆ αʔόʔ͕࡞੒Ͱ͖ΔϨϓϦέʔγϣϯεϩοτͷ࠷େ ਺Λࢦఆ͠·͢ɻ ϚελʔɾεϨʔϒڞʹઃఆΛߦ͍·͢ɻ

    ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ※ϨϓϦέʔγϣϯεϩοτ͸ɺ εϨʔϒͷঢ়ଶΛϚελʔ͕؅ཧ͢ΔͨΊͷػೳͰ͢ɻ ਪ঑஋ ϩδΧϧϨϓϦέʔγϣϯͷαϒεΫϦϓγϣϯ਺ * 2 + ετϦʔϛϯάϨϓϦέʔγϣϯͰ࡞੒͢ΔϨϓϦέʔγϣϯεϩοτͷ਺ ϨϓϦέʔγϣϯ(4/17)
  23. ύϥϝʔλʔ໊ wal_sender_timeout ൓ө(ର৅) ཁϦϩʔυ σϑΥϧτ஋ 60s ղઆ ࢦఆͨ࣌ؒ͠ΑΓ௕͘εϨʔϒ͔ΒͷԠ౴͕ͳ͍৔߹͸ ϨϓϦέʔγϣϯ઀ଓΛఀࢭ͠·͢ɻ ϛϦඵ୯ҐͰࢦఆ͕ՄೳͰ͢ɻ

    0ͷ৔߹͸λΠϜΞ΢τػೳΛແޮԽ͠·͢ɻ ϚελʔʹઃఆΛߦ͍·͢ɻ ؀ڥʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ 60s(มߋͳ͠) ϨϓϦέʔγϣϯ(6/17)
  24. ύϥϝʔλʔ໊ synchronous_standby_names ൓ө(ର৅) ཁϦϩʔυ σϑΥϧτ஋ ’’(ۭന) ղઆ ಉظ͢ΔεϨʔϒ໊ΛΧϯϚ۠੾ΓͰઃఆ͠·͢ɻ “*”Λઃఆ͢Δͱɺ͢΂ͯͷεϨʔϒ͕ର৅ͱͳΓ·͢ɻ ਖ਼֬ͳॻࣜʹ͍ͭͯ͸ɺެࣜυΩϡϝϯτΛ͝ࢀরͩ͘

    ͍͞ɻ https://www.postgresql.jp/document/current/html/runtime- config-replication.html ϚελʔʹઃఆΛߦ͍·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ ’’(ۭന) ϨϓϦέʔγϣϯ(7/17)
  25. ύϥϝʔλʔ໊ vacuum_defer_cleanup_age ൓ө(ର৅) ཁϦϩʔυ σϑΥϧτ஋ 0 ղઆ VACUUM΍HOTͰɺෆཁߦͷ࡟আ஗ԆΛߦ͏τϥϯβΫ γϣϯ਺Λࢦఆ͠·͢ɻ 0͸ଈ࠲ʹ࡟আ͞Ε·͢ɻ

    εϨʔϒͰίϯϑϦΫτ͕සൟʹൃੜ͢Δ৔߹͸ɺύϥ ϝʔλʔͷௐ੔Λߦͳ͍ͬͯͩ͘͞ɻ ϚελʔʹઃఆΛߦ͍·͢ɻ ؀ڥʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ 0(มߋͳ͠) ϨϓϦέʔγϣϯ(8/17)
  26. ύϥϝʔλʔ໊ max_standby_archive_delay ൓ө(ର৅) ཁϦϩʔυ σϑΥϧτ஋ 30s ղઆ ϗοτελϯόΠதɺελϯόΠ͕ΞʔΧΠϒϑΝΠϧΛ దԠ͍ͯ͠Δ࠷தʹൃੜͨ͠ίϯϑϦΫτͷ଴ͪ࣌ؒΛ ઃఆ͠·͢ɻ

    ϛϦඵ୯ҐͰࢦఆ͕ՄೳͰ͢ɻ “-1”ͷ࣌͸ɺ໰͍߹Θ͕ͤऴྃ͢Δ·ͰదԠ͕ఀࢭ͠· ͢ɻ εϨʔϒʹઃఆΛߦ͍·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ 30s(มߋͳ͠) ϨϓϦέʔγϣϯ(10/17)
  27. ύϥϝʔλʔ໊ max_standby_streaming_delay ൓ө(ର৅) ཁϦϩʔυ σϑΥϧτ஋ 30s ղઆ ϗοτελϯόΠதɺελϯόΠ͕ϓϥΠϚϦʔ͔Βड ৴ͨ͠WALΛదԠ͍ͯ͠Δ࠷தʹൃੜͨ͠ίϯϑϦΫτ ͷ଴ͪ࣌ؒΛઃఆ͠·͢ɻ

    ϛϦඵ୯ҐͰࢦఆ͕ՄೳͰ͢ɻ “-1”ͷ࣌͸ɺ໰͍߹Θ͕ͤऴྃ͢Δ·ͰదԠ͕ఀࢭ͠· ͢ɻ εϨʔϒʹઃఆΛߦ͍·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ 30s(มߋͳ͠) ϨϓϦέʔγϣϯ(11/17)
  28. ύϥϝʔλʔ໊ wal_receiver_status_interval ൓ө(ର৅) ཁϦϩʔυ σϑΥϧτ஋ 10s ղઆ ελϯόΠ͕WALͷड৴ਐḿঢ়ଶΛϓϥΠϚϦʔʹૹ৴ ͢Δִؒͷ࠷খ࣌ؒΛઃఆ͠·͢ɻ ϛϦඵ୯ҐͰࢦఆ͕ՄೳͰ͢ɻ

    wal_sender_timeoutΑΓখ͍͞஋Λઃఆ͍ͯͩ͘͠͞ɻ εϨʔϒʹઃఆΛߦ͍·͢ɻ ؀ڥʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ 10s(มߋͳ͠) ϨϓϦέʔγϣϯ(12/17)
  29. ύϥϝʔλʔ໊ hot_standby_feedback ൓ө(ର৅) ཁϦϩʔυ σϑΥϧτ஋ off ղઆ εϨʔϒ͕ݱࡏॲཧ͍ͯ͠Δ໰͍߹Θͤʹ͍ͭͯɺϓϥ ΠϚϦʔʹϑΟʔυόοΫΛૹ৴͢ΔػೳΛ༗ޮԽ͠· ͢ɻ

    ϨϓϦέʔγϣϯεϩοτΛ࢖༻͍ͯ͠Δ৔߹͸มߋ͕ ඞਢͱͳΓ·͢ɻ εϨʔϒʹઃఆΛߦ͍·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ on ϨϓϦέʔγϣϯ(13/17)
  30. ύϥϝʔλʔ໊ wal_receiver_timeout ൓ө(ର৅) ཁϦϩʔυ σϑΥϧτ஋ 60s ղઆ ࢦఆͨ࣌ؒ͠ΑΓ௕͘ϓϥΠϚϦʔ͔ΒͷԠ౴͕ͳ͍৔ ߹͸ϨϓϦέʔγϣϯ઀ଓΛఀࢭ͠·͢ɻ ϛϦඵ୯ҐͰࢦఆ͕ՄೳͰ͢ɻ

    0ͷ৔߹͸λΠϜΞ΢τػೳΛແޮԽ͠·͢ɻ εϨʔϒʹઃఆΛߦ͍·͢ɻ ؀ڥʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ 60s(มߋͳ͠) ϨϓϦέʔγϣϯ(14/17)
  31. ύϥϝʔλʔ໊ max_logical_replication_workers ൓ө(ର৅) ཁϦελʔτ σϑΥϧτ஋ 4 ղઆ ϩδΧϧϨϓϦέʔγϣϯͷϫʔΧʔ࠷େ਺Λࢦఆ͠· ͢ɻ దԠϫʔΧʔͱςʔϒϧಉظϫʔΧʔͷ྆ํؚ͕·Ε·

    ͢ɻ max_worker_processesͷ஋Λڞ༗͠·͢ɻ Ϛελʔ(ύϒϦογϟʔ)ʹઃఆΛߦ͍·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ 2(มߋͳ͠) ϨϓϦέʔγϣϯ(16/17)
  32. ύϥϝʔλʔ໊ max_sync_workers_per_subscription ൓ө(ର৅) ཁϦϩʔυ σϑΥϧτ஋ 2 ղઆ αϒεΫϦϓγϣϯ͝ͱͷಉظϫʔΧʔͷ࠷େ਺Λࢦఆ ͠·͢ɻ 1ςʔϒϧͷฒྻ౓͸1ͰݻఆԽ͞Ε͍ͯΔͨΊɺ஋Λม

    ߋ͢Δ͜ͱͰෳ਺ςʔϒϧʹର͢Δಉظॲཧͷฒྻ౓͸ ্͕Γ·͢ɻ Ϛελʔ(ύϒϦογϟʔ)ʹઃఆΛߦ͍·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ 2(มߋͳ͠) ϨϓϦέʔγϣϯ(17/17)
  33. ύϥϝʔλʔ໊ log_rotation_age ൓ө(ର৅) ཁϦϩʔυ σϑΥϧτ஋ 1d ղઆ ϩάϑΝΠϧͷ࠷େण໋Λઃఆ͠·͢ɻ ࢦఆ͕࣌ؒܦա͢Δͱɺ৽͍͠ϑΝΠϧʹϩά͕ੜ੒͞ Ε·͢ɻ

    “0”ͷ࣌͸ɺ࣌ؒʹΑΔϑΝΠϧͷੜ੒͕ແޮͱͳΓ· ͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ 1d(มߋͳ͠) ؂ࢹؔ܎(7/18)
  34. ύϥϝʔλʔ໊ client_min_messages ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ notice ղઆ ΫϥΠΞϯτʹૹ৴͢Δϝοηʔδ֊૚Λઃఆ͠·͢ɻ “DEBUG5”ɺ“DEBUG4”ɺ“DEBUG3”ɺ“DEBUG2”ɺ “DEBUG1”ɺ“LOG”ɺ“NOTICE”ɺ“WARNING”ɺ

    “ERROR”ɺ“FATAL”ɺ“PANIC”͔Βબ୒͠·͢ɻ ԼҐͷ֊૚͸ɺ্Ґͷ֊૚ͷϝοηʔδΛؚΈ·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ notice(มߋͳ͠) ؂ࢹؔ܎(11/18)
  35. ύϥϝʔλʔ໊ log_min_messages ൓ө(ର৅) ଈ࣌൓ө(εʔύʔϢʔβʔ) σϑΥϧτ஋ warning ղઆ ϩάʹग़ྗ͢Δϝοηʔδ֊૚Λઃఆ͠·͢ɻ “DEBUG5”ɺ“DEBUG4”ɺ“DEBUG3”ɺ“DEBUG2”ɺ “DEBUG1”ɺ“LOG”ɺ“NOTICE”ɺ“WARNING”ɺ

    “ERROR”ɺ“FATAL”ɺ“PANIC”͔Βબ୒͠·͢ɻ ԼҐͷ֊૚͸ɺ্Ґͷ֊૚ͷϝοηʔδΛؚΈ·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ warning(มߋͳ͠) ؂ࢹؔ܎(12/18)
  36. ύϥϝʔλʔ໊ log_min_error_statement ൓ө(ର৅) ଈ࣌൓ө(εʔύʔϢʔβʔ) σϑΥϧτ஋ error ղઆ ΤϥʔͱͳͬͨSQLจΛɺϩάʹग़ྗ͢Δϝοηʔδ֊ ૚Λઃఆ͠·͢ɻ “DEBUG5”ɺ“DEBUG4”ɺ“DEBUG3”ɺ“DEBUG2”ɺ

    “DEBUG1”ɺ“LOG”ɺ“NOTICE”ɺ“WARNING”ɺ “ERROR”ɺ“FATAL”ɺ“PANIC”͔Βબ୒͠·͢ɻ ԼҐͷ֊૚͸ɺ্Ґͷ֊૚ͷϝοηʔδΛؚΈ·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ error(มߋͳ͠) ؂ࢹؔ܎(13/18)
  37. ύϥϝʔλʔ໊ debug_print_parse, debug_print_rewritten, debug_print_plan ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ off ղઆ σόοά৘ใͷग़ྗͷ༗ޮແޮΛઃఆ͠·͢ɻ

    ༗ޮԽ͢Δ͜ͱͰɺνϡʔχϯάʹ༗ޮͳ৘ใ͕ग़ྗ͞ ΕΔ͔΋͠Ε·ͤΜɻ ॱʹ“ղੳπϦʔ”ɺ“ϦϥΠλʔ৘ใ”ɺ “࣮ߦܭը”ͱͳΓ·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ off(มߋͳ͠) ؂ࢹؔ܎(15/18)
  38. ύϥϝʔλʔ໊ log_line_prefix ൓ө(ର৅) ཁϦϩʔυ σϑΥϧτ஋ “%m [%p] ” ղઆ ϩάग़ྗ࣌ͷઌ಄෦෼ͷॻࣜจࣈྻΛઃఆ͠·͢ɻ

    ͜ͷจࣈྻͷޙΖʹϩά͕ग़ྗ͞Ε·͢ɻ %Τεέʔϓʹ͍ͭͯ͸ɺެࣜυΩϡϝϯτΛࢀরͯ͘͠ ͍ͩ͞ɻ https://www.postgresql.jp/document/10/html/runtime- config-logging.html#GUC-LOG-LINE-PREFIX ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ “[%m] [%p] [%u] [%d] [%h] ” ؂ࢹؔ܎(17/18)
  39. ύϥϝʔλʔ໊ shared_buffers ൓ө(ର৅) ཁϦελʔτ σϑΥϧτ஋ 32MB ղઆ σʔλϕʔεαʔόʔ͕࢖༻͢Δڞ༗ϝϞϦʔྔΛઃఆ͠·͢ɻ shared_buffersΛมߋ͢Δ৔߹͸ɺmax_wal_sizeͷมߋ΋ߦ͍· ͢ɻ

    ಉ࣌ʹɺΧʔωϧύϥϝʔλʔͷkernel.shmmax͓Αͼ kernel.shmall΋มߋ͍ͯͩ͘͠͞ɻ ڞ༗ϝϞϦʔͷ֓ࢉ͸ɺҎԼͷܭࢉࣜͰ֓ࢉͰ͖·͢ɻ = max_connections * 400 + max_prepared_transactions * 600 + max_locks_per_transaction * (max_connections + max_prepared_transactions) * 270 ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ γεςϜϝϞϦʔͷ25%ͷ༰ྔ νϡʔχϯά(2/46)
  40. ύϥϝʔλʔ໊ work_mem ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ 4MB ղઆ ηογϣϯதͷιʔτ΍ϋογϡૢ࡞Ͱ࢖༻͢ΔϝϞϦʔͷα ΠζΛઃఆ͠·͢ɻ େ͖͘͢Δ͜ͱͰ໰͍߹Θͤੑೳ͕޲্͠·͕͢ɺෳࡶͳ໰͍

    ߹Θͤͷ৔߹͸work_memͷ਺ഒ࢖༻͞ΕΔ͜ͱ͕͋Γ·͢ɻ ·ͨɺηογϣϯ୯ҐʹඞཁͱͳΔͨΊϝϞϦʔ؅ཧʹؾΛͭ ͚͍ͯͩ͘͞ɻ (γεςϜϝϞϦʔ - shared_buffers) / max_connectionsҎ্ͷ৔ ߹͸εϫοϓ͠ɺੑೳ͕௿Լ͠·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ 4MB(มߋͳ͠) νϡʔχϯά(4/46)
  41. ύϥϝʔλʔ໊ max_stack_depth ൓ө(ର৅) ଈ࣌൓ө(εʔύʔϢʔβʔ) σϑΥϧτ஋ 2MB ղઆ σʔλϕʔεαʔόʔͷ࣮ߦελοΫͷαΠζΛઃఆ͠· ͢ɻ Χʔωϧͷ࠷େελοΫ༰ྔ͔Β҆શ༨஍ͷͨΊͷ1MB

    Λࠩ͠Ҿ͍ͨ஋Λઃఆ͍ͯͩ͘͠͞ɻ Χʔωϧͷ੍ݶҎ্Λઃఆ͢ΔͱɺόοΫΤϯυϓϩη ε͕Ϋϥογϡ͢ΔڪΕ͕͋Γ·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ ulimit -sͷ݁Ռ(KB) - 1MB νϡʔχϯά(6/46)
  42. ύϥϝʔλʔ໊ effective_io_concurrency ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ 1 ղઆ σʔλϕʔεαʔόʔͷಉ࣌σΟεΫI/Oૢ࡞਺Λઃఆ͠·͢ɻ “0”Λઃఆ͢ΔͱɺඇಉظI/OϦΫΤετ͕ແޮԽ͞Ε·͢ɻ HDDͷ৔߹͸ɺRAIDΛߏ੒͢ΔυϥΠϒ਺Λઃఆͯͩ͘͠͞

    ͍ɻ ͨͩ͠ɺύϦςΟ༻͸আ֎͍ͯͩ͘͠͞ɻ SSDͷ৔߹͸ɺ਺ඦͷ஋͕࠷దͱߟ͑ΒΕ·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ HDD: RAIDΛߏ੒͢ΔυϥΠϒ਺(ύϦςΟ༻͸আ֎) SSD: 200 νϡʔχϯά(7/46)
  43. ύϥϝʔλʔ໊ max_parallel_workers_per_gather ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ 2 ղઆ 1ͭͷGather·ͨ͸Gather Mergeϊʔυʹରͯ͠ىಈͰ ͖ΔϫʔΧʔ਺ͷ࠷େ஋Λઃఆ͠·͢ɻ

    “0”Λઃఆ͢ΔͱύϥϨϧΫΤϦʔ͕࢖༻͞Εͳ͘ͳΓ· ͢ɻ max_parallel_workersͰϓʔϧ͞Εͨϓϩηε͔Βऔಘ ͞Ε·͢ɻ ਪ঑஋ CPUͷ෺ཧίΞ਺ / 2 νϡʔχϯά(10/46)
  44. ύϥϝʔλʔ໊ synchronous_commit ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ on ղઆ τϥϯβΫγϣϯͷίϛοτ͕ΫϥΠΞϯτʹ“׬ྃ”Λใࠂ͢ΔલʹWALϨ ίʔυ͕σΟεΫ্ʹॻ͖ࠐ·ΕΔ·Ͱ଴͔ͭͲ͏͔ͷઃఆΛߦ͍·͢ɻ ϨϓϦέʔγϣϯ࣌ʹ΋Өڹ͕͋Γɺઃఆ஋ͷҧ͍͸ҎԼͷ௨ΓͰ͢ɻ

    ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ on(มߋͳ͠) νϡʔχϯά(12/46) ઃఆ஋ ಉظ/ඇಉظ ϓϥΠϚϦʔ εϨʔϒ off ඇಉظ ଴ͨͳ͍ ଴ͨͳ͍ local ඇಉظ ଴ͭ ଴ͨͳ͍ remote_write ಉظ ଴ͭ ϝϞϦॻ͖ࠐΈ·Ͱ଴ͭ on ಉظ ଴ͭ σΟεΫॻ͖ࠐΈ·Ͱ଴ͭ remote_apply ಉظ ଴ͭ WALదԠ·Ͱ଴ͭ
  45. ύϥϝʔλʔ໊ wal_buffers ൓ө(ର৅) ཁϦελʔτ σϑΥϧτ஋ -1 ղઆ σΟεΫʹॻ͖ࠐ·Ε͍ͯͳ͍WALσʔλ͕࢖༻͢Δڞ ༗ϝϞϦʔͷྔΛઃఆ͠·͢ɻ “-1”ͷ৔߹͸ɺshared_buffersͷ32෼ͷ1͕ઃఆ͞Ε·

    ͢ɻ shared_buffers͕େ͖͍৔߹ɺWALηάϝϯτͷେ͖͞ Ͱ͋Δ16MBΛ௒͑ΔՄೳੑ͕͋ΔͨΊɺ16MBΛઃఆ͠ ·͢ɻ ਪ঑஋ 16MB νϡʔχϯά(13/46)
  46. ύϥϝʔλʔ໊ max_wal_size ൓ө(ର৅) ཁϦϩʔυ σϑΥϧτ஋ 1GB ղઆ ࣍ͷνΣοΫϙΠϯτ͕࣮ࢪ͞ΕΔWALϑΝΠϧͷαΠ ζΛઃఆ͠·͢ɻ ιϑτϦϛοτͷͨΊɺ৚݅ʹΑͬͯ௒͑Δ͜ͱ͕͋Γ

    ·͢ɻ ߋ৽͕සൟʹى͜Δ৔߹ɺνΣοΫϙΠϯτ͕සൟʹൃ ੜ͢ΔͨΊੑೳ͕௿Լ͠·͢ɻ ϩάʹϫʔχϯά͕ग़͍ͯΔ৔߹͸มߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ 1GB(มߋແ͠) νϡʔχϯά(16/46)
  47. ύϥϝʔλʔ໊ random_page_cost ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ 4.0 ղઆ σΟεΫ͔Β1ϖʔδ෼σʔλΛϥϯμϜʹऔಘ͢Δࡍ ͷɺϓϥϯφʔͷਪఆίετΛઃఆ͠·͢ɻ HDDΛج४ʹઃఆ͞Ε͍ͯ·͢ɻ

    γʔέϯγϟϧͱϥϯμϜΞΫηεεϐʔυ͕ಉ͡SSD ͷ৔߹͸ɺseq_page_costͷ஋ͱಉ͡ͱ͢Δ͜ͱͰߴ଎ ԽͰ͖·͢ɻ ਪ঑஋ HDD: 4.0(มߋແ͠) SSD: 1.0 νϡʔχϯά(19/46)
  48. ύϥϝʔλʔ໊ effective_cache_size ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ 4GB ղઆ ໰͍߹Θͤ࣌ʹͲͷఔ౓Ωϟογϡώοτ͢Δ͔Λ༧ଌ ͢ΔͨΊͷΩϟογϡαΠζΛઃఆ͠·͢ɻ PostgreSQLͷڞ༗όοϑΝʔ͚ͩͰͳ͘ɺOSͷϑΝΠ

    ϧΩϟογϡ΍σΟεΫΩϟογϡ౳Λߟྀ͢Δඞཁ͕ ͋Γ·͢ɻ ࣮ࡍʹ͸ϝϞϦʔͷ֬อ͸ߦΘΕͣɺϓϥϯφʔͷίε τਪఆ༻ͱͳΓ·͢ɻ ਪ঑஋ γεςϜϝϞϦʔͷ50%ͷ༰ྔ νϡʔχϯά(30/46)
  49. ύϥϝʔλʔ໊ search_path ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ "$user", public ղઆ ΫΤϦ౳͕εΩʔϚΛࢦఆ͍ͯ͠ͳ͍৔߹ɺεΩʔϚΛ ݕࡧ͢Δॱ൪Λઃఆ͠·͢ɻ

    “$user”͸ɺSESSION_USERͱಉ͡εΩʔϚ͕͋Ε͹ɺ ஔ׵͞Ε·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ "$user", public(มߋແ͠) νϡʔχϯά(36/46)
  50. ύϥϝʔλʔ໊ row_security ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ on ղઆ ߦηΩϡϦςΟϙϦγʔͷదԠʹΑͬͯΤϥʔΛൃੜ͞ ͤΔ͔ઃఆ͠·͢ɻ “off”͸ɺҰͭͰ΋ϙϦγʔ͕దԠ͞ΕͨΫΤϦ͕Τϥʔ

    ͱͳΓ·͢ɻ ߦηΩϡϦςΟϙϦγʔʹ͍ͭͯ͸ɺެࣜυΩϡϝϯτ Λ͝ࢀর͍ͩ͘͞ɻ https://www.postgresql.jp/document/10/html/sql- createpolicy.html ਪ঑஋ on(มߋແ͠) νϡʔχϯά(37/46)
  51. ύϥϝʔλʔ໊ default_tablespace ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ ’’(ۭന) ղઆ CREATEίϚϯυͰ໌ࣔతʹςʔϒϧεϖʔεΛࢦఆͯ͠ ͍ͳ͍৔߹ʹɺΦϒδΣΫτͷ࡞੒ઌͱͳΔσϑΥϧτ ͷςʔϒϧεϖʔεΛઃఆ͠·͢ɻ

    ۭനͷ৔߹͸ɺݱࡏͷσʔλϕʔεͷσϑΥϧτςʔϒϧ εϖʔεΛ࢖༻͠·͢ɻ Ұ࣌ςʔϒϧ͸ɺtemp_tablespacesͰࢦఆ͠·͢ɻ ਪ঑஋ ’’(มߋͳ͠) νϡʔχϯά(38/46)
  52. ύϥϝʔλʔ໊ vacuum_cleanup_index_scale_factor ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ 0.1 ղઆ B-treeΠϯσοΫεͷόΩϡʔϜॲཧΛ࣮ߦ͢ΔͨΊ ͷɺલճͷόΩϡʔϜॲཧ͔Βมߋ͞Εͨߦ਺ͷׂ߹ Λઃఆ͠·͢ɻ

    σϑΥϧτ஋Ͱ͸ɺ0.1%ͷมߋ͕͋ΔςʔϒϧͷΈΠ ϯσοΫεͷόΩϡʔϜ͕࣮ߦ͞Ε·͢ɻ PostgreSQL11Ͱ௥Ճ͞Εͨ৽ύϥϝʔλʔͰ͢ɻ ਪ঑஋ 0.1(มߋͳ͠) νϡʔχϯά(43/46)
  53. ͓·͚: ϝϞϦʔͷׂΓ౰ͯྫ GB 0 1 2 3 4 5 6

    7 8 9 10 11 12 13 14 15 16 2.1GB 7.4GB 4GB 2.5GB OSɾͦͷଞ shared_buffers όοΫΤϯυϓϩηε ۭ͖༰ྔ αʔόʔϝϞϦʔ͕16GBͰOSͦͷଞΞϓϦͰ2.5GBΛ࢖༻͠ɺ όοΫΤϯυϓϩηεͷίϯϑΟάઃఆ͕σϑΥϧτͷ৔߹͸ ҎԼͷΑ͏ʹͳΓ·͢ɻ γεςϜϝϞϦʔͷ25% (8MB + 4MB + 64MB) * 100઀ଓ = 7600MB ≒ 7.4GB
  54. ͓·͚: ΧʔωϧϦιʔεͷมߋ LinuxΧʔωϧͰͷϦιʔεมߋʹ͍ͭͯهࡌ͠·͢ɻ • ڞ༗ϝϞϦɾηάϝϯτͷ্ݶઃఆύϥϝʔλʔ: kernel.shmmax
 ׂΓ౰͍ͯͨϝϞϦͷόΠτ਺Λɺgetconf PAGE_SIZEͷ஋Ͱׂͬͨ஋ • γεςϜશମͷڞ༗ϝϞϦɾϖʔδ਺ͷ࠷େ஋ઃఆύϥϝʔλʔ:

    kernel.shmall
 kernel.shmmax * kernel.shmmni / getconf PAGE_SIZE / 16 • ώϡʔδϖʔδͷઃఆ: vm.nr_hugepages
 ώϡʔδϖʔδͷνϡʔχϯά͸ɺ࣮ࡍʹPostgreSQLΛ࣮ߦͯ֬͠ೝΛߦ͍·͢ɻ 1. Ծ૝ϝϞϦͷϐʔΫ࣌αΠζΛௐࠪ͠·͢ɻ
 grep ^VmPeak /proc/`cat /var/run/postgresql*.pid | head -1`/status 2. ώϡʔδϖʔδαΠζΛௐࠪ͠·͢ɻ
 grep ^Hugepagesize /proc/meminfo 3. ώϡʔδϖʔδઃఆύϥϝʔλʔʹܭࢉ஋Λઃఆ͠·͢ɻ: vm.nr_hugepages
 ceil( 2ͷ஋ / 3ͷ஋ )