Slide 1

Slide 1 text

PostgreSQL11 ઃఆύϥϝʔλʔ ղମ৽ॻ ΦʔϓϯιʔεΧϯϑΝϨϯε 2019 Osaka

Slide 2

Slide 2 text

͸͡Ίʹ ຊηογϣϯͰ͸ɺ࠷৽όʔδϣϯͰ͋Δ
 PostgreSQL11ͷίϯϑΟάϑΝΠϧͷղઆΛߦ͍·͢ɻ ύϥϝʔλʔ͸શ෦Ͱ໿250߲໨ଘࡏ͢ΔͨΊɺ
 ஌ͬͯ΋Β͍͍ͨ115߲໨Λର৅ͱ͍ͯ͠·͢ɻ

Slide 3

Slide 3 text

͸͡Ίʹ ຊηογϣϯ࡞੒ʹ͋ͨΓɺҎԼͷॻ੶Λࢀߟʹ͍ͯ͠·͢ɻ

Slide 4

Slide 4 text

ΞδΣϯμ ࣗݾ঺հ PostgreSQLͷ಺෦ߏ଄ʹ͍ͭͯ ઀ଓઃఆɾػೳઃఆ ϨϓϦέʔγϣϯ ؂ࢹؔ܎ νϡʔχϯά ऴΘΓʹ

Slide 5

Slide 5 text

ࣗݾ঺հ ໊લ: ࣉ಺ େً(ͯΒ͏ͪ ͍͖ͨ) ॴଐ: ೔ຊPostgreSQLϢʔβձ
 ؔ੢ࢧ෦௕ Twitter/GitHub: @ester41 ࢓ࣄ: อकɾઃܭɾ։ൃͳͲSE࡞ۀશൠ

Slide 6

Slide 6 text

͜ͷηογϣϯͰ͸ɺPostgreSQLͷઃఆϑΝΠϧͰ͋Δɺ postgresql.confͷઃఆʹ͍ͭͯղઆ͠·͢ɻ PostgreSQLͷ಺෦ߏ଄ (σʔλϕʔεߏ଄) postgresϓϩηε σʔλϕʔεΫϥελ ઃఆϑΝΠϧ ɾpostgresql.conf ɾpg_hba.conf ͳͲ σʔλϕʔε εΩʔϚ Ϣʔβʔ ɾpostgres ͳͲ ςʔϒϧ ͳͲ

Slide 7

Slide 7 text

PostgreSQLͷ಺෦ߏ଄ (ϓϩηεߏ੒) postgres (όοΫΤϯυϓϩηε) postgres (ϥΠλʔ) postgres (νΣοΫϙΠϯλʔ) postgres (౷ܭ৘ใίϨΫλʔ) postgres (ࣗಈόΩϡʔϜϥϯνϟʔ) postgres (ࣗಈόΩϡʔϜϫʔΧʔ) postgres (WALϥΠλʔ) postgres (Ϛελʔαʔόʔϓϩηε) WALόοϑΝʔ WALϑΝΠϧ σʔλϑΝΠϧ ڞ༗όοϑΝʔ ౷ܭ৘ใ ىಈ࣌ʹϓϩηεΛϑΥʔΫ ઀ଓཁٻ͝ͱʹϓϩηεΛϑΥʔΫ ࣗಈόΩϡʔϜΛܖػʹϓϩηεΛϑΥʔΫ

Slide 8

Slide 8 text

PostgreSQLͷ಺෦ߏ଄ (ϝϞϦʔߏ੒) ϓϩηεϝϞϦʔ όοΫΤϯυϓϩηε Ұ࣌όοϑΝʔ (temp_buffers) ࡞ۀϝϞϦʔ (work_mem) ϝϯςφϯε༻࡞ۀϝϞϦʔ (maintenance_work_mem) ڞ༗ϝϞϦʔ WALόοϑΝʔ (wal_buffers) ڞ༗όοϑΝʔ (shard_buffers) σʔλϑΝΠϧ WALϑΝΠϧ WALϥΠλʔϓϩηε όΩϡʔϜϫʔΧʔϓϩηε ۭ͖ྖҬϚοϓ ՄࢹੑϚοϓ ϥΠλʔ/ νΣοΫϙΠϯλʔϓϩηε

Slide 9

Slide 9 text

postgresql.confʹ͍ͭͯ(1/3) postgresql.conf͸ɺPostgreSQLͷઃఆϑΝΠϧͱͳΓ·͢ɻ postgresql.confͱpostgresql.auto.confͷ̎छྨ͕ଘࡏ͠·͢ɻ ͸͡Ίʹpostgresql.conf͕ಡΈࠐ·Εͨޙʹ postgresql.auto.conf͕ಡΈࠐ·Ε·͢ɻ postgresql.auto.conf͸ɺϑΝΠϧࣗମΛ௚઀৮Δ͜ͱ͸ग़དྷ·ͤΜɻ ALTER SYSTEMจͰมߋͨ͠৔߹ʹॻ͖ࠐΈ͞Ε·͢ɻ ྫ) ALTER SYSTEM SET wal_level = hot_standby; ·ͨɺSETจͰҰ࣌มߋͰ͖Δύϥϝʔλʔ΋ଘࡏ͠·͢ɻ ྫ) SET enable_seqscan = off;

Slide 10

Slide 10 text

postgresql.confʹ͍ͭͯ(2/3) ઃఆ஋͸ɺҎԼͷSQLͰ֬ೝ͢Δ͜ͱ͕ՄೳͰ͢ɻ SELECT name, setting, context FROM pg_settings; ग़ྗ஋͸ҎԼͷ௨ΓͱͳΓ·͢ɻ name ύϥϝʔλʔ໊ setting ݱࡏͷઃఆ஋ content ύϥϝʔλʔ͕༗ޮͱͳΔλΠϛϯά ɾinternal: ઃఆ஋Λมߋ͢Δ͜ͱ͸Ͱ͖·ͤΜɻ ɾpostmaster: αʔόʔىಈ࣌ͷΈมߋ͕ՄೳͰ͢ɻ ɾsighup: αʔόʔϦϩʔυͰมߋ͕ՄೳͰ͢ɻ ɾsuperuser: εʔύʔϢʔβʔͷΈมߋͰ͖ଈ࣌൓ө͞Ε·͢ɻ ɾuser: શϢʔβʔͰมߋͰ͖ଈ࣌൓ө͞Ε·͢ɻ

Slide 11

Slide 11 text

postgresql.confʹ͍ͭͯ(3/3) postgresql.confͷҰ෦ͷ ஋͸ɺPGTune ( https://pgtune.leopard.in.ua/ ) ɹ Ͱαʔόʔ؀ڥʹ߹Θͤ ͨࢀߟ஋Λੜ੒͢Δ͜ͱ ͕ग़དྷ·͢ɻ

Slide 12

Slide 12 text

઀ଓઃఆɾػೳઃఆ(1/22) ઀ଓʹ࢖༻͢Δઃఆ΍ɺSQLͷղੳ࣌ʹ࢖༻͢ΔεΩϟϯઃఆͳͲΛղઆ ͠·͢ɻ ೝূ৘ใʹ͍ͭͯ͸OS΍ଞαʔόʔ͕བྷΉઃఆ͕ଟ਺ଘࡏ͢ΔͨΊղઆ͸ ߦ͍·ͤΜɻ ެࣜυΩϡϝϯτΛ͝ࢀর͍ͩ͘͞ɻ https://www.postgresql.jp/document/current/html/runtime-config- connection.html

Slide 13

Slide 13 text

઀ଓઃఆɾػೳઃఆ(2/22) ύϥϝʔλʔ໊ listen_addresses ൓ө(ର৅) ཁϦελʔτ σϑΥϧτ஋ localhost ղઆ ઀ଓΛڐՄ͢ΔTCP/IPΞυϨεΛࢦఆ͠·͢ɻ “*”͸͢΂ͯͷ઀ଓΛڐՄ͠·͢ɻ ͜͜Ͱ͸͢΂ͯͷ઀ଓΛڐՄ͠ɺผઃఆϑΝΠϧͷ pg_hba.confϑΝΠϧͰࡉ͔͘ઃఆ͢Δ͜ͱΛਪ঑͠ ·͢ɻ ਪ঑஋ *

Slide 14

Slide 14 text

઀ଓઃఆɾػೳઃఆ(3/22) ύϥϝʔλʔ໊ port ൓ө(ର৅) ཁϦελʔτ σϑΥϧτ஋ 5432 ղઆ ΫϥΠΞϯτ͔Βαʔόʔʹ઀ଓ͢Δࡍʹ࢖༻͢Δ ϙʔτ൪߸Ͱ͢ɻ σʔλϕʔεΫϥελͰϙʔτ൪߸͕ڞ༗͞Ε·͢ɻ 1ͭͷαʔόʔʹෳ਺ͷσʔλϕʔεΫϥελΛ࡞੒͢ Δࡍ͸ɺมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ 5432(มߋͳ͠)

Slide 15

Slide 15 text

઀ଓઃఆɾػೳઃఆ(4/22) ύϥϝʔλʔ໊ max_connections ൓ө(ର৅) ཁϦελʔτ σϑΥϧτ஋ 100 ղઆ αʔόʔʹ઀ଓͰ͖Δ࠷େηογϣϯ਺Ͱ͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ͳ͓ɺҰൠϢʔβʔ͕઀ଓͰ͖Δ਺͸ɺޙड़ͷ superuser_reserved_connectionsΛࠩ͠Ҿ͍ͨ਺ͱͳ Γ·͢ɻ ਪ঑஋ 100(มߋͳ͠)

Slide 16

Slide 16 text

઀ଓઃఆɾػೳઃఆ(5/22) ύϥϝʔλʔ໊ superuser_reserved_connections ൓ө(ର৅) ཁϦελʔτ σϑΥϧτ஋ 3 ղઆ αʔόʔʹ઀ଓͰ͖ΔεʔύʔϢʔβʔͷ࠷େηογϣ ϯ਺Ͱ͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ 3(มߋͳ͠)

Slide 17

Slide 17 text

઀ଓઃఆɾػೳઃఆ(6/22) ύϥϝʔλʔ໊ max_prepared_transactions ൓ө(ର৅) ཁϦελʔτ σϑΥϧτ஋ 0 ղઆ ೋ૚ίϛοτ༻τϥϯβΫγϣϯͷ࠷େ਺Ͱ͢ɻ “0”ͷ৔߹͸ೋ૚ίϛοτػೳ͕ແޮԽ͞Ε·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ 0(มߋͳ͠)

Slide 18

Slide 18 text

઀ଓઃఆɾػೳઃఆ(7/22) ύϥϝʔλʔ໊ db_user_namespace ൓ө(ର৅) ཁϦϩʔυ σϑΥϧτ஋ off ղઆ PostgreSQLͷϢʔβʔ৘ใ͸ɺσʔλϕʔεΫϥελ Ͱڞ༗͞Ε͍ͯ·͕͢ɺ͜ͷύϥʔϝʔλʔΛonʹ͢ Δ͜ͱͰɺσʔλϕʔε͝ͱʹϢʔβʔ৘ใΛઃఆ͢Δ ͜ͱ͕ՄೳͱͳΓ·͢ɻ Ϣʔβʔͷ࡞੒͸ɺusername@dbnameͷΑ͏ʹͳΓ ·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ off(มߋͳ͠)

Slide 19

Slide 19 text

઀ଓઃఆɾػೳઃఆ(8/22) ύϥϝʔλʔ໊ default_transaction_isolation ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ read committed ղઆ SQLτϥϯβΫγϣϯϨϕϧΛઃఆ͠·͢ɻ ҎԼͷઃఆ஋͕ଘࡏ͠·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ɾread uncommitted ɾread committed ɾrepeatable read ɾserializable ਪ঑஋ read committed(มߋͳ͠)

Slide 20

Slide 20 text

઀ଓઃఆɾػೳઃఆ(9/22) ύϥϝʔλʔ໊ timezone ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ GMT ղઆ ࣌ؒදࣔ࣌ɺλΠϜελϯϓղऍ࣌ͷλΠϜκʔϯΛઃ ఆ͠·͢ɻ initdbͰࢦఆͨ͠ϩέʔϧʹΑΓมΘΓ·͢ɻ ϩέʔϧ͕“C”ͷ৔߹͸ɺ“GMT”ͱͳΓ·͢ɻ ਪ঑஋ Japan

Slide 21

Slide 21 text

઀ଓઃఆɾػೳઃఆ(10/22) ύϥϝʔλʔ໊ lc_messages ൓ө(ର৅) ଈ࣌൓ө(εʔύʔϢʔβʔ) σϑΥϧτ஋ C ղઆ දࣔ͢ΔϝοηʔδͷݴޠΛઃఆ͠·͢ɻ ࢖༻Ͱ͖Δݴޠ͸γεςϜʹґଘ͠·͢ɻ initdbͰࢦఆͨ͠ϩέʔϧʹΑΓมΘΓ·͢ɻ ϩέʔϧ͕“C”ͷ৔߹͸ɺ“C”ͱͳΓ·͢ɻ (“C”ͱ͸σϑΥϧτઃఆͱ͍͏ҙຯͰ͢ɻͭ·Γӳޠͱͳ Γ·͢ɻ) ਪ঑஋ ja_JP.UTF-8

Slide 22

Slide 22 text

઀ଓઃఆɾػೳઃఆ(11/22) ύϥϝʔλʔ໊ lc_monetary, lc_numeric, lc_time ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ C ղઆ ௨աॻࣜɺ਺஋ͷॻࣜɺ೔࣌ॻࣜΛઃఆ͠·͢ɻ ࢖༻Ͱ͖Δݴޠ͸γεςϜʹґଘ͠·͢ɻ initdbͰࢦఆͨ͠ϩέʔϧʹΑΓมΘΓ·͢ɻ ϩέʔϧ͕“C”ͷ৔߹͸ɺ“C”ͱͳΓ·͢ɻ ਪ঑஋ ja_JP.UTF-8

Slide 23

Slide 23 text

ύϥϝʔλʔ໊ datestyle ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ iso, mdy ղઆ ೔෇࣌ࠁͷॻࣜ(ग़ྗॻࣜ)ͱɺᐆດͳ೔෇ೖྗͷղऍن ଇ(೥/݄/೔ͷॱংͷೖग़ྗࢦఆ)Λઃఆ͠·͢ɻ ਪ঑஋ iso, ymd ઀ଓઃఆɾػೳઃఆ(12/22)

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

઀ଓઃఆɾػೳઃఆ(15/22) ύϥϝʔλʔ໊ archive_timeout ൓ө(ର৅) ཁϦϩʔυ σϑΥϧτ஋ 0 ղઆ WALϑΝΠϧηάϝϯτΛΞʔΧΠϒ͢Δ·Ͱͷ࣌ؒ Λࢦఆ͠·͢ɻ ඵ਺Ͱࢦఆ͠ɺ0ͷ৔߹͸ແޮԽ͞Ε·͢ɻ ஋Λখ͗͘͢͞͠ΔͱΞʔΧΠϒϑΝΠϧͷංେԽʹ ܨ͕ΔͨΊɺ60sҎ্ͷ஋Λࢦఆ͢ΔΑ͏ʹͯͩ͘͠͞ ͍ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ 0(มߋͳ͠)

Slide 27

Slide 27 text

઀ଓઃఆɾػೳઃఆ(16/22) ύϥϝʔλʔ໊ enable_material ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ on ղઆ ΦϓςΟϚΠβʔ͕࢖༻͢ΔϚςϦΞϥΠζϊʔυͷ ༗ޮແޮΛઃఆ͠·͢ɻ ※ϚςϦΞϧ͸ɺԼҐϊʔυͷ৘ใΛϑΝΠϧʹ ॻ͖ग़্ͯ͠Ґϊʔυ΁৘ใΛ౉͢ࡍʹ ࢖༻͞Ε·͢ɻ ਪ঑஋ on(มߋͳ͠)

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

઀ଓઃఆɾػೳઃఆ(22/22) ύϥϝʔλʔ໊ jit ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ off ղઆ PostgreSQL11Ͱ௥Ճ͞Εͨ৽ػೳͰ͋ΔɺJIT(Just In Time)ίϯύΠϧΛ༗ޮԽ͠·͢ɻ PostgreSQL11Ͱ௥Ճ͞Εͨ৽ύϥϝʔλʔͰ͢ɻ WHERE۟΍ूܭͳͲͰ࢖༻͞Ε·͕͢ɺ·ͩ҆ఆԽ͠ ͍ͯͳ͍Α͏ͰɺσϑΥϧτͰແޮԽ͞Ε͍ͯ·͢ɻ ਪ঑஋ off(มߋͳ͠)

Slide 34

Slide 34 text

ϨϓϦέʔγϣϯ(1/17) PostgreSQLͷϨϓϦέʔγϣϯͷઃఆʹ͍ͭͯղઆ͠·͢ɻ PostgreSQL͸ɺετϦʔϛϯάϨϓϦέʔγϣϯͱϩδΧϧϨϓϦέʔγϣϯͷ2ͭΛ ఏڙ͍ͯ͠·͢ɻ ετϦʔϛϯάϨϓϦέʔγϣϯ͸ɺWAL(Write Ahead Logging)Λwalsenderϓϩηε ͕εϨʔϒαʔόʔ΁࿈ܞ͠ɺεϨʔϒαʔόʔͷwalreceiver͕ड৴ͯ͠ϨϓϦέʔ γϣϯΛఏڙ͠·͢ɻ ϩδΧϧϨϓϦέʔγϣϯ͸ɺϓϥΠϚϦʔαʔόʔ͕WALΛϩδΧϧσίʔσΟϯά ͱݺ͹ΕΔػೳͰϩδΧϧϨϓϦέʔγϣϯͷϓϩτίϧʹม׵͠ɺwalsenderϓϩη ε͕εϨʔϒαʔόʔ΁࿈ܞ͠·͢ɻεϨʔϒαʔόʔ͸ɺόοΫάϥ΢ϯυϫʔΧʔ ͕ड৴ͯ͠ϨϓϦέʔγϣϯΛఏڙ͠·͢ɻ ৄ͘͠͸ɺϨϓϦέʔγϣϯͷղઆεϥΠυΛ͝ࢀর͍ͩ͘͞ɻ https://www.slideshare.net/masahikosawada98/postgresql-86891271

Slide 35

Slide 35 text

ύϥϝʔλʔ໊ wal_level ൓ө(ର৅) ཁϦελʔτ σϑΥϧτ஋ replica ղઆ WALʹอ࣋͢Δ৘ใྔΛઃఆ͠·͢ɻ ҎԼͷઃఆ஋͕ଘࡏ͠·͢ɻ ͳ͓ɺ্ҐϨϕϧ͸ԼҐϨϕϧͷ৘ใΛαϙʔτ͠·͢ɻ ɾminimal: Ϋϥογϡ࣌΍ଈ࣌ఀࢭ͔Βͷ෮ؼʹ ඞཁͳ৘ใͷΈอ࣋͠·͢ɻ ɾreplica: WALΞʔΧΠϒ͓ΑͼετϦʔϛϯά ϨϓϦέʔγϣϯʹඞཁͳ৘ใΛอ࣋͠·͢ɻ ɾlogical: ϩδΧϧσίʔσΟϯάʹඞཁͳ৘ใΛอ࣋͠·͢ɻ ਪ঑஋ logical ϨϓϦέʔγϣϯ(2/17)

Slide 36

Slide 36 text

ύϥϝʔλʔ໊ max_wal_senders ൓ө(ର৅) ཁϦελʔτ σϑΥϧτ஋ 10 ղઆ εϨʔϒαʔόʔ͔Βͷಉ࣌઀ଓ࠷େ਺Λࢦఆ͠·͢ɻ 0ͷ৔߹͸ϨϓϦέʔγϣϯ͕ແޮԽ͞Ε·͢ɻ ૯઀ଓ਺ʹΧ΢ϯτ͞ΕΔͨΊɺmax_connectionsͷ஋ Ҏ্ʹઃఆ͢Δ͜ͱ͸Ͱ͖·ͤΜɻ ϚελʔʹઃఆΛߦ͍·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ (ετϦʔϛϯάϨϓϦέʔγϣϯͷεϨʔϒ਺ + ϩδΧϧϨϓϦέʔγϣϯͷαϒεΫϦϓγϣϯ਺ * 2) + 1 ϨϓϦέʔγϣϯ(3/17)

Slide 37

Slide 37 text

ύϥϝʔλʔ໊ max_replication_slots ൓ө(ର৅) ཁϦελʔτ σϑΥϧτ஋ 10 ղઆ αʔόʔ͕࡞੒Ͱ͖ΔϨϓϦέʔγϣϯεϩοτͷ࠷େ ਺Λࢦఆ͠·͢ɻ ϚελʔɾεϨʔϒڞʹઃఆΛߦ͍·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ※ϨϓϦέʔγϣϯεϩοτ͸ɺ εϨʔϒͷঢ়ଶΛϚελʔ͕؅ཧ͢ΔͨΊͷػೳͰ͢ɻ ਪ঑஋ ϩδΧϧϨϓϦέʔγϣϯͷαϒεΫϦϓγϣϯ਺ * 2 + ετϦʔϛϯάϨϓϦέʔγϣϯͰ࡞੒͢ΔϨϓϦέʔγϣϯεϩοτͷ਺ ϨϓϦέʔγϣϯ(4/17)

Slide 38

Slide 38 text

ύϥϝʔλʔ໊ track_commit_timestamp ൓ө(ର৅) ཁϦελʔτ σϑΥϧτ஋ off ղઆ τϥϯβΫγϣϯͷίϛοτλΠϜΛه࿥͠·͢ɻ ϚελʔɾεϨʔϒڞʹઃఆΛߦ͍·͢ɻ ਪ঑஋ on ϨϓϦέʔγϣϯ(5/17)

Slide 39

Slide 39 text

ύϥϝʔλʔ໊ wal_sender_timeout ൓ө(ର৅) ཁϦϩʔυ σϑΥϧτ஋ 60s ղઆ ࢦఆͨ࣌ؒ͠ΑΓ௕͘εϨʔϒ͔ΒͷԠ౴͕ͳ͍৔߹͸ ϨϓϦέʔγϣϯ઀ଓΛఀࢭ͠·͢ɻ ϛϦඵ୯ҐͰࢦఆ͕ՄೳͰ͢ɻ 0ͷ৔߹͸λΠϜΞ΢τػೳΛແޮԽ͠·͢ɻ ϚελʔʹઃఆΛߦ͍·͢ɻ ؀ڥʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ 60s(มߋͳ͠) ϨϓϦέʔγϣϯ(6/17)

Slide 40

Slide 40 text

ύϥϝʔλʔ໊ synchronous_standby_names ൓ө(ର৅) ཁϦϩʔυ σϑΥϧτ஋ ’’(ۭന) ղઆ ಉظ͢ΔεϨʔϒ໊ΛΧϯϚ۠੾ΓͰઃఆ͠·͢ɻ “*”Λઃఆ͢Δͱɺ͢΂ͯͷεϨʔϒ͕ର৅ͱͳΓ·͢ɻ ਖ਼֬ͳॻࣜʹ͍ͭͯ͸ɺެࣜυΩϡϝϯτΛ͝ࢀরͩ͘ ͍͞ɻ https://www.postgresql.jp/document/current/html/runtime- config-replication.html ϚελʔʹઃఆΛߦ͍·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ ’’(ۭന) ϨϓϦέʔγϣϯ(7/17)

Slide 41

Slide 41 text

ύϥϝʔλʔ໊ vacuum_defer_cleanup_age ൓ө(ର৅) ཁϦϩʔυ σϑΥϧτ஋ 0 ղઆ VACUUM΍HOTͰɺෆཁߦͷ࡟আ஗ԆΛߦ͏τϥϯβΫ γϣϯ਺Λࢦఆ͠·͢ɻ 0͸ଈ࠲ʹ࡟আ͞Ε·͢ɻ εϨʔϒͰίϯϑϦΫτ͕සൟʹൃੜ͢Δ৔߹͸ɺύϥ ϝʔλʔͷௐ੔Λߦͳ͍ͬͯͩ͘͞ɻ ϚελʔʹઃఆΛߦ͍·͢ɻ ؀ڥʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ 0(มߋͳ͠) ϨϓϦέʔγϣϯ(8/17)

Slide 42

Slide 42 text

ύϥϝʔλʔ໊ hot_standby ൓ө(ର৅) ཁϦελʔτ σϑΥϧτ஋ on ղઆ εϨʔϒʹରͯ͠ͷ໰͍߹ΘͤΛ༗ޮԽ͠·͢ɻ εϨʔϒʹઃఆΛߦ͍·͢ɻ ਪ঑஋ on(มߋͳ͠) ϨϓϦέʔγϣϯ(9/17)

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

ύϥϝʔλʔ໊ wal_receiver_status_interval ൓ө(ର৅) ཁϦϩʔυ σϑΥϧτ஋ 10s ղઆ ελϯόΠ͕WALͷड৴ਐḿঢ়ଶΛϓϥΠϚϦʔʹૹ৴ ͢Δִؒͷ࠷খ࣌ؒΛઃఆ͠·͢ɻ ϛϦඵ୯ҐͰࢦఆ͕ՄೳͰ͢ɻ wal_sender_timeoutΑΓখ͍͞஋Λઃఆ͍ͯͩ͘͠͞ɻ εϨʔϒʹઃఆΛߦ͍·͢ɻ ؀ڥʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ 10s(มߋͳ͠) ϨϓϦέʔγϣϯ(12/17)

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

ύϥϝʔλʔ໊ wal_receiver_timeout ൓ө(ର৅) ཁϦϩʔυ σϑΥϧτ஋ 60s ղઆ ࢦఆͨ࣌ؒ͠ΑΓ௕͘ϓϥΠϚϦʔ͔ΒͷԠ౴͕ͳ͍৔ ߹͸ϨϓϦέʔγϣϯ઀ଓΛఀࢭ͠·͢ɻ ϛϦඵ୯ҐͰࢦఆ͕ՄೳͰ͢ɻ 0ͷ৔߹͸λΠϜΞ΢τػೳΛແޮԽ͠·͢ɻ εϨʔϒʹઃఆΛߦ͍·͢ɻ ؀ڥʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ 60s(มߋͳ͠) ϨϓϦέʔγϣϯ(14/17)

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

ύϥϝʔλʔ໊ max_logical_replication_workers ൓ө(ର৅) ཁϦελʔτ σϑΥϧτ஋ 4 ղઆ ϩδΧϧϨϓϦέʔγϣϯͷϫʔΧʔ࠷େ਺Λࢦఆ͠· ͢ɻ దԠϫʔΧʔͱςʔϒϧಉظϫʔΧʔͷ྆ํؚ͕·Ε· ͢ɻ max_worker_processesͷ஋Λڞ༗͠·͢ɻ Ϛελʔ(ύϒϦογϟʔ)ʹઃఆΛߦ͍·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ 2(มߋͳ͠) ϨϓϦέʔγϣϯ(16/17)

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

؂ࢹؔ܎(1/18) PostgreSQL͸ͷ؂ࢹ(ϩά)ؔ܎ͷઃఆʹ͍ͭͯղઆ͠·͢ɻ %Τεέʔϓ͕ଟ਺ଘࡏ͠·͕͢ɺ͜͜Ͱ͸ղઆΛߦ͍·ͤΜɻ ৄ͘͠͸ɺެࣜυΩϡϝϯτΛࢀর͍ͯͩ͘͠͞ɻ https://www.postgresql.jp/document/current/html/runtime-config- logging.html

Slide 52

Slide 52 text

ύϥϝʔλʔ໊ log_destination ൓ө(ର৅) ཁϦϩʔυ σϑΥϧτ஋ stderr ղઆ αʔόʔͷϩάग़ྗઌΛઃఆ͠·͢ɻ ड͚෇͚Δ஋͸ɺ“stderr”ɺ“csvlog”ɺ “syslog”ɺ“eventlog”ͱͳΓ·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ stderr(มߋͳ͠) ؂ࢹؔ܎(2/18)

Slide 53

Slide 53 text

ύϥϝʔλʔ໊ logging_collector ൓ө(ର৅) ཁϦελʔτ σϑΥϧτ஋ off ղઆ ඪ४Τϥʔ·ͨ͸CSVॻࣜͷϩάग़ྗʹૹΒΕΔϝοη ʔδΛऔΓग़͠ɺϩάϑΝΠϧʹϦμΠϨΫτ͠·͢ɻ ͜ͷػೳ͕༗ޮͰͳ͍ͱɺϩάϑΝΠϧ͸࡞੒͞Ε·ͤ Μɻ ਪ঑஋ on ؂ࢹؔ܎(3/18)

Slide 54

Slide 54 text

ύϥϝʔλʔ໊ log_directory ൓ө(ର৅) ཁϦϩʔυ σϑΥϧτ஋ log ղઆ αʔόʔͷϩάϑΝΠϧग़ྗઌΛઃఆ͠·͢ɻ σϑΥϧτ஋͸૬ରύεͱͳ͓ͬͯΓɺઈରύεʹม׵ ͢Δͱ“$PGDATA/log”ͱͳΓ·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ /var/log/pgsql ؂ࢹؔ܎(4/18)

Slide 55

Slide 55 text

ύϥϝʔλʔ໊ log_filename ൓ө(ର৅) ཁϦϩʔυ σϑΥϧτ஋ postgresql-%Y-%m-%d_%H%M%S.log ղઆ ϩάϑΝΠϧͷϑΝΠϧ໊Λઃఆ͠·͢ɻ CSVग़ྗͷ৔߹͸ɺλΠϜελϯϓ෇͖ͷϩάϑΝΠϧ ໊ʹ.csvΛ෇༩ͨ͠ϑΝΠϧ໊͕࡞੒͞Ε·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ postgresql%Y%m%d.log ؂ࢹؔ܎(5/18)

Slide 56

Slide 56 text

ύϥϝʔλʔ໊ log_file_mode ൓ө(ର৅) ཁϦϩʔυ σϑΥϧτ஋ 0600 ղઆ ϩάϑΝΠϧͷύʔϛογϣϯΛઃఆ͠·͢ɻ Windowsͷ৔߹͸ແࢹ͞Ε·͢ɻ chmod͓ΑͼumaskγεςϜίʔϧͷ਺஋ϞʔυͰهड़ ͠·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ 0600(มߋͳ͠) ؂ࢹؔ܎(6/18)

Slide 57

Slide 57 text

ύϥϝʔλʔ໊ log_rotation_age ൓ө(ର৅) ཁϦϩʔυ σϑΥϧτ஋ 1d ղઆ ϩάϑΝΠϧͷ࠷େण໋Λઃఆ͠·͢ɻ ࢦఆ͕࣌ؒܦա͢Δͱɺ৽͍͠ϑΝΠϧʹϩά͕ੜ੒͞ Ε·͢ɻ “0”ͷ࣌͸ɺ࣌ؒʹΑΔϑΝΠϧͷੜ੒͕ແޮͱͳΓ· ͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ 1d(มߋͳ͠) ؂ࢹؔ܎(7/18)

Slide 58

Slide 58 text

ύϥϝʔλʔ໊ log_rotation_size ൓ө(ର৅) ཁϦϩʔυ σϑΥϧτ஋ 10MB ղઆ ϩάϑΝΠϧͷ࠷େ༰ྔΛઃఆ͠·͢ɻ ࢦఆ༰ྔΛΦʔόʔ͢Δͱɺ৽͍͠ϑΝΠϧʹϩά͕ੜ ੒͞Ε·͢ɻ “0”ͷ࣌͸ɺ༰ྔʹΑΔϑΝΠϧͷੜ੒͕ແޮͱͳΓ· ͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ 0 ؂ࢹؔ܎(8/18)

Slide 59

Slide 59 text

ύϥϝʔλʔ໊ log_truncate_on_rotation ൓ө(ର৅) ཁϦϩʔυ σϑΥϧτ஋ off ղઆ ϩάϑΝΠϧͷ্ॻ͖Λઃఆ͠·͢ɻ ϩάϑΝΠϧͷϩʔςʔγϣϯ࣌ʹɺಉ͡ϑΝΠϧ໊͕ طʹଘࡏ͍ͯ͠Δͱ্ॻ͖͠·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ on ؂ࢹؔ܎(9/18)

Slide 60

Slide 60 text

ύϥϝʔλʔ໊ event_source ൓ө(ର৅) ཁϦελʔτ σϑΥϧτ஋ PostgreSQL ղઆ Πϕϯτϩά΁ͷग़ྗ࣌ʹ࢖༻͞ΕΔϓϩάϥϜ໊Λઃ ఆ͠·͢ɻ WindowsͷΈ༗ޮͱͳΓ·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ PostgreSQL(มߋͳ͠) ؂ࢹؔ܎(10/18)

Slide 61

Slide 61 text

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

Slide 62

Slide 62 text

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

Slide 63

Slide 63 text

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

Slide 64

Slide 64 text

ύϥϝʔλʔ໊ log_min_duration_statement ൓ө(ର৅) ଈ࣌൓ө(εʔύʔϢʔβʔ) σϑΥϧτ஋ -1 ղઆ ࣮ߦ͕࣌ؒ௕͍SQLจΛϩάग़ྗ͢ΔͨΊͷ࠷খ࣌ؒΛ ઃఆ͠·͢ɻ ϛϦඵ୯ҐͰࢦఆ͕ՄೳͰ͢ɻ “0”ͷ৔߹͸શͯग़ྗ͞Εɺ“-1”ͷ৔߹͸ग़ྗ͕ແޮԽ͞ Ε·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ 3s ؂ࢹؔ܎(14/18)

Slide 65

Slide 65 text

ύϥϝʔλʔ໊ debug_print_parse, debug_print_rewritten, debug_print_plan ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ off ղઆ σόοά৘ใͷग़ྗͷ༗ޮແޮΛઃఆ͠·͢ɻ ༗ޮԽ͢Δ͜ͱͰɺνϡʔχϯάʹ༗ޮͳ৘ใ͕ग़ྗ͞ ΕΔ͔΋͠Ε·ͤΜɻ ॱʹ“ղੳπϦʔ”ɺ“ϦϥΠλʔ৘ใ”ɺ “࣮ߦܭը”ͱͳΓ·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ off(มߋͳ͠) ؂ࢹؔ܎(15/18)

Slide 66

Slide 66 text

ύϥϝʔλʔ໊ log_hostname ൓ө(ର৅) ཁϦϩʔυ σϑΥϧτ஋ off ղઆ ϩάग़ྗʹΫϥΠΞϯτͷϗετ໊Λग़ྗ͢ΔઃఆΛߦ ͍·͢ɻ ϗετ໊ͷ໊લղܾΛߦ͏ͨΊɺஶ͍͠ੑೳྼԽ͕ൃੜ ͢ΔՄೳੑ͕͋Γ·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ off(มߋͳ͠) ؂ࢹؔ܎(16/18)

Slide 67

Slide 67 text

ύϥϝʔλʔ໊ 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)

Slide 68

Slide 68 text

ύϥϝʔλʔ໊ log_timezone ൓ө(ର৅) ཁϦϩʔυ σϑΥϧτ஋ GMT ղઆ ϩάग़ྗ࣌ͷλΠϜκʔϯΛઃఆ͠·͢ɻ initdbͰࢦఆͨ͠ϩέʔϧʹΑΓมΘΓ·͢ɻ ϩέʔϧ͕“C”ͷ৔߹͸ɺ“GMT”ͱͳΓ·͢ɻ ਪ঑஋ Japan ؂ࢹؔ܎(18/18)

Slide 69

Slide 69 text

νϡʔχϯά(1/46) PostgreSQLͷνϡʔχϯά͸؀ڥ΍σʔλྔɺ࢖༻༻్ʹ߹Θͤͯઃఆ͢ Δඞཁ͕͋Γ·͢ɻ ݟੵ΋Γ࣌ʹࡉ͔͘ݕ౼Λߦ͍ͬͯͯ΋ɺ௕ظӡ༻͍ͯ͠Δͱੑೳ͕௿Լ ͢Δ͜ͱ͕͋ΔͨΊɺαʔόʔঢ়ଶΛ֬ೝͯ͠νϡʔχϯάΛߦ͏ඞཁ͕ ͋Γ·͢ɻ

Slide 70

Slide 70 text

ύϥϝʔλʔ໊ 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)

Slide 71

Slide 71 text

ύϥϝʔλʔ໊ temp_buffers ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ 8MB ղઆ ηογϣϯதʹ࢖༻͞ΕΔҰ࣌όοϑΝʔͷαΠζΛઃ ఆ͠·͢ɻ Ұ࣌όοϑΝʔΛଟ͘࢖༻͢Δ৔߹͸มߋ͠·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ 8MB(มߋͳ͠) νϡʔχϯά(3/46)

Slide 72

Slide 72 text

ύϥϝʔλʔ໊ work_mem ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ 4MB ղઆ ηογϣϯதͷιʔτ΍ϋογϡૢ࡞Ͱ࢖༻͢ΔϝϞϦʔͷα ΠζΛઃఆ͠·͢ɻ େ͖͘͢Δ͜ͱͰ໰͍߹Θͤੑೳ͕޲্͠·͕͢ɺෳࡶͳ໰͍ ߹Θͤͷ৔߹͸work_memͷ਺ഒ࢖༻͞ΕΔ͜ͱ͕͋Γ·͢ɻ ·ͨɺηογϣϯ୯ҐʹඞཁͱͳΔͨΊϝϞϦʔ؅ཧʹؾΛͭ ͚͍ͯͩ͘͞ɻ (γεςϜϝϞϦʔ - shared_buffers) / max_connectionsҎ্ͷ৔ ߹͸εϫοϓ͠ɺੑೳ͕௿Լ͠·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ 4MB(มߋͳ͠) νϡʔχϯά(4/46)

Slide 73

Slide 73 text

ύϥϝʔλʔ໊ maintenance_work_mem ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ 64MB ղઆ όΩϡʔϜ΍ΠϯσοΫε࡞੒ͳͲͷϝϯςφϯεૢ࡞ ࣌ʹ࢖༻͢ΔϝϞϦʔͷαΠζΛઃఆ͠·͢ɻ ࣗಈόΩϡʔϜ͕ಈ࡞ͨ͠৔߹ɺ autovacuum_max_workers * maintenance_work_mem ͷϝϞϦʔ͕࢖༻͞Ε·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ 64MB(มߋͳ͠) νϡʔχϯά(5/46)

Slide 74

Slide 74 text

ύϥϝʔλʔ໊ max_stack_depth ൓ө(ର৅) ଈ࣌൓ө(εʔύʔϢʔβʔ) σϑΥϧτ஋ 2MB ղઆ σʔλϕʔεαʔόʔͷ࣮ߦελοΫͷαΠζΛઃఆ͠· ͢ɻ Χʔωϧͷ࠷େελοΫ༰ྔ͔Β҆શ༨஍ͷͨΊͷ1MB Λࠩ͠Ҿ͍ͨ஋Λઃఆ͍ͯͩ͘͠͞ɻ Χʔωϧͷ੍ݶҎ্Λઃఆ͢ΔͱɺόοΫΤϯυϓϩη ε͕Ϋϥογϡ͢ΔڪΕ͕͋Γ·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ ulimit -sͷ݁Ռ(KB) - 1MB νϡʔχϯά(6/46)

Slide 75

Slide 75 text

ύϥϝʔλʔ໊ effective_io_concurrency ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ 1 ղઆ σʔλϕʔεαʔόʔͷಉ࣌σΟεΫI/Oૢ࡞਺Λઃఆ͠·͢ɻ “0”Λઃఆ͢ΔͱɺඇಉظI/OϦΫΤετ͕ແޮԽ͞Ε·͢ɻ HDDͷ৔߹͸ɺRAIDΛߏ੒͢ΔυϥΠϒ਺Λઃఆͯͩ͘͠͞ ͍ɻ ͨͩ͠ɺύϦςΟ༻͸আ֎͍ͯͩ͘͠͞ɻ SSDͷ৔߹͸ɺ਺ඦͷ஋͕࠷దͱߟ͑ΒΕ·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ HDD: RAIDΛߏ੒͢ΔυϥΠϒ਺(ύϦςΟ༻͸আ֎) SSD: 200 νϡʔχϯά(7/46)

Slide 76

Slide 76 text

ύϥϝʔλʔ໊ max_worker_processes ൓ө(ର৅) ཁϦελʔτ σϑΥϧτ஋ 8 ղઆ σʔλϕʔεαʔόʔͷόοΫάϥ΢ϯυϓϩηε਺Λ ઃఆ͠·͢ɻ εϨʔϒαʔόʔ͸ɺϚελʔαʔόʔͷઃఆ஋Ҏ্ઃ ఆ͍ͯͩ͘͠͞ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ CPUͷ෺ཧίΞ਺ νϡʔχϯά(8/46)

Slide 77

Slide 77 text

ύϥϝʔλʔ໊ max_parallel_maintenance_workers ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ 2 ղઆ 1ͭͷϢʔςΟϦςΟίϚϯυ͔ΒىಈͰ͖ΔฒྻϫʔΧ ʔ਺ͷ࠷େ஋Λઃఆ͠·͢ɻ ݱࡏ͸ɺBπϦʔΠϯσοΫε࡞੒࣌ͷΈ༗ޮͱͳΓ· ͢ɻ PostgreSQL11Ͱ௥Ճ͞Εͨ৽ύϥϝʔλʔͰ͢ɻ ਪ঑஋ 2(มߋͳ͠) νϡʔχϯά(9/46)

Slide 78

Slide 78 text

ύϥϝʔλʔ໊ max_parallel_workers_per_gather ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ 2 ղઆ 1ͭͷGather·ͨ͸Gather Mergeϊʔυʹରͯ͠ىಈͰ ͖ΔϫʔΧʔ਺ͷ࠷େ஋Λઃఆ͠·͢ɻ “0”Λઃఆ͢ΔͱύϥϨϧΫΤϦʔ͕࢖༻͞Εͳ͘ͳΓ· ͢ɻ max_parallel_workersͰϓʔϧ͞Εͨϓϩηε͔Βऔಘ ͞Ε·͢ɻ ਪ঑஋ CPUͷ෺ཧίΞ਺ / 2 νϡʔχϯά(10/46)

Slide 79

Slide 79 text

ύϥϝʔλʔ໊ max_parallel_workers ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ 8 ղઆ ύϥϨϧΫΤϦʔ༻ͷ࠷େϫʔΧʔ਺Λઃఆ͠·͢ɻ ͜ͷ஋͸ɺmax_worker_processesͷ஋ͷ੍ݶΛड͚· ͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ CPUͷ෺ཧίΞ਺ νϡʔχϯά(11/46)

Slide 80

Slide 80 text

ύϥϝʔλʔ໊ synchronous_commit ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ on ղઆ τϥϯβΫγϣϯͷίϛοτ͕ΫϥΠΞϯτʹ“׬ྃ”Λใࠂ͢ΔલʹWALϨ ίʔυ͕σΟεΫ্ʹॻ͖ࠐ·ΕΔ·Ͱ଴͔ͭͲ͏͔ͷઃఆΛߦ͍·͢ɻ ϨϓϦέʔγϣϯ࣌ʹ΋Өڹ͕͋Γɺઃఆ஋ͷҧ͍͸ҎԼͷ௨ΓͰ͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ on(มߋͳ͠) νϡʔχϯά(12/46) ઃఆ஋ ಉظ/ඇಉظ ϓϥΠϚϦʔ εϨʔϒ off ඇಉظ ଴ͨͳ͍ ଴ͨͳ͍ local ඇಉظ ଴ͭ ଴ͨͳ͍ remote_write ಉظ ଴ͭ ϝϞϦॻ͖ࠐΈ·Ͱ଴ͭ on ಉظ ଴ͭ σΟεΫॻ͖ࠐΈ·Ͱ଴ͭ remote_apply ಉظ ଴ͭ WALదԠ·Ͱ଴ͭ

Slide 81

Slide 81 text

ύϥϝʔλʔ໊ wal_buffers ൓ө(ର৅) ཁϦελʔτ σϑΥϧτ஋ -1 ղઆ σΟεΫʹॻ͖ࠐ·Ε͍ͯͳ͍WALσʔλ͕࢖༻͢Δڞ ༗ϝϞϦʔͷྔΛઃఆ͠·͢ɻ “-1”ͷ৔߹͸ɺshared_buffersͷ32෼ͷ1͕ઃఆ͞Ε· ͢ɻ shared_buffers͕େ͖͍৔߹ɺWALηάϝϯτͷେ͖͞ Ͱ͋Δ16MBΛ௒͑ΔՄೳੑ͕͋ΔͨΊɺ16MBΛઃఆ͠ ·͢ɻ ਪ঑஋ 16MB νϡʔχϯά(13/46)

Slide 82

Slide 82 text

ύϥϝʔλʔ໊ checkpoint_timeout ൓ө(ର৅) ཁϦϩʔυ σϑΥϧτ஋ 5min ղઆ WALνΣοΫϙΠϯτͷλΠϜΞ΢τ࣌ؒΛઃఆ͠· ͢ɻ ஋͕খ͗͢͞Δͱɺϩάʹϫʔχϯάϝοηʔδ͕ग़ྗ ͞Ε·͢ɻ ਪ঑஋ 30min νϡʔχϯά(14/46)

Slide 83

Slide 83 text

ύϥϝʔλʔ໊ checkpoint_completion_target ൓ө(ର৅) ཁϦϩʔυ σϑΥϧτ஋ 0.5 ղઆ ࣍ͷνΣοΫϙΠϯτ͕࣮ߦ͞ΕΔ·ͰͷؒʹͲΕ͘Β ͍ͷ࣌ؒΛֻ͚ͯॻ͖ग़͔͢Λઃఆ͠·͢ɻ ਪ঑஋ (checkpoint_timeout - 2min) / checkpoint_timeout νϡʔχϯά(15/46)

Slide 84

Slide 84 text

ύϥϝʔλʔ໊ max_wal_size ൓ө(ର৅) ཁϦϩʔυ σϑΥϧτ஋ 1GB ղઆ ࣍ͷνΣοΫϙΠϯτ͕࣮ࢪ͞ΕΔWALϑΝΠϧͷαΠ ζΛઃఆ͠·͢ɻ ιϑτϦϛοτͷͨΊɺ৚݅ʹΑͬͯ௒͑Δ͜ͱ͕͋Γ ·͢ɻ ߋ৽͕සൟʹى͜Δ৔߹ɺνΣοΫϙΠϯτ͕සൟʹൃ ੜ͢ΔͨΊੑೳ͕௿Լ͠·͢ɻ ϩάʹϫʔχϯά͕ग़͍ͯΔ৔߹͸มߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ 1GB(มߋແ͠) νϡʔχϯά(16/46)

Slide 85

Slide 85 text

ύϥϝʔλʔ໊ min_wal_size ൓ө(ର৅) ཁϦϩʔυ σϑΥϧτ஋ 80MB ղઆ WALϑΝΠϧͷ࠷খαΠζΛઃఆ͠·͢ɻ WALϑΝΠϧΛ࠶ར༻ɾ࡟আ͢Δࡍͷܭࢉࣜʹ΋࢖༻͞ Ε·͢ɻ ਪ঑஋ 80MB(มߋແ͠) νϡʔχϯά(17/46)

Slide 86

Slide 86 text

ύϥϝʔλʔ໊ seq_page_cost ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ 1.0 ղઆ σΟεΫ͔Β1ϖʔδ෼σʔλΛγʔέϯγϟϧʹऔಘ͢ ΔࡍͷɺϓϥϯφʔͷਪఆίετΛઃఆ͠·͢ɻ ਪ঑஋ 1.0(มߋແ͠) νϡʔχϯά(18/46)

Slide 87

Slide 87 text

ύϥϝʔλʔ໊ random_page_cost ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ 4.0 ղઆ σΟεΫ͔Β1ϖʔδ෼σʔλΛϥϯμϜʹऔಘ͢Δࡍ ͷɺϓϥϯφʔͷਪఆίετΛઃఆ͠·͢ɻ HDDΛج४ʹઃఆ͞Ε͍ͯ·͢ɻ γʔέϯγϟϧͱϥϯμϜΞΫηεεϐʔυ͕ಉ͡SSD ͷ৔߹͸ɺseq_page_costͷ஋ͱಉ͡ͱ͢Δ͜ͱͰߴ଎ ԽͰ͖·͢ɻ ਪ঑஋ HDD: 4.0(มߋແ͠) SSD: 1.0 νϡʔχϯά(19/46)

Slide 88

Slide 88 text

ύϥϝʔλʔ໊ cpu_tuple_cost ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ 0.01 ղઆ ໰͍߹Θͤ࣌ͷߦͷॲཧίετʹର͢Δɺϓϥϯφʔͷ ਪఆίετΛઃఆ͠·͢ɻ ਪ঑஋ 0.01(มߋແ͠) νϡʔχϯά(20/46)

Slide 89

Slide 89 text

ύϥϝʔλʔ໊ cpu_index_tuple_cost ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ 0.005 ղઆ ΠϯσοΫε૸ࠪ࣌ͷΠϯσοΫεߦͷॲཧίετʹର ͢Δɺϓϥϯφʔͷਪఆ஋Λઃఆ͠·͢ɻ ਪ঑஋ 0.005(มߋແ͠) νϡʔχϯά(21/46)

Slide 90

Slide 90 text

ύϥϝʔλʔ໊ cpu_operator_cost ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ 0.0025 ղઆ ໰͍߹Θͤ࣌ʹ࣮ߦ͞ΕΔ֤ԋࢉࢠ΍ؔ਺ͷॲཧίετ ʹର͢Δɺϓϥϯφʔͷਪఆ஋Λઃఆ͠·͢ɻ ਪ঑஋ 0.0025(มߋແ͠) νϡʔχϯά(22/46)

Slide 91

Slide 91 text

ύϥϝʔλʔ໊ parallel_tuple_cost ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ 0.1 ղઆ ύϥϨϧϫʔΧʔϓϩηε͔Βɺ1ߦΛଞͷϓϩηεʹస ૹ͢ΔͨΊͷίετʹର͢Δɺϓϥϯφʔͷਪఆ஋Λઃ ఆ͠·͢ɻ ਪ঑஋ 0.1(มߋແ͠) νϡʔχϯά(23/46)

Slide 92

Slide 92 text

ύϥϝʔλʔ໊ parallel_setup_cost ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ 1000.0 ղઆ ύϥϨϧϫʔΧʔϓϩηεΛىಈ͢ΔͨΊͷίετʹର ͢Δɺϓϥϯφʔͷਪఆ஋Λઃఆ͠·͢ɻ ਪ঑஋ 1000.0(มߋແ͠) νϡʔχϯά(24/46)

Slide 93

Slide 93 text

ύϥϝʔλʔ໊ jit_above_cost ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ 100000 ղઆ JITίϯύΠϧ͕༗ޮʹͳΔΫΤϦͷίετΛઃఆ͠· ͢ɻ JITͷىಈʹ͸͕͔͔࣌ؒΔͨΊɺ͙͢ʹ͸ىಈ͠ͳ͍Α ͏ʹͳ͍ͬͯ·͢ɻ “-1”Λઃఆ͢ΔͱJITίϯύΠϧ͕ແޮԽ͞Ε·͢ɻ ਪ঑஋ 100000(มߋແ͠) νϡʔχϯά(25/46)

Slide 94

Slide 94 text

ύϥϝʔλʔ໊ jit_inline_above_cost ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ 500000 ղઆ JITίϯύΠϧ͕ؔ਺΍ԋࢉࢠΛΠϯϥΠϯԽ͢Δ৔߹ͷ ΫΤϦίετΛઃఆ͠·͢ɻ “-1”Λઃఆ͢ΔͱJITίϯύΠϧʹΑΔΠϯϥΠϯԽ͕ແ ޮԽ͞Ε·͢ɻ ਪ঑஋ 500000(มߋແ͠) νϡʔχϯά(26/46)

Slide 95

Slide 95 text

ύϥϝʔλʔ໊ jit_optimize_above_cost ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ 500000 ղઆ JITίϯύΠϧͷ࠷దԽʹ͔͔ΔΫΤϦίετΛઃఆ͠· ͢ɻ “-1”Λઃఆ͢ΔͱJITίϯύΠϧͷ࠷దԽ͕ແޮԽ͞Ε· ͢ɻ ਪ঑஋ 500000(มߋແ͠) νϡʔχϯά(27/46)

Slide 96

Slide 96 text

ύϥϝʔλʔ໊ min_parallel_table_scan_size ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ 8MB ղઆ ύϥϨϧεΩϟϯΛߟྀ͢Δ࠷খͷςʔϒϧͷσʔλα ΠζΛઃఆ͠·͢ɻ ਪ঑஋ 8MB(มߋແ͠) νϡʔχϯά(28/46)

Slide 97

Slide 97 text

ύϥϝʔλʔ໊ min_parallel_index_scan_size ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ 512KB ղઆ ύϥϨϧεΩϟϯ࣮ߦ࣌ʹඞͣεΩϟϯ͢ΔΠϯσοΫ εσʔλͷ࠷খ஋Λઃఆ͠·͢ɻ ϓϥϯφʔͷίετਪఆ༻ͱͳΓ·͢ɻ ਪ঑஋ 512KB(มߋແ͠) νϡʔχϯά(29/46)

Slide 98

Slide 98 text

ύϥϝʔλʔ໊ effective_cache_size ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ 4GB ղઆ ໰͍߹Θͤ࣌ʹͲͷఔ౓Ωϟογϡώοτ͢Δ͔Λ༧ଌ ͢ΔͨΊͷΩϟογϡαΠζΛઃఆ͠·͢ɻ PostgreSQLͷڞ༗όοϑΝʔ͚ͩͰͳ͘ɺOSͷϑΝΠ ϧΩϟογϡ΍σΟεΫΩϟογϡ౳Λߟྀ͢Δඞཁ͕ ͋Γ·͢ɻ ࣮ࡍʹ͸ϝϞϦʔͷ֬อ͸ߦΘΕͣɺϓϥϯφʔͷίε τਪఆ༻ͱͳΓ·͢ɻ ਪ঑஋ γεςϜϝϞϦʔͷ50%ͷ༰ྔ νϡʔχϯά(30/46)

Slide 99

Slide 99 text

ύϥϝʔλʔ໊ autovacuum_max_workers ൓ө(ର৅) ཁϦελʔτ σϑΥϧτ஋ 3 ղઆ ಉ࣌ʹ࣮ߦ͢ΔࣗಈόΩϡʔϜॲཧͷ࠷େϫʔΧʔ਺Λ ઃఆ͠·͢ɻ ਪ঑஋ σʔλϕʔεαΠζͷ20%Λ௒͑Δେ͖ͳςʔϒϧ਺ + 1 νϡʔχϯά(31/46)

Slide 100

Slide 100 text

ύϥϝʔλʔ໊ autovacuum_vacuum_threshold ൓ө(ର৅) ཁϦϩʔυ σϑΥϧτ஋ 50 ղઆ όΩϡʔϜॲཧʹඞཁͳɺߋ৽·ͨ͸࡟আ͞Εͨλϓϧ ਺ͷ࠷খ஋Λઃఆ͠·͢ɻ ͜ͷύϥϝʔλʔ͸ɺશςʔϒϧʹରͯ͠దԠ͞Ε· ͢ɻ ਪ঑஋ 50(มߋແ͠) νϡʔχϯά(32/46)

Slide 101

Slide 101 text

ύϥϝʔλʔ໊ autovacuum_analyze_threshold ൓ө(ର৅) ཁϦϩʔυ σϑΥϧτ஋ 50 ղઆ ߋ৽ॲཧʹඞཁͳɺߋ৽·ͨ͸࡟আ͞Εͨλϓϧ਺ͷ࠷ খ஋Λઃఆ͠·͢ɻ ͜ͷύϥϝʔλʔ͸ɺશςʔϒϧʹରͯ͠దԠ͞Ε· ͢ɻ ਪ঑஋ 50(มߋແ͠) νϡʔχϯά(33/46)

Slide 102

Slide 102 text

ύϥϝʔλʔ໊ autovacuum_vacuum_scale_factor ൓ө(ର৅) ཁϦϩʔυ σϑΥϧτ஋ 0.2 ղઆ όΩϡʔϜॲཧʹඞཁͳɺߋ৽͞Εͨςʔϒϧߦ਺ͷׂ ߹Λઃఆ͠·͢ɻ ͜ͷύϥϝʔλʔ͸ɺશςʔϒϧʹରͯ͠దԠ͞Ε· ͢ɻ ਪ঑஋ 0.2(มߋແ͠) νϡʔχϯά(34/46)

Slide 103

Slide 103 text

ύϥϝʔλʔ໊ autovacuum_analyze_scale_factor ൓ө(ର৅) ཁϦϩʔυ σϑΥϧτ஋ 0.1 ղઆ ߋ৽ॲཧʹඞཁͳɺߋ৽͞Εͨςʔϒϧߦ਺ͷׂ߹Λઃ ఆ͠·͢ɻ ͜ͷύϥϝʔλʔ͸ɺશςʔϒϧʹରͯ͠దԠ͞Ε· ͢ɻ ਪ঑஋ 0.1(มߋແ͠) νϡʔχϯά(35/46)

Slide 104

Slide 104 text

ύϥϝʔλʔ໊ search_path ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ "$user", public ղઆ ΫΤϦ౳͕εΩʔϚΛࢦఆ͍ͯ͠ͳ͍৔߹ɺεΩʔϚΛ ݕࡧ͢Δॱ൪Λઃఆ͠·͢ɻ “$user”͸ɺSESSION_USERͱಉ͡εΩʔϚ͕͋Ε͹ɺ ஔ׵͞Ε·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ "$user", public(มߋແ͠) νϡʔχϯά(36/46)

Slide 105

Slide 105 text

ύϥϝʔλʔ໊ row_security ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ on ղઆ ߦηΩϡϦςΟϙϦγʔͷదԠʹΑͬͯΤϥʔΛൃੜ͞ ͤΔ͔ઃఆ͠·͢ɻ “off”͸ɺҰͭͰ΋ϙϦγʔ͕దԠ͞ΕͨΫΤϦ͕Τϥʔ ͱͳΓ·͢ɻ ߦηΩϡϦςΟϙϦγʔʹ͍ͭͯ͸ɺެࣜυΩϡϝϯτ Λ͝ࢀর͍ͩ͘͞ɻ https://www.postgresql.jp/document/10/html/sql- createpolicy.html ਪ঑஋ on(มߋແ͠) νϡʔχϯά(37/46)

Slide 106

Slide 106 text

ύϥϝʔλʔ໊ default_tablespace ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ ’’(ۭന) ղઆ CREATEίϚϯυͰ໌ࣔతʹςʔϒϧεϖʔεΛࢦఆͯ͠ ͍ͳ͍৔߹ʹɺΦϒδΣΫτͷ࡞੒ઌͱͳΔσϑΥϧτ ͷςʔϒϧεϖʔεΛઃఆ͠·͢ɻ ۭനͷ৔߹͸ɺݱࡏͷσʔλϕʔεͷσϑΥϧτςʔϒϧ εϖʔεΛ࢖༻͠·͢ɻ Ұ࣌ςʔϒϧ͸ɺtemp_tablespacesͰࢦఆ͠·͢ɻ ਪ঑஋ ’’(มߋͳ͠) νϡʔχϯά(38/46)

Slide 107

Slide 107 text

ύϥϝʔλʔ໊ temp_tablespaces ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ ’’(ۭന) ղઆ CREATEίϚϯυͰ໌ࣔతʹςʔϒϧεϖʔεΛࢦఆͯ͠ ͍ͳ͍৔߹ʹɺҰ࣌ΦϒδΣΫτͷ࡞੒ઌͱͳΔσϑΥ ϧτͷςʔϒϧεϖʔεΛઃఆ͠·͢ɻ ۭനͷ৔߹͸ɺݱࡏͷσʔλϕʔεͷσϑΥϧτςʔϒϧ εϖʔεΛ࢖༻͠·͢ɻ ਪ঑஋ ’’(มߋͳ͠) νϡʔχϯά(39/46)

Slide 108

Slide 108 text

ύϥϝʔλʔ໊ statement_timeout ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ 0 ղઆ ίϚϯυ͕ΫϥΠΞϯτ͔Βαʔόʔʹ౸ୡ͔ͯ͠Βλ ΠϜΞ΢τ͢Δ·Ͱͷ࣌ؒΛઃఆ͠·͢ɻ ϛϦඵ୯ҐͰࢦఆ͕ՄೳͰ͢ɻ 0ͷ৔߹͸λΠϜΞ΢τػೳΛແޮԽ͠·͢ɻ ਪ঑஋ 0(มߋͳ͠) νϡʔχϯά(40/46)

Slide 109

Slide 109 text

ύϥϝʔλʔ໊ lock_timeout ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ 0 ղઆ σʔλϕʔεΦϒδΣΫτͷϩοΫ଴ͪͰλΠϜΞ΢τ ͢Δ·Ͱͷ࣌ؒΛઃఆ͠·͢ɻ ϛϦඵ୯ҐͰࢦఆ͕ՄೳͰ͢ɻ 0ͷ৔߹͸λΠϜΞ΢τػೳΛແޮԽ͠·͢ɻ ਪ঑஋ 0(มߋͳ͠) νϡʔχϯά(41/46)

Slide 110

Slide 110 text

ύϥϝʔλʔ໊ idle_in_transaction_session_timeout ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ 0 ղઆ ΞΠυϧঢ়ଶͷτϥϯβΫγϣϯ͕ηογϣϯλΠϜΞ ΢τ͢Δ·Ͱͷ࣌ؒΛઃఆ͠·͢ɻ ϛϦඵ୯ҐͰࢦఆ͕ՄೳͰ͢ɻ 0ͷ৔߹͸λΠϜΞ΢τػೳΛແޮԽ͠·͢ɻ ਪ঑஋ 0(มߋͳ͠) νϡʔχϯά(42/46)

Slide 111

Slide 111 text

ύϥϝʔλʔ໊ vacuum_cleanup_index_scale_factor ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ 0.1 ղઆ B-treeΠϯσοΫεͷόΩϡʔϜॲཧΛ࣮ߦ͢ΔͨΊ ͷɺલճͷόΩϡʔϜॲཧ͔Βมߋ͞Εͨߦ਺ͷׂ߹ Λઃఆ͠·͢ɻ σϑΥϧτ஋Ͱ͸ɺ0.1%ͷมߋ͕͋ΔςʔϒϧͷΈΠ ϯσοΫεͷόΩϡʔϜ͕࣮ߦ͞Ε·͢ɻ PostgreSQL11Ͱ௥Ճ͞Εͨ৽ύϥϝʔλʔͰ͢ɻ ਪ঑஋ 0.1(มߋͳ͠) νϡʔχϯά(43/46)

Slide 112

Slide 112 text

ύϥϝʔλʔ໊ client_encoding ൓ө(ର৅) ଈ࣌൓ө(શϢʔβʔ) σϑΥϧτ஋ sql_ascii ղઆ ΫϥΠΞϯτଆͷจࣈηοτΛઃఆ͠·͢ɻ ΞϓϦέʔγϣϯʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ঑஋ sql_ascii(มߋͳ͠) νϡʔχϯά(44/46)

Slide 113

Slide 113 text

ύϥϝʔλʔ໊ deadlock_timeout ൓ө(ର৅) ଈ࣌൓ө(εʔύʔϢʔβʔ) σϑΥϧτ஋ 1s ղઆ ϩοΫ଴ͪͷঢ়ଶʹͳͬͨࡍʹɺσουϩοΫͷݕग़ॲ ཧΛ։࢝͢Δ·Ͱͷ଴ͪ࣌ؒΛઃఆ͠·͢ɻ ϛϦඵ୯ҐͰࢦఆ͕ՄೳͰ͢ɻ σουϩοΫͷݕग़ʹ͸ίετ͕ߴ͍ͨΊɺΞϓϦέʔ γϣϯଆͰσουϩοΫ͕ى͜Βͳ͍Α͏ʹ޻෉ͯ͘͠ ͍ͩ͞ɻ ਪ঑஋ 10s νϡʔχϯά(45/46)

Slide 114

Slide 114 text

ύϥϝʔλʔ໊ max_locks_per_transaction, max_pred_locks_per_transaction ൓ө(ର৅) ཁϦελʔτ σϑΥϧτ஋ 64 ղઆ τϥϯβΫγϣϯͷฏۉϩοΫ਺ͷ஋Λઃఆ͠·͢ɻ ୯ҰͷτϥϯβΫγϣϯͰɺଟ਺ͷςʔϒϧͷϩοΫ͕ ൃੜ͢ΔΞϓϦέʔγϣϯͷ৔߹͸ɺ஋Λ૿΍͢ඞཁ͕ ͋Γ·͢ɻ ਪ঑஋ 64(มߋແ͠) νϡʔχϯά(46/46)

Slide 115

Slide 115 text

͓·͚: ϝϞϦʔͷׂΓ౰ͯྫ 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

Slide 116

Slide 116 text

͓·͚: ΧʔωϧϦιʔεͷมߋ 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ͷ஋ )

Slide 117

Slide 117 text

ऴΘΓʹ ύϥϝʔλʔʹΑΔνϡʔχϯά͸ɺ
 ࣮ࡍͷӡ༻Ͱ͸αʔόʔߏ੒΍౤ೖ͞ΕΔσʔλྔɺ ൃߦ͞ΕΔSQLʹ߹Θͤͯɺ࠷దͳ஋͕ҟͳΓ·͢ɻ ͜·ΊʹPostgreSQLͷঢ়ଶΛ֬ೝ͠ɺ ҆ఆՔಇΛ໨ࢦ͍ͯͩ͘͠͞ɻ

Slide 118

Slide 118 text

ྑ͍PostgreSQLϥΠΫΛʂ ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ