Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
PostgreSQL11 設定パラメーター解体新書 / PostgreSQL 11 para...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
ester41
January 26, 2019
Technology
2
4.2k
PostgreSQL11 設定パラメーター解体新書 / PostgreSQL 11 parameter
OSC 2019 Osakaの登壇資料です。
ester41
January 26, 2019
Tweet
Share
More Decks by ester41
See All by ester41
PostgreSQLのレプリケーションを使ってみよう / PostgreSQL 13 Replication
ester41
1
890
はじめてのPostgreSQLモニタリング入門 / PostgreSQL 11 Monitoring
ester41
17
3.8k
こわくないPostgreSQLのアップグレード
ester41
1
3.3k
PostgreSQLデプロイの基礎
ester41
1
1.4k
Other Decks in Technology
See All in Technology
OCI Security サービス 概要
oracle4engineer
PRO
2
13k
作りっぱなしで終わらせない! 価値を出し続ける AI エージェントのための「信頼性」設計 / Designing Reliability for AI Agents that Deliver Continuous Value
aoto
PRO
2
250
ナレッジワーク IT情報系キャリア研究セッション資料(情報処理学会 第88回全国大会 )
kworkdev
PRO
0
140
EMからVPoEを経てCTOへ:マネジメントキャリアパスにおける葛藤と成長
kakehashi
PRO
9
1.4k
ブラックボックス観測に基づくAI支援のプロトコルのリバースエンジニアリングと再現~AIを用いたリバースエンジニアリング~ @ SECCON 14 電脳会議 / Reverse Engineering and Reproduction of an AI-Assisted Protocol Based on Black-Box Observation @ SECCON 14 DENNO-KAIGI
chibiegg
0
160
Oracle Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
4
1.1k
JAWS FESTA 2025でリリースしたほぼリアルタイム文字起こし/翻訳機能の構成について
naoki8408
1
160
AWSをCLIで理解したい! / I want to understand AWS using the CLI
mel_27
2
240
元エンジニアPdM、IDEが恋しすぎてCursorに全業務を集約したら、スライド作成まで爆速になった話
doiko123
1
510
Dr. Werner Vogelsの14年のキーノートから紐解くエンジニアリング組織への処方箋@JAWS DAYS 2026
p0n
1
120
Agentic Software Modernization - Back to the Roots (Zürich Agentic Coding and Architectures, März 2026)
feststelltaste
1
230
EMからICへ、二周目人材としてAI全振りのプロダクト開発で見つけた武器
yug1224
5
490
Featured
See All Featured
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.1k
Paper Plane
katiecoart
PRO
0
47k
KATA
mclloyd
PRO
35
15k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
190
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
62
51k
Why Our Code Smells
bkeepers
PRO
340
58k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.4k
How to Think Like a Performance Engineer
csswizardry
28
2.5k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
250
Chasing Engaging Ingredients in Design
codingconduct
0
130
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.8k
The Invisible Side of Design
smashingmag
302
51k
Transcript
PostgreSQL11 ઃఆύϥϝʔλʔ ղମ৽ॻ ΦʔϓϯιʔεΧϯϑΝϨϯε 2019 Osaka
͡Ίʹ ຊηογϣϯͰɺ࠷৽όʔδϣϯͰ͋Δ PostgreSQL11ͷίϯϑΟάϑΝΠϧͷղઆΛߦ͍·͢ɻ ύϥϝʔλʔશ෦Ͱ250߲ଘࡏ͢ΔͨΊɺ ͬͯΒ͍͍ͨ115߲Λରͱ͍ͯ͠·͢ɻ
͡Ίʹ ຊηογϣϯ࡞ʹ͋ͨΓɺҎԼͷॻ੶Λࢀߟʹ͍ͯ͠·͢ɻ
ΞδΣϯμ ࣗݾհ PostgreSQLͷ෦ߏʹ͍ͭͯ ଓઃఆɾػೳઃఆ ϨϓϦέʔγϣϯ ࢹؔ νϡʔχϯά ऴΘΓʹ
ࣗݾհ ໊લ: ࣉ େً(ͯΒ͏ͪ ͍͖ͨ) ॴଐ: ຊPostgreSQLϢʔβձ ؔࢧ෦ Twitter/GitHub: @ester41
ࣄ: อकɾઃܭɾ։ൃͳͲSE࡞ۀશൠ
͜ͷηογϣϯͰɺPostgreSQLͷઃఆϑΝΠϧͰ͋Δɺ postgresql.confͷઃఆʹ͍ͭͯղઆ͠·͢ɻ PostgreSQLͷ෦ߏ (σʔλϕʔεߏ) postgresϓϩηε σʔλϕʔεΫϥελ ઃఆϑΝΠϧ ɾpostgresql.conf ɾpg_hba.conf ͳͲ
σʔλϕʔε εΩʔϚ Ϣʔβʔ ɾpostgres ͳͲ ςʔϒϧ ͳͲ
PostgreSQLͷ෦ߏ (ϓϩηεߏ) postgres (όοΫΤϯυϓϩηε) postgres (ϥΠλʔ) postgres (νΣοΫϙΠϯλʔ) postgres (౷ܭใίϨΫλʔ)
postgres (ࣗಈόΩϡʔϜϥϯνϟʔ) postgres (ࣗಈόΩϡʔϜϫʔΧʔ) postgres (WALϥΠλʔ) postgres (Ϛελʔαʔόʔϓϩηε) WALόοϑΝʔ WALϑΝΠϧ σʔλϑΝΠϧ ڞ༗όοϑΝʔ ౷ܭใ ىಈ࣌ʹϓϩηεΛϑΥʔΫ ଓཁٻ͝ͱʹϓϩηεΛϑΥʔΫ ࣗಈόΩϡʔϜΛܖػʹϓϩηεΛϑΥʔΫ
PostgreSQLͷ෦ߏ (ϝϞϦʔߏ) ϓϩηεϝϞϦʔ όοΫΤϯυϓϩηε Ұ࣌όοϑΝʔ (temp_buffers) ࡞ۀϝϞϦʔ (work_mem) ϝϯςφϯε༻࡞ۀϝϞϦʔ (maintenance_work_mem)
ڞ༗ϝϞϦʔ WALόοϑΝʔ (wal_buffers) ڞ༗όοϑΝʔ (shard_buffers) σʔλϑΝΠϧ WALϑΝΠϧ WALϥΠλʔϓϩηε όΩϡʔϜϫʔΧʔϓϩηε ۭ͖ྖҬϚοϓ ՄࢹੑϚοϓ ϥΠλʔ/ νΣοΫϙΠϯλʔϓϩηε
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;
postgresql.confʹ͍ͭͯ(2/3) ઃఆɺҎԼͷSQLͰ֬ೝ͢Δ͜ͱ͕ՄೳͰ͢ɻ SELECT name, setting, context FROM pg_settings; ग़ྗҎԼͷ௨ΓͱͳΓ·͢ɻ name
ύϥϝʔλʔ໊ setting ݱࡏͷઃఆ content ύϥϝʔλʔ͕༗ޮͱͳΔλΠϛϯά ɾinternal: ઃఆΛมߋ͢Δ͜ͱͰ͖·ͤΜɻ ɾpostmaster: αʔόʔىಈ࣌ͷΈมߋ͕ՄೳͰ͢ɻ ɾsighup: αʔόʔϦϩʔυͰมߋ͕ՄೳͰ͢ɻ ɾsuperuser: εʔύʔϢʔβʔͷΈมߋͰ͖ଈ࣌ө͞Ε·͢ɻ ɾuser: શϢʔβʔͰมߋͰ͖ଈ࣌ө͞Ε·͢ɻ
postgresql.confʹ͍ͭͯ(3/3) postgresql.confͷҰ෦ͷ ɺPGTune ( https://pgtune.leopard.in.ua/ ) ɹ Ͱαʔόʔڥʹ߹Θͤ ͨࢀߟΛੜ͢Δ͜ͱ ͕ग़དྷ·͢ɻ
ଓઃఆɾػೳઃఆ(1/22) ଓʹ༻͢ΔઃఆɺSQLͷղੳ࣌ʹ༻͢ΔεΩϟϯઃఆͳͲΛղઆ ͠·͢ɻ ೝূใʹ͍ͭͯOSଞαʔόʔ͕བྷΉઃఆ͕ଟଘࡏ͢ΔͨΊղઆ ߦ͍·ͤΜɻ ެࣜυΩϡϝϯτΛ͝ࢀর͍ͩ͘͞ɻ https://www.postgresql.jp/document/current/html/runtime-config- connection.html
ଓઃఆɾػೳઃఆ(2/22) ύϥϝʔλʔ໊ listen_addresses ө(ର) ཁϦελʔτ σϑΥϧτ localhost ղઆ ଓΛڐՄ͢ΔTCP/IPΞυϨεΛࢦఆ͠·͢ɻ “*”ͯ͢ͷଓΛڐՄ͠·͢ɻ
͜͜Ͱͯ͢ͷଓΛڐՄ͠ɺผઃఆϑΝΠϧͷ pg_hba.confϑΝΠϧͰࡉ͔͘ઃఆ͢Δ͜ͱΛਪ͠ ·͢ɻ ਪ *
ଓઃఆɾػೳઃఆ(3/22) ύϥϝʔλʔ໊ port ө(ର) ཁϦελʔτ σϑΥϧτ 5432 ղઆ ΫϥΠΞϯτ͔Βαʔόʔʹଓ͢Δࡍʹ༻͢Δ ϙʔτ൪߸Ͱ͢ɻ
σʔλϕʔεΫϥελͰϙʔτ൪߸͕ڞ༗͞Ε·͢ɻ 1ͭͷαʔόʔʹෳͷσʔλϕʔεΫϥελΛ࡞͢ Δࡍɺมߋ͍ͯͩ͘͠͞ɻ ਪ 5432(มߋͳ͠)
ଓઃఆɾػೳઃఆ(4/22) ύϥϝʔλʔ໊ max_connections ө(ର) ཁϦελʔτ σϑΥϧτ 100 ղઆ αʔόʔʹଓͰ͖Δ࠷େηογϣϯͰ͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ
ͳ͓ɺҰൠϢʔβʔ͕ଓͰ͖Δɺޙड़ͷ superuser_reserved_connectionsΛࠩ͠Ҿ͍ͨͱͳ Γ·͢ɻ ਪ 100(มߋͳ͠)
ଓઃఆɾػೳઃఆ(5/22) ύϥϝʔλʔ໊ superuser_reserved_connections ө(ର) ཁϦελʔτ σϑΥϧτ 3 ղઆ αʔόʔʹଓͰ͖ΔεʔύʔϢʔβʔͷ࠷େηογϣ ϯͰ͢ɻ
ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ 3(มߋͳ͠)
ଓઃఆɾػೳઃఆ(6/22) ύϥϝʔλʔ໊ max_prepared_transactions ө(ର) ཁϦελʔτ σϑΥϧτ 0 ղઆ ೋίϛοτ༻τϥϯβΫγϣϯͷ࠷େͰ͢ɻ “0”ͷ߹ೋίϛοτػೳ͕ແޮԽ͞Ε·͢ɻ
ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ 0(มߋͳ͠)
ଓઃఆɾػೳઃఆ(7/22) ύϥϝʔλʔ໊ db_user_namespace ө(ର) ཁϦϩʔυ σϑΥϧτ off ղઆ PostgreSQLͷϢʔβʔใɺσʔλϕʔεΫϥελ Ͱڞ༗͞Ε͍ͯ·͕͢ɺ͜ͷύϥʔϝʔλʔΛonʹ͢
Δ͜ͱͰɺσʔλϕʔε͝ͱʹϢʔβʔใΛઃఆ͢Δ ͜ͱ͕ՄೳͱͳΓ·͢ɻ Ϣʔβʔͷ࡞ɺusername@dbnameͷΑ͏ʹͳΓ ·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ off(มߋͳ͠)
ଓઃఆɾػೳઃఆ(8/22) ύϥϝʔλʔ໊ default_transaction_isolation ө(ର) ଈ࣌ө(શϢʔβʔ) σϑΥϧτ read committed ղઆ SQLτϥϯβΫγϣϯϨϕϧΛઃఆ͠·͢ɻ
ҎԼͷઃఆ͕ଘࡏ͠·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ɾread uncommitted ɾread committed ɾrepeatable read ɾserializable ਪ read committed(มߋͳ͠)
ଓઃఆɾػೳઃఆ(9/22) ύϥϝʔλʔ໊ timezone ө(ର) ଈ࣌ө(શϢʔβʔ) σϑΥϧτ GMT ղઆ ࣌ؒදࣔ࣌ɺλΠϜελϯϓղऍ࣌ͷλΠϜκʔϯΛઃ ఆ͠·͢ɻ
initdbͰࢦఆͨ͠ϩέʔϧʹΑΓมΘΓ·͢ɻ ϩέʔϧ͕“C”ͷ߹ɺ“GMT”ͱͳΓ·͢ɻ ਪ Japan
ଓઃఆɾػೳઃఆ(10/22) ύϥϝʔλʔ໊ lc_messages ө(ର) ଈ࣌ө(εʔύʔϢʔβʔ) σϑΥϧτ C ղઆ දࣔ͢ΔϝοηʔδͷݴޠΛઃఆ͠·͢ɻ ༻Ͱ͖ΔݴޠγεςϜʹґଘ͠·͢ɻ
initdbͰࢦఆͨ͠ϩέʔϧʹΑΓมΘΓ·͢ɻ ϩέʔϧ͕“C”ͷ߹ɺ“C”ͱͳΓ·͢ɻ (“C”ͱσϑΥϧτઃఆͱ͍͏ҙຯͰ͢ɻͭ·Γӳޠͱͳ Γ·͢ɻ) ਪ ja_JP.UTF-8
ଓઃఆɾػೳઃఆ(11/22) ύϥϝʔλʔ໊ lc_monetary, lc_numeric, lc_time ө(ର) ଈ࣌ө(શϢʔβʔ) σϑΥϧτ C ղઆ
௨աॻࣜɺͷॻࣜɺ࣌ॻࣜΛઃఆ͠·͢ɻ ༻Ͱ͖ΔݴޠγεςϜʹґଘ͠·͢ɻ initdbͰࢦఆͨ͠ϩέʔϧʹΑΓมΘΓ·͢ɻ ϩέʔϧ͕“C”ͷ߹ɺ“C”ͱͳΓ·͢ɻ ਪ ja_JP.UTF-8
ύϥϝʔλʔ໊ datestyle ө(ର) ଈ࣌ө(શϢʔβʔ) σϑΥϧτ iso, mdy ղઆ ࣌ࠁͷॻࣜ(ग़ྗॻࣜ)ͱɺᐆດͳೖྗͷղऍن ଇ(/݄/ͷॱংͷೖग़ྗࢦఆ)Λઃఆ͠·͢ɻ
ਪ iso, ymd ଓઃఆɾػೳઃఆ(12/22)
ଓઃఆɾػೳઃఆ(13/22) ύϥϝʔλʔ໊ archive_mode ө(ର) ཁϦελʔτ σϑΥϧτ off ղઆ WALΞʔΧΠϏϯάػೳͷ༗ޮແޮΛઃఆ͠·͢ɻ archive_command͕ઃఆ͞Ε͓ͯΓɺwal_level͕minimalҎ্Ͱ͋
Δ͜ͱ͕ඞਢͱͳΓ·͢ɻ ҎԼͷઃఆ͕ଘࡏ͠·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ɾoff: ػೳΛແޮԽ͠·͢ɻ ɾon: ௨ৗӡ༻࣌(ΞʔΧΠϒϦΧόϦ͓Αͼ ελϯόΠϞʔυҎ֎)ͷΈػೳΛ༗ޮԽ͠·͢ɻ ɾalways: ͯ͢ͷঢ়ଶͰػೳΛ༗ޮԽ͠·͢ɻ ਪ off(มߋͳ͠)
ଓઃఆɾػೳઃఆ(14/22) ύϥϝʔλʔ໊ archive_command ө(ର) ཁϦϩʔυ σϑΥϧτ ’’(ۭന) ղઆ WALϑΝΠϧηάϝϯτΛΞʔΧΠϒ͢ΔγΣϧίϚ ϯυΛࢦఆ͠·͢ɻ
ίϚϯυதͷ%p֨ೲ͞ΕΔϑΝΠϧͷύεͰஔ͖ ͑ΒΕɺ%fϑΝΠϧ໊Ͱஔ͖͑ΒΕ·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ ’’(มߋͳ͠)
ଓઃఆɾػೳઃఆ(15/22) ύϥϝʔλʔ໊ archive_timeout ө(ର) ཁϦϩʔυ σϑΥϧτ 0 ղઆ WALϑΝΠϧηάϝϯτΛΞʔΧΠϒ͢Δ·Ͱͷ࣌ؒ Λࢦఆ͠·͢ɻ
ඵͰࢦఆ͠ɺ0ͷ߹ແޮԽ͞Ε·͢ɻ Λখ͗͘͢͞͠ΔͱΞʔΧΠϒϑΝΠϧͷංେԽʹ ܨ͕ΔͨΊɺ60sҎ্ͷΛࢦఆ͢ΔΑ͏ʹͯͩ͘͠͞ ͍ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ 0(มߋͳ͠)
ଓઃఆɾػೳઃఆ(16/22) ύϥϝʔλʔ໊ enable_material ө(ର) ଈ࣌ө(શϢʔβʔ) σϑΥϧτ on ղઆ ΦϓςΟϚΠβʔ͕༻͢ΔϚςϦΞϥΠζϊʔυͷ ༗ޮແޮΛઃఆ͠·͢ɻ
※ϚςϦΞϧɺԼҐϊʔυͷใΛϑΝΠϧʹ ॻ͖ग़্ͯ͠ҐϊʔυใΛ͢ࡍʹ ༻͞Ε·͢ɻ ਪ on(มߋͳ͠)
ଓઃఆɾػೳઃఆ(17/22) ύϥϝʔλʔ໊ enable_bitmapscan, enable_gathermerge, enable_hashagg, enable_hashjoin, enable_indexscan, enable_indexonlyscan ө(ର) ଈ࣌ө(શϢʔβʔ)
σϑΥϧτ on ղઆ ΦϓςΟϚΠβʔ͕༻͢Δϓϥϯϝιουͷ༗ޮແ ޮΛઃఆ͠·͢ɻ ॱʹϏοτϚοϓεΩϟϯܭըɺΪϟβʔϚʔδܭ ըɺϋογϡूܭըɺϋογϡ݁߹ܭըɺΠϯσο ΫεࠪܭըɺΠϯσοΫεΦϯϦʔεΩϟϯܭըͱ ͳΓ·͢ɻ ਪ on(มߋͳ͠)
ଓઃఆɾػೳઃఆ(18/22) ύϥϝʔλʔ໊ enable_mergejoin, enable_nestloop, enable_seqscan, enable_tidscan, enable_sort ө(ର) ଈ࣌ө(શϢʔβʔ) σϑΥϧτ
on ղઆ ΦϓςΟϚΠβʔ͕༻͢Δϓϥϯϝιουͷ༗ޮແ ޮΛઃఆ͠·͢ɻ ॱʹϚʔδ݁߹ܭըɺωεςουϧʔϓܭըɺγʔέ ϯγϟϧࠪܭըɺϋογϡ݁߹ܭըɺ໌ࣔతͳιʔ τɺTID ࠪܭըɺ໌ࣔతͳιʔτͱͳΓ·͢ɻ γʔέϯγϟϧࠪܭը͓Αͼ໌ࣔతͳιʔτશ ʹແޮԽ͢Δ͜ͱͰ͖·ͤΜɻ ਪ on(มߋͳ͠)
ଓઃఆɾػೳઃఆ(19/22) ύϥϝʔλʔ໊ enable_parallel_append ө(ର) ଈ࣌ө(શϢʔβʔ) σϑΥϧτ on ղઆ ΦϓςΟϚΠβʔ͕༻͢Δϓϥϯϝιουͷ༗ޮແ ޮΛઃఆ͠·͢ɻ
PostgreSQL11ͰՃ͞Εͨ৽ύϥϝʔλʔͰ͢ɻ ϋογϡύʔςΟγϣχϯά͞Εͨςʔϒϧʹରͯ͠༗ ޮͱͳΔɺύϥϨϧूܭըͱͳΓ·͢ɻ ਪ on(มߋͳ͠)
ଓઃఆɾػೳઃఆ(20/22) ύϥϝʔλʔ໊ enable_parallel_hash, enable_partition_pruning ө(ର) ଈ࣌ө(શϢʔβʔ) σϑΥϧτ on ղઆ ΦϓςΟϚΠβʔ͕༻͢Δϓϥϯϝιουͷ༗ޮແ
ޮΛઃఆ͠·͢ɻ PostgreSQL11ͰՃ͞Εͨ৽ύϥϝʔλʔͰ͢ɻ ॱʹύϥϨϧϋογϡ݁߹ܭըɺύϥϨϧύʔςΟγ ϣϯܭըͱͳΓ·͢ɻ ύϥϨϧύʔςΟγϣϯܭըɺϓϥϯχϯάͰฒྻ ॲཧͰύʔςΟγϣϯςʔϒϧʹରͯ͠ΞΫηε͢Δඞ ཁ͕͋Δ͔֬ೝͰ͖ΔػೳͰ͢ɻ ਪ on(มߋͳ͠)
ଓઃఆɾػೳઃఆ(21/22) ύϥϝʔλʔ໊ enable_partitionwise_join, enable_partitionwise_aggregate ө(ର) ଈ࣌ө(શϢʔβʔ) σϑΥϧτ off ղઆ ΦϓςΟϚΠβʔ͕༻͢Δϓϥϯϝιουͷ༗ޮແ
ޮΛઃఆ͠·͢ɻ PostgreSQL11ͰՃ͞Εͨ৽ύϥϝʔλʔͰ͢ɻ ॱʹύʔςΟγϣϯಉ࢜ͷ݁߹ɺύʔςΟγϣϯಉ࢜ ͷू߹ͱͳΓ·͢ɻ ϓϥϯχϯάͰCPU͓ΑͼϝϞϦΛଟ͘༻͢Δͨ ΊɺແޮԽ͞Ε͍ͯ·͢ɻ ਪ off(มߋͳ͠)
ଓઃఆɾػೳઃఆ(22/22) ύϥϝʔλʔ໊ jit ө(ର) ଈ࣌ө(શϢʔβʔ) σϑΥϧτ off ղઆ PostgreSQL11ͰՃ͞Εͨ৽ػೳͰ͋ΔɺJIT(Just In
Time)ίϯύΠϧΛ༗ޮԽ͠·͢ɻ PostgreSQL11ͰՃ͞Εͨ৽ύϥϝʔλʔͰ͢ɻ WHERE۟ूܭͳͲͰ༻͞Ε·͕͢ɺ·ͩ҆ఆԽ͠ ͍ͯͳ͍Α͏ͰɺσϑΥϧτͰແޮԽ͞Ε͍ͯ·͢ɻ ਪ off(มߋͳ͠)
ϨϓϦέʔγϣϯ(1/17) PostgreSQLͷϨϓϦέʔγϣϯͷઃఆʹ͍ͭͯղઆ͠·͢ɻ PostgreSQLɺετϦʔϛϯάϨϓϦέʔγϣϯͱϩδΧϧϨϓϦέʔγϣϯͷ2ͭΛ ఏڙ͍ͯ͠·͢ɻ ετϦʔϛϯάϨϓϦέʔγϣϯɺWAL(Write Ahead Logging)Λwalsenderϓϩηε ͕εϨʔϒαʔόʔ࿈ܞ͠ɺεϨʔϒαʔόʔͷwalreceiver͕ड৴ͯ͠ϨϓϦέʔ γϣϯΛఏڙ͠·͢ɻ ϩδΧϧϨϓϦέʔγϣϯɺϓϥΠϚϦʔαʔόʔ͕WALΛϩδΧϧσίʔσΟϯά
ͱݺΕΔػೳͰϩδΧϧϨϓϦέʔγϣϯͷϓϩτίϧʹม͠ɺwalsenderϓϩη ε͕εϨʔϒαʔόʔ࿈ܞ͠·͢ɻεϨʔϒαʔόʔɺόοΫάϥϯυϫʔΧʔ ͕ड৴ͯ͠ϨϓϦέʔγϣϯΛఏڙ͠·͢ɻ ৄ͘͠ɺϨϓϦέʔγϣϯͷղઆεϥΠυΛ͝ࢀর͍ͩ͘͞ɻ https://www.slideshare.net/masahikosawada98/postgresql-86891271
ύϥϝʔλʔ໊ wal_level ө(ର) ཁϦελʔτ σϑΥϧτ replica ղઆ WALʹอ࣋͢ΔใྔΛઃఆ͠·͢ɻ ҎԼͷઃఆ͕ଘࡏ͠·͢ɻ ͳ͓ɺ্ҐϨϕϧԼҐϨϕϧͷใΛαϙʔτ͠·͢ɻ
ɾminimal: Ϋϥογϡ࣌ଈ࣌ఀࢭ͔Βͷ෮ؼʹ ඞཁͳใͷΈอ࣋͠·͢ɻ ɾreplica: WALΞʔΧΠϒ͓ΑͼετϦʔϛϯά ϨϓϦέʔγϣϯʹඞཁͳใΛอ࣋͠·͢ɻ ɾlogical: ϩδΧϧσίʔσΟϯάʹඞཁͳใΛอ࣋͠·͢ɻ ਪ logical ϨϓϦέʔγϣϯ(2/17)
ύϥϝʔλʔ໊ max_wal_senders ө(ର) ཁϦελʔτ σϑΥϧτ 10 ղઆ εϨʔϒαʔόʔ͔Βͷಉ࣌ଓ࠷େΛࢦఆ͠·͢ɻ 0ͷ߹ϨϓϦέʔγϣϯ͕ແޮԽ͞Ε·͢ɻ ૯ଓʹΧϯτ͞ΕΔͨΊɺmax_connectionsͷ
Ҏ্ʹઃఆ͢Δ͜ͱͰ͖·ͤΜɻ ϚελʔʹઃఆΛߦ͍·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ (ετϦʔϛϯάϨϓϦέʔγϣϯͷεϨʔϒ + ϩδΧϧϨϓϦέʔγϣϯͷαϒεΫϦϓγϣϯ * 2) + 1 ϨϓϦέʔγϣϯ(3/17)
ύϥϝʔλʔ໊ max_replication_slots ө(ର) ཁϦελʔτ σϑΥϧτ 10 ղઆ αʔόʔ͕࡞Ͱ͖ΔϨϓϦέʔγϣϯεϩοτͷ࠷େ Λࢦఆ͠·͢ɻ ϚελʔɾεϨʔϒڞʹઃఆΛߦ͍·͢ɻ
ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ※ϨϓϦέʔγϣϯεϩοτɺ εϨʔϒͷঢ়ଶΛϚελʔ͕ཧ͢ΔͨΊͷػೳͰ͢ɻ ਪ ϩδΧϧϨϓϦέʔγϣϯͷαϒεΫϦϓγϣϯ * 2 + ετϦʔϛϯάϨϓϦέʔγϣϯͰ࡞͢ΔϨϓϦέʔγϣϯεϩοτͷ ϨϓϦέʔγϣϯ(4/17)
ύϥϝʔλʔ໊ track_commit_timestamp ө(ର) ཁϦελʔτ σϑΥϧτ off ղઆ τϥϯβΫγϣϯͷίϛοτλΠϜΛه͠·͢ɻ ϚελʔɾεϨʔϒڞʹઃఆΛߦ͍·͢ɻ ਪ
on ϨϓϦέʔγϣϯ(5/17)
ύϥϝʔλʔ໊ wal_sender_timeout ө(ର) ཁϦϩʔυ σϑΥϧτ 60s ղઆ ࢦఆͨ࣌ؒ͠ΑΓ͘εϨʔϒ͔ΒͷԠ͕ͳ͍߹ ϨϓϦέʔγϣϯଓΛఀࢭ͠·͢ɻ ϛϦඵ୯ҐͰࢦఆ͕ՄೳͰ͢ɻ
0ͷ߹λΠϜΞτػೳΛແޮԽ͠·͢ɻ ϚελʔʹઃఆΛߦ͍·͢ɻ ڥʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ 60s(มߋͳ͠) ϨϓϦέʔγϣϯ(6/17)
ύϥϝʔλʔ໊ synchronous_standby_names ө(ର) ཁϦϩʔυ σϑΥϧτ ’’(ۭന) ղઆ ಉظ͢ΔεϨʔϒ໊ΛΧϯϚ۠ΓͰઃఆ͠·͢ɻ “*”Λઃఆ͢Δͱɺͯ͢ͷεϨʔϒ͕ରͱͳΓ·͢ɻ ਖ਼֬ͳॻࣜʹ͍ͭͯɺެࣜυΩϡϝϯτΛ͝ࢀরͩ͘
͍͞ɻ https://www.postgresql.jp/document/current/html/runtime- config-replication.html ϚελʔʹઃఆΛߦ͍·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ ’’(ۭന) ϨϓϦέʔγϣϯ(7/17)
ύϥϝʔλʔ໊ vacuum_defer_cleanup_age ө(ର) ཁϦϩʔυ σϑΥϧτ 0 ղઆ VACUUMHOTͰɺෆཁߦͷআԆΛߦ͏τϥϯβΫ γϣϯΛࢦఆ͠·͢ɻ 0ଈ࠲ʹআ͞Ε·͢ɻ
εϨʔϒͰίϯϑϦΫτ͕සൟʹൃੜ͢Δ߹ɺύϥ ϝʔλʔͷௐΛߦͳ͍ͬͯͩ͘͞ɻ ϚελʔʹઃఆΛߦ͍·͢ɻ ڥʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ 0(มߋͳ͠) ϨϓϦέʔγϣϯ(8/17)
ύϥϝʔλʔ໊ hot_standby ө(ର) ཁϦελʔτ σϑΥϧτ on ղઆ εϨʔϒʹରͯ͠ͷ͍߹ΘͤΛ༗ޮԽ͠·͢ɻ εϨʔϒʹઃఆΛߦ͍·͢ɻ ਪ
on(มߋͳ͠) ϨϓϦέʔγϣϯ(9/17)
ύϥϝʔλʔ໊ max_standby_archive_delay ө(ର) ཁϦϩʔυ σϑΥϧτ 30s ղઆ ϗοτελϯόΠதɺελϯόΠ͕ΞʔΧΠϒϑΝΠϧΛ దԠ͍ͯ͠Δ࠷தʹൃੜͨ͠ίϯϑϦΫτͷͪ࣌ؒΛ ઃఆ͠·͢ɻ
ϛϦඵ୯ҐͰࢦఆ͕ՄೳͰ͢ɻ “-1”ͷ࣌ɺ͍߹Θ͕ͤऴྃ͢Δ·ͰదԠ͕ఀࢭ͠· ͢ɻ εϨʔϒʹઃఆΛߦ͍·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ 30s(มߋͳ͠) ϨϓϦέʔγϣϯ(10/17)
ύϥϝʔλʔ໊ max_standby_streaming_delay ө(ର) ཁϦϩʔυ σϑΥϧτ 30s ղઆ ϗοτελϯόΠதɺελϯόΠ͕ϓϥΠϚϦʔ͔Βड ৴ͨ͠WALΛదԠ͍ͯ͠Δ࠷தʹൃੜͨ͠ίϯϑϦΫτ ͷͪ࣌ؒΛઃఆ͠·͢ɻ
ϛϦඵ୯ҐͰࢦఆ͕ՄೳͰ͢ɻ “-1”ͷ࣌ɺ͍߹Θ͕ͤऴྃ͢Δ·ͰదԠ͕ఀࢭ͠· ͢ɻ εϨʔϒʹઃఆΛߦ͍·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ 30s(มߋͳ͠) ϨϓϦέʔγϣϯ(11/17)
ύϥϝʔλʔ໊ wal_receiver_status_interval ө(ର) ཁϦϩʔυ σϑΥϧτ 10s ղઆ ελϯόΠ͕WALͷड৴ਐḿঢ়ଶΛϓϥΠϚϦʔʹૹ৴ ͢Δִؒͷ࠷খ࣌ؒΛઃఆ͠·͢ɻ ϛϦඵ୯ҐͰࢦఆ͕ՄೳͰ͢ɻ
wal_sender_timeoutΑΓখ͍͞Λઃఆ͍ͯͩ͘͠͞ɻ εϨʔϒʹઃఆΛߦ͍·͢ɻ ڥʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ 10s(มߋͳ͠) ϨϓϦέʔγϣϯ(12/17)
ύϥϝʔλʔ໊ hot_standby_feedback ө(ର) ཁϦϩʔυ σϑΥϧτ off ղઆ εϨʔϒ͕ݱࡏॲཧ͍ͯ͠Δ͍߹Θͤʹ͍ͭͯɺϓϥ ΠϚϦʔʹϑΟʔυόοΫΛૹ৴͢ΔػೳΛ༗ޮԽ͠· ͢ɻ
ϨϓϦέʔγϣϯεϩοτΛ༻͍ͯ͠Δ߹มߋ͕ ඞਢͱͳΓ·͢ɻ εϨʔϒʹઃఆΛߦ͍·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ on ϨϓϦέʔγϣϯ(13/17)
ύϥϝʔλʔ໊ wal_receiver_timeout ө(ର) ཁϦϩʔυ σϑΥϧτ 60s ղઆ ࢦఆͨ࣌ؒ͠ΑΓ͘ϓϥΠϚϦʔ͔ΒͷԠ͕ͳ͍ ߹ϨϓϦέʔγϣϯଓΛఀࢭ͠·͢ɻ ϛϦඵ୯ҐͰࢦఆ͕ՄೳͰ͢ɻ
0ͷ߹λΠϜΞτػೳΛແޮԽ͠·͢ɻ εϨʔϒʹઃఆΛߦ͍·͢ɻ ڥʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ 60s(มߋͳ͠) ϨϓϦέʔγϣϯ(14/17)
ύϥϝʔλʔ໊ wal_retrieve_retry_interval ө(ର) ཁϦϩʔυ σϑΥϧτ 5s ղઆ ࢦఆͨ࣌ؒ͠ΑΓ͘Ϛελʔ͔ΒͷԠ͕ͳ͍߹ ϨϓϦέʔγϣϯଓΛఀࢭ͠·͢ɻ ϛϦඵ୯ҐͰࢦఆ͕ՄೳͰ͢ɻ
εϨʔϒʹઃఆΛߦ͍·͢ɻ ڥʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ 5s(มߋͳ͠) ϨϓϦέʔγϣϯ(15/17)
ύϥϝʔλʔ໊ max_logical_replication_workers ө(ର) ཁϦελʔτ σϑΥϧτ 4 ղઆ ϩδΧϧϨϓϦέʔγϣϯͷϫʔΧʔ࠷େΛࢦఆ͠· ͢ɻ దԠϫʔΧʔͱςʔϒϧಉظϫʔΧʔͷ྆ํؚ͕·Ε·
͢ɻ max_worker_processesͷΛڞ༗͠·͢ɻ Ϛελʔ(ύϒϦογϟʔ)ʹઃఆΛߦ͍·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ 2(มߋͳ͠) ϨϓϦέʔγϣϯ(16/17)
ύϥϝʔλʔ໊ max_sync_workers_per_subscription ө(ର) ཁϦϩʔυ σϑΥϧτ 2 ղઆ αϒεΫϦϓγϣϯ͝ͱͷಉظϫʔΧʔͷ࠷େΛࢦఆ ͠·͢ɻ 1ςʔϒϧͷฒྻ1ͰݻఆԽ͞Ε͍ͯΔͨΊɺΛม
ߋ͢Δ͜ͱͰෳςʔϒϧʹର͢Δಉظॲཧͷฒྻ ্͕Γ·͢ɻ Ϛελʔ(ύϒϦογϟʔ)ʹઃఆΛߦ͍·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ 2(มߋͳ͠) ϨϓϦέʔγϣϯ(17/17)
ࢹؔ(1/18) PostgreSQLͷࢹ(ϩά)ؔͷઃఆʹ͍ͭͯղઆ͠·͢ɻ %Τεέʔϓ͕ଟଘࡏ͠·͕͢ɺ͜͜ͰղઆΛߦ͍·ͤΜɻ ৄ͘͠ɺެࣜυΩϡϝϯτΛࢀর͍ͯͩ͘͠͞ɻ https://www.postgresql.jp/document/current/html/runtime-config- logging.html
ύϥϝʔλʔ໊ log_destination ө(ର) ཁϦϩʔυ σϑΥϧτ stderr ղઆ αʔόʔͷϩάग़ྗઌΛઃఆ͠·͢ɻ ड͚͚Δɺ“stderr”ɺ“csvlog”ɺ “syslog”ɺ“eventlog”ͱͳΓ·͢ɻ
ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ stderr(มߋͳ͠) ࢹؔ(2/18)
ύϥϝʔλʔ໊ logging_collector ө(ର) ཁϦελʔτ σϑΥϧτ off ղઆ ඪ४Τϥʔ·ͨCSVॻࣜͷϩάग़ྗʹૹΒΕΔϝοη ʔδΛऔΓग़͠ɺϩάϑΝΠϧʹϦμΠϨΫτ͠·͢ɻ ͜ͷػೳ͕༗ޮͰͳ͍ͱɺϩάϑΝΠϧ࡞͞Ε·ͤ
Μɻ ਪ on ࢹؔ(3/18)
ύϥϝʔλʔ໊ log_directory ө(ର) ཁϦϩʔυ σϑΥϧτ log ղઆ αʔόʔͷϩάϑΝΠϧग़ྗઌΛઃఆ͠·͢ɻ σϑΥϧτ૬ରύεͱͳ͓ͬͯΓɺઈରύεʹม ͢Δͱ“$PGDATA/log”ͱͳΓ·͢ɻ
ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ /var/log/pgsql ࢹؔ(4/18)
ύϥϝʔλʔ໊ log_filename ө(ର) ཁϦϩʔυ σϑΥϧτ postgresql-%Y-%m-%d_%H%M%S.log ղઆ ϩάϑΝΠϧͷϑΝΠϧ໊Λઃఆ͠·͢ɻ CSVग़ྗͷ߹ɺλΠϜελϯϓ͖ͷϩάϑΝΠϧ ໊ʹ.csvΛ༩ͨ͠ϑΝΠϧ໊͕࡞͞Ε·͢ɻ
ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ postgresql%Y%m%d.log ࢹؔ(5/18)
ύϥϝʔλʔ໊ log_file_mode ө(ର) ཁϦϩʔυ σϑΥϧτ 0600 ղઆ ϩάϑΝΠϧͷύʔϛογϣϯΛઃఆ͠·͢ɻ Windowsͷ߹ແࢹ͞Ε·͢ɻ chmod͓ΑͼumaskγεςϜίʔϧͷϞʔυͰهड़
͠·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ 0600(มߋͳ͠) ࢹؔ(6/18)
ύϥϝʔλʔ໊ log_rotation_age ө(ର) ཁϦϩʔυ σϑΥϧτ 1d ղઆ ϩάϑΝΠϧͷ࠷େण໋Λઃఆ͠·͢ɻ ࢦఆ͕࣌ؒܦա͢Δͱɺ৽͍͠ϑΝΠϧʹϩά͕ੜ͞ Ε·͢ɻ
“0”ͷ࣌ɺ࣌ؒʹΑΔϑΝΠϧͷੜ͕ແޮͱͳΓ· ͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ 1d(มߋͳ͠) ࢹؔ(7/18)
ύϥϝʔλʔ໊ log_rotation_size ө(ର) ཁϦϩʔυ σϑΥϧτ 10MB ղઆ ϩάϑΝΠϧͷ࠷େ༰ྔΛઃఆ͠·͢ɻ ࢦఆ༰ྔΛΦʔόʔ͢Δͱɺ৽͍͠ϑΝΠϧʹϩά͕ੜ ͞Ε·͢ɻ
“0”ͷ࣌ɺ༰ྔʹΑΔϑΝΠϧͷੜ͕ແޮͱͳΓ· ͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ 0 ࢹؔ(8/18)
ύϥϝʔλʔ໊ log_truncate_on_rotation ө(ର) ཁϦϩʔυ σϑΥϧτ off ղઆ ϩάϑΝΠϧͷ্ॻ͖Λઃఆ͠·͢ɻ ϩάϑΝΠϧͷϩʔςʔγϣϯ࣌ʹɺಉ͡ϑΝΠϧ໊͕ طʹଘࡏ͍ͯ͠Δͱ্ॻ͖͠·͢ɻ
ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ on ࢹؔ(9/18)
ύϥϝʔλʔ໊ event_source ө(ର) ཁϦελʔτ σϑΥϧτ PostgreSQL ղઆ Πϕϯτϩάͷग़ྗ࣌ʹ༻͞ΕΔϓϩάϥϜ໊Λઃ ఆ͠·͢ɻ WindowsͷΈ༗ޮͱͳΓ·͢ɻ
ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ PostgreSQL(มߋͳ͠) ࢹؔ(10/18)
ύϥϝʔλʔ໊ client_min_messages ө(ର) ଈ࣌ө(શϢʔβʔ) σϑΥϧτ notice ղઆ ΫϥΠΞϯτʹૹ৴͢Δϝοηʔδ֊Λઃఆ͠·͢ɻ “DEBUG5”ɺ“DEBUG4”ɺ“DEBUG3”ɺ“DEBUG2”ɺ “DEBUG1”ɺ“LOG”ɺ“NOTICE”ɺ“WARNING”ɺ
“ERROR”ɺ“FATAL”ɺ“PANIC”͔Βબ͠·͢ɻ ԼҐͷ֊ɺ্Ґͷ֊ͷϝοηʔδΛؚΈ·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ notice(มߋͳ͠) ࢹؔ(11/18)
ύϥϝʔλʔ໊ log_min_messages ө(ର) ଈ࣌ө(εʔύʔϢʔβʔ) σϑΥϧτ warning ղઆ ϩάʹग़ྗ͢Δϝοηʔδ֊Λઃఆ͠·͢ɻ “DEBUG5”ɺ“DEBUG4”ɺ“DEBUG3”ɺ“DEBUG2”ɺ “DEBUG1”ɺ“LOG”ɺ“NOTICE”ɺ“WARNING”ɺ
“ERROR”ɺ“FATAL”ɺ“PANIC”͔Βબ͠·͢ɻ ԼҐͷ֊ɺ্Ґͷ֊ͷϝοηʔδΛؚΈ·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ warning(มߋͳ͠) ࢹؔ(12/18)
ύϥϝʔλʔ໊ log_min_error_statement ө(ର) ଈ࣌ө(εʔύʔϢʔβʔ) σϑΥϧτ error ղઆ ΤϥʔͱͳͬͨSQLจΛɺϩάʹग़ྗ͢Δϝοηʔδ֊ Λઃఆ͠·͢ɻ “DEBUG5”ɺ“DEBUG4”ɺ“DEBUG3”ɺ“DEBUG2”ɺ
“DEBUG1”ɺ“LOG”ɺ“NOTICE”ɺ“WARNING”ɺ “ERROR”ɺ“FATAL”ɺ“PANIC”͔Βબ͠·͢ɻ ԼҐͷ֊ɺ্Ґͷ֊ͷϝοηʔδΛؚΈ·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ error(มߋͳ͠) ࢹؔ(13/18)
ύϥϝʔλʔ໊ log_min_duration_statement ө(ର) ଈ࣌ө(εʔύʔϢʔβʔ) σϑΥϧτ -1 ղઆ ࣮ߦ͕͍࣌ؒSQLจΛϩάग़ྗ͢ΔͨΊͷ࠷খ࣌ؒΛ ઃఆ͠·͢ɻ ϛϦඵ୯ҐͰࢦఆ͕ՄೳͰ͢ɻ
“0”ͷ߹શͯग़ྗ͞Εɺ“-1”ͷ߹ग़ྗ͕ແޮԽ͞ Ε·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ 3s ࢹؔ(14/18)
ύϥϝʔλʔ໊ debug_print_parse, debug_print_rewritten, debug_print_plan ө(ର) ଈ࣌ө(શϢʔβʔ) σϑΥϧτ off ղઆ σόοάใͷग़ྗͷ༗ޮແޮΛઃఆ͠·͢ɻ
༗ޮԽ͢Δ͜ͱͰɺνϡʔχϯάʹ༗ޮͳใ͕ग़ྗ͞ ΕΔ͔͠Ε·ͤΜɻ ॱʹ“ղੳπϦʔ”ɺ“ϦϥΠλʔใ”ɺ “࣮ߦܭը”ͱͳΓ·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ off(มߋͳ͠) ࢹؔ(15/18)
ύϥϝʔλʔ໊ log_hostname ө(ର) ཁϦϩʔυ σϑΥϧτ off ղઆ ϩάग़ྗʹΫϥΠΞϯτͷϗετ໊Λग़ྗ͢ΔઃఆΛߦ ͍·͢ɻ ϗετ໊ͷ໊લղܾΛߦ͏ͨΊɺஶ͍͠ੑೳྼԽ͕ൃੜ
͢ΔՄೳੑ͕͋Γ·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ off(มߋͳ͠) ࢹؔ(16/18)
ύϥϝʔλʔ໊ 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)
ύϥϝʔλʔ໊ log_timezone ө(ର) ཁϦϩʔυ σϑΥϧτ GMT ղઆ ϩάग़ྗ࣌ͷλΠϜκʔϯΛઃఆ͠·͢ɻ initdbͰࢦఆͨ͠ϩέʔϧʹΑΓมΘΓ·͢ɻ ϩέʔϧ͕“C”ͷ߹ɺ“GMT”ͱͳΓ·͢ɻ
ਪ Japan ࢹؔ(18/18)
νϡʔχϯά(1/46) PostgreSQLͷνϡʔχϯάڥσʔλྔɺ༻༻్ʹ߹Θͤͯઃఆ͢ Δඞཁ͕͋Γ·͢ɻ ݟੵΓ࣌ʹࡉ͔͘ݕ౼Λߦ͍ͬͯͯɺظӡ༻͍ͯ͠Δͱੑೳ͕Լ ͢Δ͜ͱ͕͋ΔͨΊɺαʔόʔঢ়ଶΛ֬ೝͯ͠νϡʔχϯάΛߦ͏ඞཁ͕ ͋Γ·͢ɻ
ύϥϝʔλʔ໊ 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)
ύϥϝʔλʔ໊ temp_buffers ө(ର) ଈ࣌ө(શϢʔβʔ) σϑΥϧτ 8MB ղઆ ηογϣϯதʹ༻͞ΕΔҰ࣌όοϑΝʔͷαΠζΛઃ ఆ͠·͢ɻ Ұ࣌όοϑΝʔΛଟ͘༻͢Δ߹มߋ͠·͢ɻ
ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ 8MB(มߋͳ͠) νϡʔχϯά(3/46)
ύϥϝʔλʔ໊ work_mem ө(ର) ଈ࣌ө(શϢʔβʔ) σϑΥϧτ 4MB ղઆ ηογϣϯதͷιʔτϋογϡૢ࡞Ͱ༻͢ΔϝϞϦʔͷα ΠζΛઃఆ͠·͢ɻ େ͖͘͢Δ͜ͱͰ͍߹Θͤੑೳ্͕͠·͕͢ɺෳࡶͳ͍
߹Θͤͷ߹work_memͷഒ༻͞ΕΔ͜ͱ͕͋Γ·͢ɻ ·ͨɺηογϣϯ୯ҐʹඞཁͱͳΔͨΊϝϞϦʔཧʹؾΛͭ ͚͍ͯͩ͘͞ɻ (γεςϜϝϞϦʔ - shared_buffers) / max_connectionsҎ্ͷ ߹εϫοϓ͠ɺੑೳ͕Լ͠·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ 4MB(มߋͳ͠) νϡʔχϯά(4/46)
ύϥϝʔλʔ໊ maintenance_work_mem ө(ର) ଈ࣌ө(શϢʔβʔ) σϑΥϧτ 64MB ղઆ όΩϡʔϜΠϯσοΫε࡞ͳͲͷϝϯςφϯεૢ࡞ ࣌ʹ༻͢ΔϝϞϦʔͷαΠζΛઃఆ͠·͢ɻ ࣗಈόΩϡʔϜ͕ಈ࡞ͨ͠߹ɺ
autovacuum_max_workers * maintenance_work_mem ͷϝϞϦʔ͕༻͞Ε·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ 64MB(มߋͳ͠) νϡʔχϯά(5/46)
ύϥϝʔλʔ໊ max_stack_depth ө(ର) ଈ࣌ө(εʔύʔϢʔβʔ) σϑΥϧτ 2MB ղઆ σʔλϕʔεαʔόʔͷ࣮ߦελοΫͷαΠζΛઃఆ͠· ͢ɻ Χʔωϧͷ࠷େελοΫ༰ྔ͔Β҆શ༨ͷͨΊͷ1MB
Λࠩ͠Ҿ͍ͨΛઃఆ͍ͯͩ͘͠͞ɻ Χʔωϧͷ੍ݶҎ্Λઃఆ͢ΔͱɺόοΫΤϯυϓϩη ε͕Ϋϥογϡ͢ΔڪΕ͕͋Γ·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ ulimit -sͷ݁Ռ(KB) - 1MB νϡʔχϯά(6/46)
ύϥϝʔλʔ໊ effective_io_concurrency ө(ର) ଈ࣌ө(શϢʔβʔ) σϑΥϧτ 1 ղઆ σʔλϕʔεαʔόʔͷಉ࣌σΟεΫI/Oૢ࡞Λઃఆ͠·͢ɻ “0”Λઃఆ͢ΔͱɺඇಉظI/OϦΫΤετ͕ແޮԽ͞Ε·͢ɻ HDDͷ߹ɺRAIDΛߏ͢ΔυϥΠϒΛઃఆͯͩ͘͠͞
͍ɻ ͨͩ͠ɺύϦςΟ༻আ֎͍ͯͩ͘͠͞ɻ SSDͷ߹ɺඦͷ͕࠷దͱߟ͑ΒΕ·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ HDD: RAIDΛߏ͢ΔυϥΠϒ(ύϦςΟ༻আ֎) SSD: 200 νϡʔχϯά(7/46)
ύϥϝʔλʔ໊ max_worker_processes ө(ର) ཁϦελʔτ σϑΥϧτ 8 ղઆ σʔλϕʔεαʔόʔͷόοΫάϥϯυϓϩηεΛ ઃఆ͠·͢ɻ εϨʔϒαʔόʔɺϚελʔαʔόʔͷઃఆҎ্ઃ
ఆ͍ͯͩ͘͠͞ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ CPUͷཧίΞ νϡʔχϯά(8/46)
ύϥϝʔλʔ໊ max_parallel_maintenance_workers ө(ର) ଈ࣌ө(શϢʔβʔ) σϑΥϧτ 2 ղઆ 1ͭͷϢʔςΟϦςΟίϚϯυ͔ΒىಈͰ͖ΔฒྻϫʔΧ ʔͷ࠷େΛઃఆ͠·͢ɻ ݱࡏɺBπϦʔΠϯσοΫε࡞࣌ͷΈ༗ޮͱͳΓ·
͢ɻ PostgreSQL11ͰՃ͞Εͨ৽ύϥϝʔλʔͰ͢ɻ ਪ 2(มߋͳ͠) νϡʔχϯά(9/46)
ύϥϝʔλʔ໊ max_parallel_workers_per_gather ө(ର) ଈ࣌ө(શϢʔβʔ) σϑΥϧτ 2 ղઆ 1ͭͷGather·ͨGather Mergeϊʔυʹରͯ͠ىಈͰ ͖ΔϫʔΧʔͷ࠷େΛઃఆ͠·͢ɻ
“0”Λઃఆ͢ΔͱύϥϨϧΫΤϦʔ͕༻͞Εͳ͘ͳΓ· ͢ɻ max_parallel_workersͰϓʔϧ͞Εͨϓϩηε͔Βऔಘ ͞Ε·͢ɻ ਪ CPUͷཧίΞ / 2 νϡʔχϯά(10/46)
ύϥϝʔλʔ໊ max_parallel_workers ө(ର) ଈ࣌ө(શϢʔβʔ) σϑΥϧτ 8 ղઆ ύϥϨϧΫΤϦʔ༻ͷ࠷େϫʔΧʔΛઃఆ͠·͢ɻ ͜ͷɺmax_worker_processesͷͷ੍ݶΛड͚· ͢ɻ
ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ CPUͷཧίΞ νϡʔχϯά(11/46)
ύϥϝʔλʔ໊ synchronous_commit ө(ର) ଈ࣌ө(શϢʔβʔ) σϑΥϧτ on ղઆ τϥϯβΫγϣϯͷίϛοτ͕ΫϥΠΞϯτʹ“ྃ”Λใࠂ͢ΔલʹWALϨ ίʔυ͕σΟεΫ্ʹॻ͖ࠐ·ΕΔ·Ͱ͔ͭͲ͏͔ͷઃఆΛߦ͍·͢ɻ ϨϓϦέʔγϣϯ࣌ʹӨڹ͕͋Γɺઃఆͷҧ͍ҎԼͷ௨ΓͰ͢ɻ
ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ on(มߋͳ͠) νϡʔχϯά(12/46) ઃఆ ಉظ/ඇಉظ ϓϥΠϚϦʔ εϨʔϒ off ඇಉظ ͨͳ͍ ͨͳ͍ local ඇಉظ ͭ ͨͳ͍ remote_write ಉظ ͭ ϝϞϦॻ͖ࠐΈ·Ͱͭ on ಉظ ͭ σΟεΫॻ͖ࠐΈ·Ͱͭ remote_apply ಉظ ͭ WALదԠ·Ͱͭ
ύϥϝʔλʔ໊ wal_buffers ө(ର) ཁϦελʔτ σϑΥϧτ -1 ղઆ σΟεΫʹॻ͖ࠐ·Ε͍ͯͳ͍WALσʔλ͕༻͢Δڞ ༗ϝϞϦʔͷྔΛઃఆ͠·͢ɻ “-1”ͷ߹ɺshared_buffersͷ32ͷ1͕ઃఆ͞Ε·
͢ɻ shared_buffers͕େ͖͍߹ɺWALηάϝϯτͷେ͖͞ Ͱ͋Δ16MBΛ͑ΔՄೳੑ͕͋ΔͨΊɺ16MBΛઃఆ͠ ·͢ɻ ਪ 16MB νϡʔχϯά(13/46)
ύϥϝʔλʔ໊ checkpoint_timeout ө(ର) ཁϦϩʔυ σϑΥϧτ 5min ղઆ WALνΣοΫϙΠϯτͷλΠϜΞτ࣌ؒΛઃఆ͠· ͢ɻ ͕খ͗͢͞Δͱɺϩάʹϫʔχϯάϝοηʔδ͕ग़ྗ
͞Ε·͢ɻ ਪ 30min νϡʔχϯά(14/46)
ύϥϝʔλʔ໊ checkpoint_completion_target ө(ର) ཁϦϩʔυ σϑΥϧτ 0.5 ղઆ ࣍ͷνΣοΫϙΠϯτ͕࣮ߦ͞ΕΔ·ͰͷؒʹͲΕ͘Β ͍ͷ࣌ؒΛֻ͚ͯॻ͖ग़͔͢Λઃఆ͠·͢ɻ ਪ
(checkpoint_timeout - 2min) / checkpoint_timeout νϡʔχϯά(15/46)
ύϥϝʔλʔ໊ max_wal_size ө(ର) ཁϦϩʔυ σϑΥϧτ 1GB ղઆ ࣍ͷνΣοΫϙΠϯτ͕࣮ࢪ͞ΕΔWALϑΝΠϧͷαΠ ζΛઃఆ͠·͢ɻ ιϑτϦϛοτͷͨΊɺ݅ʹΑͬͯ͑Δ͜ͱ͕͋Γ
·͢ɻ ߋ৽͕සൟʹى͜Δ߹ɺνΣοΫϙΠϯτ͕සൟʹൃ ੜ͢ΔͨΊੑೳ͕Լ͠·͢ɻ ϩάʹϫʔχϯά͕ग़͍ͯΔ߹มߋ͍ͯͩ͘͠͞ɻ ਪ 1GB(มߋແ͠) νϡʔχϯά(16/46)
ύϥϝʔλʔ໊ min_wal_size ө(ର) ཁϦϩʔυ σϑΥϧτ 80MB ղઆ WALϑΝΠϧͷ࠷খαΠζΛઃఆ͠·͢ɻ WALϑΝΠϧΛ࠶ར༻ɾআ͢Δࡍͷܭࢉࣜʹ༻͞ Ε·͢ɻ
ਪ 80MB(มߋແ͠) νϡʔχϯά(17/46)
ύϥϝʔλʔ໊ seq_page_cost ө(ର) ଈ࣌ө(શϢʔβʔ) σϑΥϧτ 1.0 ղઆ σΟεΫ͔Β1ϖʔδσʔλΛγʔέϯγϟϧʹऔಘ͢ ΔࡍͷɺϓϥϯφʔͷਪఆίετΛઃఆ͠·͢ɻ ਪ
1.0(มߋແ͠) νϡʔχϯά(18/46)
ύϥϝʔλʔ໊ random_page_cost ө(ର) ଈ࣌ө(શϢʔβʔ) σϑΥϧτ 4.0 ղઆ σΟεΫ͔Β1ϖʔδσʔλΛϥϯμϜʹऔಘ͢Δࡍ ͷɺϓϥϯφʔͷਪఆίετΛઃఆ͠·͢ɻ HDDΛج४ʹઃఆ͞Ε͍ͯ·͢ɻ
γʔέϯγϟϧͱϥϯμϜΞΫηεεϐʔυ͕ಉ͡SSD ͷ߹ɺseq_page_costͷͱಉ͡ͱ͢Δ͜ͱͰߴ ԽͰ͖·͢ɻ ਪ HDD: 4.0(มߋແ͠) SSD: 1.0 νϡʔχϯά(19/46)
ύϥϝʔλʔ໊ cpu_tuple_cost ө(ର) ଈ࣌ө(શϢʔβʔ) σϑΥϧτ 0.01 ղઆ ͍߹Θͤ࣌ͷߦͷॲཧίετʹର͢Δɺϓϥϯφʔͷ ਪఆίετΛઃఆ͠·͢ɻ ਪ
0.01(มߋແ͠) νϡʔχϯά(20/46)
ύϥϝʔλʔ໊ cpu_index_tuple_cost ө(ର) ଈ࣌ө(શϢʔβʔ) σϑΥϧτ 0.005 ղઆ ΠϯσοΫεࠪ࣌ͷΠϯσοΫεߦͷॲཧίετʹର ͢ΔɺϓϥϯφʔͷਪఆΛઃఆ͠·͢ɻ ਪ
0.005(มߋແ͠) νϡʔχϯά(21/46)
ύϥϝʔλʔ໊ cpu_operator_cost ө(ର) ଈ࣌ө(શϢʔβʔ) σϑΥϧτ 0.0025 ղઆ ͍߹Θͤ࣌ʹ࣮ߦ͞ΕΔ֤ԋࢉࢠؔͷॲཧίετ ʹର͢ΔɺϓϥϯφʔͷਪఆΛઃఆ͠·͢ɻ ਪ
0.0025(มߋແ͠) νϡʔχϯά(22/46)
ύϥϝʔλʔ໊ parallel_tuple_cost ө(ର) ଈ࣌ө(શϢʔβʔ) σϑΥϧτ 0.1 ղઆ ύϥϨϧϫʔΧʔϓϩηε͔Βɺ1ߦΛଞͷϓϩηεʹస ૹ͢ΔͨΊͷίετʹର͢ΔɺϓϥϯφʔͷਪఆΛઃ ఆ͠·͢ɻ
ਪ 0.1(มߋແ͠) νϡʔχϯά(23/46)
ύϥϝʔλʔ໊ parallel_setup_cost ө(ର) ଈ࣌ө(શϢʔβʔ) σϑΥϧτ 1000.0 ղઆ ύϥϨϧϫʔΧʔϓϩηεΛىಈ͢ΔͨΊͷίετʹର ͢ΔɺϓϥϯφʔͷਪఆΛઃఆ͠·͢ɻ ਪ
1000.0(มߋແ͠) νϡʔχϯά(24/46)
ύϥϝʔλʔ໊ jit_above_cost ө(ର) ଈ࣌ө(શϢʔβʔ) σϑΥϧτ 100000 ղઆ JITίϯύΠϧ͕༗ޮʹͳΔΫΤϦͷίετΛઃఆ͠· ͢ɻ JITͷىಈʹ͕͔͔࣌ؒΔͨΊɺ͙͢ʹىಈ͠ͳ͍Α
͏ʹͳ͍ͬͯ·͢ɻ “-1”Λઃఆ͢ΔͱJITίϯύΠϧ͕ແޮԽ͞Ε·͢ɻ ਪ 100000(มߋແ͠) νϡʔχϯά(25/46)
ύϥϝʔλʔ໊ jit_inline_above_cost ө(ର) ଈ࣌ө(શϢʔβʔ) σϑΥϧτ 500000 ղઆ JITίϯύΠϧ͕ؔԋࢉࢠΛΠϯϥΠϯԽ͢Δ߹ͷ ΫΤϦίετΛઃఆ͠·͢ɻ “-1”Λઃఆ͢ΔͱJITίϯύΠϧʹΑΔΠϯϥΠϯԽ͕ແ
ޮԽ͞Ε·͢ɻ ਪ 500000(มߋແ͠) νϡʔχϯά(26/46)
ύϥϝʔλʔ໊ jit_optimize_above_cost ө(ର) ଈ࣌ө(શϢʔβʔ) σϑΥϧτ 500000 ղઆ JITίϯύΠϧͷ࠷దԽʹ͔͔ΔΫΤϦίετΛઃఆ͠· ͢ɻ “-1”Λઃఆ͢ΔͱJITίϯύΠϧͷ࠷దԽ͕ແޮԽ͞Ε·
͢ɻ ਪ 500000(มߋແ͠) νϡʔχϯά(27/46)
ύϥϝʔλʔ໊ min_parallel_table_scan_size ө(ର) ଈ࣌ө(શϢʔβʔ) σϑΥϧτ 8MB ղઆ ύϥϨϧεΩϟϯΛߟྀ͢Δ࠷খͷςʔϒϧͷσʔλα ΠζΛઃఆ͠·͢ɻ ਪ
8MB(มߋແ͠) νϡʔχϯά(28/46)
ύϥϝʔλʔ໊ min_parallel_index_scan_size ө(ର) ଈ࣌ө(શϢʔβʔ) σϑΥϧτ 512KB ղઆ ύϥϨϧεΩϟϯ࣮ߦ࣌ʹඞͣεΩϟϯ͢ΔΠϯσοΫ εσʔλͷ࠷খΛઃఆ͠·͢ɻ ϓϥϯφʔͷίετਪఆ༻ͱͳΓ·͢ɻ
ਪ 512KB(มߋແ͠) νϡʔχϯά(29/46)
ύϥϝʔλʔ໊ effective_cache_size ө(ର) ଈ࣌ө(શϢʔβʔ) σϑΥϧτ 4GB ղઆ ͍߹Θͤ࣌ʹͲͷఔΩϟογϡώοτ͢Δ͔Λ༧ଌ ͢ΔͨΊͷΩϟογϡαΠζΛઃఆ͠·͢ɻ PostgreSQLͷڞ༗όοϑΝʔ͚ͩͰͳ͘ɺOSͷϑΝΠ
ϧΩϟογϡσΟεΫΩϟογϡΛߟྀ͢Δඞཁ͕ ͋Γ·͢ɻ ࣮ࡍʹϝϞϦʔͷ֬อߦΘΕͣɺϓϥϯφʔͷίε τਪఆ༻ͱͳΓ·͢ɻ ਪ γεςϜϝϞϦʔͷ50%ͷ༰ྔ νϡʔχϯά(30/46)
ύϥϝʔλʔ໊ autovacuum_max_workers ө(ର) ཁϦελʔτ σϑΥϧτ 3 ղઆ ಉ࣌ʹ࣮ߦ͢ΔࣗಈόΩϡʔϜॲཧͷ࠷େϫʔΧʔΛ ઃఆ͠·͢ɻ ਪ
σʔλϕʔεαΠζͷ20%Λ͑Δେ͖ͳςʔϒϧ + 1 νϡʔχϯά(31/46)
ύϥϝʔλʔ໊ autovacuum_vacuum_threshold ө(ର) ཁϦϩʔυ σϑΥϧτ 50 ղઆ όΩϡʔϜॲཧʹඞཁͳɺߋ৽·ͨআ͞Εͨλϓϧ ͷ࠷খΛઃఆ͠·͢ɻ ͜ͷύϥϝʔλʔɺશςʔϒϧʹରͯ͠దԠ͞Ε·
͢ɻ ਪ 50(มߋແ͠) νϡʔχϯά(32/46)
ύϥϝʔλʔ໊ autovacuum_analyze_threshold ө(ର) ཁϦϩʔυ σϑΥϧτ 50 ղઆ ߋ৽ॲཧʹඞཁͳɺߋ৽·ͨআ͞Εͨλϓϧͷ࠷ খΛઃఆ͠·͢ɻ ͜ͷύϥϝʔλʔɺશςʔϒϧʹରͯ͠దԠ͞Ε·
͢ɻ ਪ 50(มߋແ͠) νϡʔχϯά(33/46)
ύϥϝʔλʔ໊ autovacuum_vacuum_scale_factor ө(ର) ཁϦϩʔυ σϑΥϧτ 0.2 ղઆ όΩϡʔϜॲཧʹඞཁͳɺߋ৽͞Εͨςʔϒϧߦͷׂ ߹Λઃఆ͠·͢ɻ ͜ͷύϥϝʔλʔɺશςʔϒϧʹରͯ͠దԠ͞Ε·
͢ɻ ਪ 0.2(มߋແ͠) νϡʔχϯά(34/46)
ύϥϝʔλʔ໊ autovacuum_analyze_scale_factor ө(ର) ཁϦϩʔυ σϑΥϧτ 0.1 ղઆ ߋ৽ॲཧʹඞཁͳɺߋ৽͞Εͨςʔϒϧߦͷׂ߹Λઃ ఆ͠·͢ɻ ͜ͷύϥϝʔλʔɺશςʔϒϧʹରͯ͠దԠ͞Ε·
͢ɻ ਪ 0.1(มߋແ͠) νϡʔχϯά(35/46)
ύϥϝʔλʔ໊ search_path ө(ର) ଈ࣌ө(શϢʔβʔ) σϑΥϧτ "$user", public ղઆ ΫΤϦ͕εΩʔϚΛࢦఆ͍ͯ͠ͳ͍߹ɺεΩʔϚΛ ݕࡧ͢Δॱ൪Λઃఆ͠·͢ɻ
“$user”ɺSESSION_USERͱಉ͡εΩʔϚ͕͋Εɺ ஔ͞Ε·͢ɻ ཁ݅ʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ "$user", public(มߋແ͠) νϡʔχϯά(36/46)
ύϥϝʔλʔ໊ row_security ө(ର) ଈ࣌ө(શϢʔβʔ) σϑΥϧτ on ղઆ ߦηΩϡϦςΟϙϦγʔͷదԠʹΑͬͯΤϥʔΛൃੜ͞ ͤΔ͔ઃఆ͠·͢ɻ “off”ɺҰͭͰϙϦγʔ͕దԠ͞ΕͨΫΤϦ͕Τϥʔ
ͱͳΓ·͢ɻ ߦηΩϡϦςΟϙϦγʔʹ͍ͭͯɺެࣜυΩϡϝϯτ Λ͝ࢀর͍ͩ͘͞ɻ https://www.postgresql.jp/document/10/html/sql- createpolicy.html ਪ on(มߋແ͠) νϡʔχϯά(37/46)
ύϥϝʔλʔ໊ default_tablespace ө(ର) ଈ࣌ө(શϢʔβʔ) σϑΥϧτ ’’(ۭന) ղઆ CREATEίϚϯυͰ໌ࣔతʹςʔϒϧεϖʔεΛࢦఆͯ͠ ͍ͳ͍߹ʹɺΦϒδΣΫτͷ࡞ઌͱͳΔσϑΥϧτ ͷςʔϒϧεϖʔεΛઃఆ͠·͢ɻ
ۭനͷ߹ɺݱࡏͷσʔλϕʔεͷσϑΥϧτςʔϒϧ εϖʔεΛ༻͠·͢ɻ Ұ࣌ςʔϒϧɺtemp_tablespacesͰࢦఆ͠·͢ɻ ਪ ’’(มߋͳ͠) νϡʔχϯά(38/46)
ύϥϝʔλʔ໊ temp_tablespaces ө(ର) ଈ࣌ө(શϢʔβʔ) σϑΥϧτ ’’(ۭന) ղઆ CREATEίϚϯυͰ໌ࣔతʹςʔϒϧεϖʔεΛࢦఆͯ͠ ͍ͳ͍߹ʹɺҰ࣌ΦϒδΣΫτͷ࡞ઌͱͳΔσϑΥ ϧτͷςʔϒϧεϖʔεΛઃఆ͠·͢ɻ
ۭനͷ߹ɺݱࡏͷσʔλϕʔεͷσϑΥϧτςʔϒϧ εϖʔεΛ༻͠·͢ɻ ਪ ’’(มߋͳ͠) νϡʔχϯά(39/46)
ύϥϝʔλʔ໊ statement_timeout ө(ର) ଈ࣌ө(શϢʔβʔ) σϑΥϧτ 0 ղઆ ίϚϯυ͕ΫϥΠΞϯτ͔Βαʔόʔʹ౸ୡ͔ͯ͠Βλ ΠϜΞτ͢Δ·Ͱͷ࣌ؒΛઃఆ͠·͢ɻ ϛϦඵ୯ҐͰࢦఆ͕ՄೳͰ͢ɻ
0ͷ߹λΠϜΞτػೳΛແޮԽ͠·͢ɻ ਪ 0(มߋͳ͠) νϡʔχϯά(40/46)
ύϥϝʔλʔ໊ lock_timeout ө(ର) ଈ࣌ө(શϢʔβʔ) σϑΥϧτ 0 ղઆ σʔλϕʔεΦϒδΣΫτͷϩοΫͪͰλΠϜΞτ ͢Δ·Ͱͷ࣌ؒΛઃఆ͠·͢ɻ ϛϦඵ୯ҐͰࢦఆ͕ՄೳͰ͢ɻ
0ͷ߹λΠϜΞτػೳΛແޮԽ͠·͢ɻ ਪ 0(มߋͳ͠) νϡʔχϯά(41/46)
ύϥϝʔλʔ໊ idle_in_transaction_session_timeout ө(ର) ଈ࣌ө(શϢʔβʔ) σϑΥϧτ 0 ղઆ ΞΠυϧঢ়ଶͷτϥϯβΫγϣϯ͕ηογϣϯλΠϜΞ τ͢Δ·Ͱͷ࣌ؒΛઃఆ͠·͢ɻ ϛϦඵ୯ҐͰࢦఆ͕ՄೳͰ͢ɻ
0ͷ߹λΠϜΞτػೳΛແޮԽ͠·͢ɻ ਪ 0(มߋͳ͠) νϡʔχϯά(42/46)
ύϥϝʔλʔ໊ vacuum_cleanup_index_scale_factor ө(ର) ଈ࣌ө(શϢʔβʔ) σϑΥϧτ 0.1 ղઆ B-treeΠϯσοΫεͷόΩϡʔϜॲཧΛ࣮ߦ͢ΔͨΊ ͷɺલճͷόΩϡʔϜॲཧ͔Βมߋ͞Εͨߦͷׂ߹ Λઃఆ͠·͢ɻ
σϑΥϧτͰɺ0.1%ͷมߋ͕͋ΔςʔϒϧͷΈΠ ϯσοΫεͷόΩϡʔϜ͕࣮ߦ͞Ε·͢ɻ PostgreSQL11ͰՃ͞Εͨ৽ύϥϝʔλʔͰ͢ɻ ਪ 0.1(มߋͳ͠) νϡʔχϯά(43/46)
ύϥϝʔλʔ໊ client_encoding ө(ର) ଈ࣌ө(શϢʔβʔ) σϑΥϧτ sql_ascii ղઆ ΫϥΠΞϯτଆͷจࣈηοτΛઃఆ͠·͢ɻ ΞϓϦέʔγϣϯʹ߹Θͤͯมߋ͍ͯͩ͘͠͞ɻ ਪ
sql_ascii(มߋͳ͠) νϡʔχϯά(44/46)
ύϥϝʔλʔ໊ deadlock_timeout ө(ର) ଈ࣌ө(εʔύʔϢʔβʔ) σϑΥϧτ 1s ղઆ ϩοΫͪͷঢ়ଶʹͳͬͨࡍʹɺσουϩοΫͷݕग़ॲ ཧΛ։࢝͢Δ·Ͱͷͪ࣌ؒΛઃఆ͠·͢ɻ ϛϦඵ୯ҐͰࢦఆ͕ՄೳͰ͢ɻ
σουϩοΫͷݕग़ʹίετ͕ߴ͍ͨΊɺΞϓϦέʔ γϣϯଆͰσουϩοΫ͕ى͜Βͳ͍Α͏ʹͯ͘͠ ͍ͩ͞ɻ ਪ 10s νϡʔχϯά(45/46)
ύϥϝʔλʔ໊ max_locks_per_transaction, max_pred_locks_per_transaction ө(ର) ཁϦελʔτ σϑΥϧτ 64 ղઆ τϥϯβΫγϣϯͷฏۉϩοΫͷΛઃఆ͠·͢ɻ ୯ҰͷτϥϯβΫγϣϯͰɺଟͷςʔϒϧͷϩοΫ͕
ൃੜ͢ΔΞϓϦέʔγϣϯͷ߹ɺΛ૿͢ඞཁ͕ ͋Γ·͢ɻ ਪ 64(มߋແ͠) νϡʔχϯά(46/46)
͓·͚: ϝϞϦʔͷׂΓͯྫ 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
͓·͚: ΧʔωϧϦιʔεͷมߋ 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ͷ )
ऴΘΓʹ ύϥϝʔλʔʹΑΔνϡʔχϯάɺ ࣮ࡍͷӡ༻Ͱαʔόʔߏೖ͞ΕΔσʔλྔɺ ൃߦ͞ΕΔSQLʹ߹Θͤͯɺ࠷దͳ͕ҟͳΓ·͢ɻ ͜·ΊʹPostgreSQLͷঢ়ଶΛ֬ೝ͠ɺ ҆ఆՔಇΛࢦ͍ͯͩ͘͠͞ɻ
ྑ͍PostgreSQLϥΠΫΛʂ ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ