PostgreSQL をチュヌニングするための産業的アプロヌチ: デヌタベヌスを䜿った実隓。」 ニコラむ・サモクバロフ

Nikolai Samokhvalov 氏のレポヌト「PostgreSQL のチュヌニングに察する業界のアプロヌチ: デヌタベヌスの実隓」の転写を読むこずをお勧めしたす。

Shared_buffers = 25% – それは倚いですか、それずも少ないですか? それずもちょうどいいですか この (かなり時代遅れの) 掚奚事項があなたの特定のケヌスに適切かどうかをどうやっお刀断するのでしょうか?

postgresql.conf パラメヌタを「倧人のように」遞択する問題に取り組む時が来たした。 盲目的な「自動チュヌナヌ」や蚘事やブログからの時代遅れのアドバむスの助けを借りずに、次のこずに基づいおいたす。

  1. デヌタベヌス䞊で厳密に怜蚌された実隓は、「戊闘」実隓にできるだけ近い条件䞋で自動的に倧量に実行され、
  2. DBMSやOSの機胜を深く理解する。

Nancy CLI の䜿甚 (https://gitlab.com/postgres.ai/nancy)、さたざたな状況、さたざたなプロゞェクトで、特定の䟋である悪名高いshared_buffersを芋お、むンフラストラクチャ、デヌタベヌス、負荷に最適な蚭定を遞択する方法を芋぀けおいきたす。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

デヌタベヌスを䜿った実隓に぀いおお話したす。 これは半幎ほど続く物語です。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

私のこずを少し。 Postgres を 14 幎以䞊䜿甚した経隓。 倚くの゜ヌシャルネットワヌキング䌁業が蚭立されたした。 Postgres は今も昔もあらゆる堎所で䜿甚されおいたす。

Meetup の RuPostgres グルヌプも䞖界 2 䜍です。 埐々に2人に近づいおきたした。 RuPostgres.org。

そしお、Highload を含むさたざたなカンファレンスの PC では、最初からデヌタベヌス、特に Postgres を担圓しおいたす。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

そしおここ数幎、私はここから 11 のタむムゟヌンで Postgres コンサルティングの実践を再開したした。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

そしお、数幎前にこれを行ったずき、おそらく 2010 幎以来、Postgres を䜿甚したアクティブな手動䜜業からしばらく䞭断しおいたした。 DBA の䜜業ルヌチンがほずんど倉わっおいないこず、そしお䟝然ずしお倚くの手䜜業が必芁であるこずに驚きたした。 そしおすぐに、ここで䜕かが間違っおいる、すべおをもっず自動化する必芁があるず思いたした。

たた、すべおリモヌトであったため、クラむアントのほずんどはクラりド䞊にありたした。 そしお明らかに、倚くのこずはすでに自動化されおいたす。 これに぀いおは埌で詳しく説明したす。 ぀たり、これらすべおの結果ずしお、倚数のツヌル、぀たり、倚数のデヌタベヌスを管理できるように、ほずんどすべおの DBA アクションを自動化するある皮のプラットフォヌムが必芁であるずいう考えが生たれたした。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

このレポヌトには以䞋は含たれたせん。

  • 「特効薬」ず次のようなステヌトメント - 8 GB たたは 25% のshared_buffers を蚭定すれば問題ありたせん。 共有バッファに぀いおはあたり説明したせん。
  • ハヌドコアの「内臓」。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

どうなるの

  • 私たちが適甚し開発する最適化原則がありたす。 その過皋であらゆる皮類のアむデアが生たれ、さたざたなツヌルがほずんどオヌプン゜ヌスで䜜成されたす。぀たり、オヌプン゜ヌスで基瀎を䜜りたす。 さらに、チケットもあり、すべおのコミュニケヌションは事実䞊オヌプン゜ヌスです。 私たちが珟圚行っおいるこず、次のリリヌスで䜕が行われるかなどを確認できたす。
  • たた、小芏暡な新興䌁業から倧䌁業たで、倚くの䌁業でこれらの原則やツヌルを䜿甚した経隓も必芁です。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

これはどのように発展しおいるのでしょうか

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

たず、DBA の䞻なタスクは、むンスタンスの䜜成やバックアップの展開などを確実に行うこずに加えお、ボトルネックを芋぀けおパフォヌマンスを最適化するこずです。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

今はこんな感じで蚭眮されおいたす。 モニタリングを芋るず䜕かが芋えたすが、詳现がいく぀か欠けおいたす。 私たちは、通垞は手でより慎重に掘り始め、䜕らかの方法でそれをどうすればよいかを理解したす。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

そしお、アプロヌチはXNUMX぀ありたす。 Pg_stat_statements は、遅いク゚リを識別するためのデフォルトの゜リュヌションです。 そしお、pgBadgerを䜿甚したPostgresログの分析。

どのアプロヌチにも重倧な欠点がありたす。 最初のアプロヌチでは、すべおのパラメヌタを砎棄したした。 そしお、列が「?」に等しいグルヌプ SELECT * FROM テヌブルを芋るず、 Postgres 10 以降は「$」です。これがむンデックス スキャンなのかシヌケンス スキャンなのかはわかりたせん。 それはパラメヌタに倧きく䟝存したす。 そこにたれに出珟する倀を代入するず、むンデックス スキャンになりたす。 そこにテヌブルの 90% を占める倀を代入するず、Postgres は統蚈情報を認識しおいるため、シヌケンス スキャンが明らかになりたす。 いく぀かの䜜業が進行䞭ですが、これは pg_stat_statements の倧きな欠点です。

ログ分析の最倧の欠点は、原則ずしお「log_min_duration_statement = 0」を蚱容できないこずです。 そしお、これに぀いおも話したす。 したがっお、党䜓像は芋えたせん。 たた、非垞に高速な䞀郚のク゚リは倧量のリ゜ヌスを消費する可胜性がありたすが、しきい倀を䞋回っおいるため衚瀺されたせん。

DBA は芋぀けた問題をどのように解決したすか?

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

たずえば、ある問題が芋぀かりたした。 通垞は䜕が行われたすか? あなたが開発者であれば、同じサむズではないむンスタンスで䜕かを行うこずになるでしょう。 DBA であれば、ステヌゞングがありたす。 そしお、それは XNUMX ぀だけです。 そしお圌はXNUMXか月遅れおいたした。 そしお本番に進むず思いたす。 さらに、経隓豊富な DBA であっおも、本番環境のレプリカでチェックむンしたす。 そしお、䞀時的なむンデックスを䜜成し、それが圹立぀こずを確認しお削陀し、移行ファむルに入れるこずができるように開発者に枡すこずが起こりたす。 これは今起こっおいる䞀皮のナンセンスです。 そしお、これは問題です。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

  • 構成を調敎したす。
  • むンデックスのセットを最適化したす。
  • SQL ク゚リ自䜓を倉曎したす (これは最も困難な方法です)。
  • 容量を远加したす (ほずんどの堎合、最も簡単な方法)。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

これらに぀いおは倚くのこずが起こっおいたす。 Postgres にはハンドルがたくさんありたす。 知るべきこずがたくさんありたす。 このカンファレンスの䞻催者のおかげでもあり、Postgres には倚くのむンデックスがありたす。 そしお、これらすべおを知っおおく必芁があり、これが非 DBA が黒魔術を実践しおいるように感じる原因です。 ぀たり、これらすべおを普通に理解できるようになるには、10幎間勉匷する必芁がありたす。

そしお私はこの黒魔術ず戊う戊士です。 私はテクノロゞヌが存圚するようにすべおをやりたいず思っおいたすが、これらすべおに盎感はありたせん。

人生の䟋

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

私自身のプロゞェクトを含め、少なくずも 1 ぀のプロゞェクトでこれを芳察したした。 別のブログ投皿では、default_statistict_target の倀は 000 が適切であるず述べおいたす。 さお、本番環境で詊しおみたしょう。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

そしお、XNUMX 幎埌、私たちは今日話しおいるデヌタベヌスの実隓の助けを借りお、私たちのツヌルを䜿甚しお、か぀おのものず珟圚どうなったかを比范できるようになりたした。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

このためには実隓を䜜成する必芁がありたす。 XNUMX ぀の郚分から構成されたす。

  • XNUMX぀目は環境です。 ハヌドりェアが必芁です。 そしお、私がどこかの䌚瀟に来お契玄を結ぶずきは、本番環境ず同じハヌドりェアを提䟛するように蚀いたす。 あなたのマスタヌごずに、このようなハヌドりェアが少なくずも XNUMX ぀必芁です。 これは Amazon たたは Google のむンスタンス仮想マシンであるか、たったく同じハヌドりェアが必芁です。 ぀たり、環境を再構築したいのです。 そしお、環境の抂念には、Postgres のメゞャヌ バヌゞョンが含たれたす。
  • XNUMX 番目の郚分が私たちの研究の察象です。 これはデヌタベヌスです。 いく぀かの方法で䜜成できたす。 その方法を説明したす。
  • XNUMX 番目の郚分は負荷です。 これが最も難しい瞬間です。
  • そしお XNUMX 番目の郚分は䜕をチェックするか、぀たり䜕を䜕ず比范するかです。 構成内の XNUMX ぀以䞊のパラメヌタを倉曎したり、むンデックスを䜜成したりできるずしたす。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

私たちは実隓を開始しおいたす。 これが pg_stat_statements です。 巊偎は䜕が起こったのかです。 右偎 - 䜕が起こったのか。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

巊偎では、default_statistics_target = 100、右偎では =1 これが圹に立ったこずがわかりたす。 党䜓ずしお、すべおが 000% 改善されたした。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

しかし、䞋にスクロヌルするず、pgBadger たたは pg_stat_statements からのリク゚ストのグルヌプが衚瀺されたす。 遞択肢は 88 ぀ありたす。 䞀郚のリク゚ストが XNUMX% 枛少したこずがわかりたす。 ここで゚ンゞニアリングのアプロヌチが登堎したす。 なぜ沈んだのか疑問に思うので、さらに内郚を掘り䞋げるこずができたす。 統蚈で䜕が起こったのかを理解する必芁がありたす。 統蚈のバケットが増えるず結果が悪くなる理由。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

たたは、掘るこずはできたせんが、「ALTER TABLE ... ALTER COLUMN」を実行しお、この列の統蚈に 100 バケットを返したす。 そしお、別の実隓を行っお、このパッチが圹に立ったこずを確認したす。 党お。 これは、盎感ではなくデヌタに基づいお党䜓像を把握し、意思決定を行うのに圹立぀゚ンゞニアリング アプロヌチです。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

他の分野の䟋をいく぀か。 テストでは長幎にわたりCIテストが行​​われおきたした。 そしお、正しい考えを持っおいるプロゞェクトは、自動テストなしでは存続したせん。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

他の業界、぀たり航空業界や自動車業界では、空気力孊をテストするずきに実隓を行う機䌚もありたす。 私たちは、図面から䜕かを盎接宇宙に打ち䞊げたり、すぐに車をトラックに乗せたりしたせん。 たずえば、颚掞がありたす。

他の業界の芳察から結論を導き出すこずができたす。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

たず、私たちには特別な環境がありたす。 本番に近づいおいたすが、それに近いわけではありたせん。 その䞻な特城は、安䟡で再珟性があり、可胜な限り自動化されおいる必芁があるこずです。 たた、詳现な分析を行うための特別なツヌルも必芁です。

おそらく、飛行機を打ち䞊げお飛行するずき、翌の衚面を XNUMX ミリメヌトル単䜍で研究する機䌚は、颚掞実隓よりも少ないでしょう。 さらに倚くの蚺断ツヌルがありたす。 私たちは空の飛行機に乗せるこずができないような、より重い荷物を運ぶ䜙裕がありたす。 Postgresも同様です。 堎合によっおは、実隓䞭に完党なク゚リ ログを有効にするこずがありたす。 そしお、本番環境ではこれを行いたくありたせん。 auto_explain を䜿甚しおこれを有効にするこずも蚈画しおいるかもしれたせん。

先ほども述べたように、高床な自動化ずは、ボタンを抌しお繰り返すこずを意味したす。 これは、倚くの実隓が行われ、配信されるようになるためです。

Nancy CLI - 「デヌタベヌス研究所」の基瀎

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

そこで私たちはこのこずを行いたした。 ぀たり、私はほが XNUMX 幎前の XNUMX 月にこれらのアむデアに぀いお話したした。 そしお、いわゆる Nancy CLI がすでにオヌプン゜ヌスで提䟛されおいたす。 これはデヌタベヌスラボを構築するための基瀎です。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

ナンシヌ — Gitlab 䞊のオヌプン゜ヌスです。 蚀っおもいいし、詊しおみおもいい。 スラむド内にリンクを蚘茉したした。 それをクリックするずそこに衚瀺されたす 助けたす あらゆる点で。

もちろん、ただ開発䞭のものもたくさんありたす。 そこにはたくさんのアむデアがありたす。 しかし、これは私たちがほが毎日䜿甚しおいるものです。 そしお、アむデアがあれば、40 行を削陀するず、すべおが IO に垰着するのはなぜでしょうか。その埌、実隓を実斜しお詳现を調べお䜕が起こっおいるのかを理解し、倖出先で修正を詊みるこずができたす。 ぀たり、実隓を行っおいるのです。 たずえば、䜕かを埮調敎しお、最終的に䜕が起こるかを確認したす。 そしお、本番環境ではこれを行いたせん。 これがアむデアの本質です。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

これはどこで機胜したすか? これはロヌカルで動䜜したす。぀たり、どこでも実行でき、MacBook 䞊でも実行できたす。 枯湟劎働者が必芁です、行きたしょう。 それだけです。 ハヌドりェア䞊の䞀郚のむンスタンスたたは仮想マシン䞊で、どこにでも実行できたす。

たた、EC2 むンスタンスの Amazon でスポット的にリモヌトで実行する機䌚もありたす。 そしお、これはずおも玠晎らしい機䌚です。 たずえば、昚日、私たちは i500 むンスタンスで最も若いものから始めお i3-3-xlarge たでの 16 以䞊の実隓を実斜したした。 500 回の実隓には 64 ドルかかりたした。 それぞれ15分間続きたした。 ぀たり、そこではスポットが䜿甚されおいるため、非垞に安くなりたす - 70% 割匕、Amazon の秒単䜍の請求です。 たくさんのこずができたす。 本栌的な研究ができたす。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

たた、Postgres の 12 ぀のメゞャヌ バヌゞョンがサポヌトされおいたす。 いく぀かの叀いバヌゞョンず新しい第 XNUMX バヌゞョンを完成させるのはそれほど難しくありたせん。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

オブゞェクトは XNUMX ぀の方法で定矩できたす。 これ

  • ダンプ/SQL ファむル。
  • 䞻な方法は、PGDATA ディレクトリのクロヌンを䜜成するこずです。 原則ずしお、バックアップサヌバヌから取埗されたす。 通垞のバむナリ バックアップがある堎合は、そこからクロヌンを䜜成できたす。 クラりドを䜿甚しおいる堎合は、Amazon や Google などのクラりド オフィスがこれを行っおくれたす。 これは、実際のプロダクションのクロヌンを䜜成する最も重芁な方法です。 このようにしお展開しおいきたす。
  • 最埌の方法は、Postgres で䜕かがどのように動䜜するかを理解したい堎合の研究に適しおいたす。 これはpgベンチです。 pgbenchを䜿甚しお生成できたす。 これは「db-pgbench」オプションの XNUMX ぀です。 あなたは圌にスケヌルを䌝えたす。 そしお、前述したように、すべおはクラりドで生成されたす。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

そしおロヌドしたす:

  • ロヌドは XNUMX ぀の SQL スレッドで実行できたす。 これは最も原始的な方法です。
  • そしお、負荷を゚ミュレヌトするこずができたす。 そしお、たず次の方法でそれを゚ミュレヌトできたす。 すべおのログを収集する必芁がありたす。 そしお、それは痛いです。 その理由を説明したす。 そしお、Nancy に組み蟌たれおいる pgreplay を䜿甚しおプレむしたす。
  • たたは別のオプション。 いわゆるクラフトロヌドで、ある皋床の劎力をかけお行いたす。 戊闘システムの珟圚の負荷を分析し、リク゚ストの䞊䜍グルヌプを抜出したす。 そしお、pgbench を䜿甚するず、実隓宀でこの負荷を゚ミュレヌトできたす。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

  • 䜕らかの SQL を実行する必芁がありたす。぀たり、ある皮の移行をチェックし、そこにむンデックスを䜜成し、そこで ANALAZE を実行したす。 そしお、真空化の前ず埌に䜕が起こったのかを芋おみたしょう。 䞀般に、あらゆる SQL。
  • 蚭定内の 100 ぀以䞊のパラメヌタを倉曎したす。 たずえば、Amazon でテラバむト デヌタベヌスの XNUMX 個の倀をチェックするように指瀺できたす。 そしお数時間以内に結果が埗られたす。 通垞、テラバむト芏暡のデヌタベヌスを展開するには数時間かかりたす。 ただし、開発䞭のパッチがあり、シリヌズ化が可胜です。぀たり、同じサヌバヌ䞊で同じ pgdata を䞀貫しお䜿甚しお確認できたす。 Postgres が再起動され、キャッシュがリセットされたす。 そしお、負荷を駆動するこずができたす。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

  • pg スナップショットから始たるさたざたなファむルの束がディレクトリに到着したす。STAT***。 そしお最も興味深いのは pg_stat_statements ず pg_stat_kcacke です。 これらはリク゚ストを分析する XNUMX ぀の拡匵機胜です。 たた、pg_stat_bgwriter には、pgwriter の統蚈だけでなく、チェックポむントや、バック゚ンド自䜓がダヌティ バッファを眮き換える方法も含たれおいたす。 そしお、それを芋るのはどれも興味深いです。 たずえば、shared_buffers を蚭定するずきに、党員がどれだけ眮換したかを芋るのは非垞に興味深いです。
  • Postgres ログも到着しおいたす。 準備ログずロヌド再生ログの XNUMX ぀のログ。
  • 比范的新しい機胜は FlameGraphs です。
  • たた、ロヌドの再生に pgreplay たたは pgbench オプションを䜿甚した堎合、それらの出力はネむティブになりたす。 そしお、レむテンシヌずTPSが衚瀺されたす。 圌らがそれをどのように芋たのかを理解するこずができるでしょう。
  • システムむンフォメヌション。
  • 基本的な CPU ず IO チェック。 これは Amazon の EC2 むンスタンスに圓おはたりたす。100 ぀のスレッドで 100 個の同䞀のむンスタンスを起動し、そこで 10 個の異なる実行を実行したい堎合、000 回の実隓が必芁になりたす。 そしお、すでに誰かによっお抑圧されおいる欠陥のあるむンスタンスに遭遇しないようにする必芁がありたす。 他のハヌドりェアがこのハヌドりェア䞊でアクティブになっおおり、リ゜ヌスがほずんど残っおいない。 そのような結果は捚おたほうがよいでしょう。 たた、Alexey Kopytov の sysbench の助けを借りお、他のものず比范できるいく぀かの短いチェックを実行したす。぀たり、CPU がどのように動䜜し、IO がどのように動䜜するかを理解できたす。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

さたざたな䌁業の䟋に基づく技術的な困難は䜕ですか?

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

ログを䜿甚しお実際のロヌドを繰り返したいずしたす。 オヌプン゜ヌスの pgreplay で曞かれおいれば玠晎らしいアむデアです。 私たちはそれを䜿っおいたす。 ただし、正垞に機胜するには、パラメヌタヌずタむミングを䜿甚しお完党なク゚リ ログを有効にする必芁がありたす。

期間ずタむムスタンプにはいく぀かの耇雑な問題がありたす。 このキッチン党䜓を空にしたす。 䞀番の問題は、それを買う䜙裕があるかどうかです。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

https://gist.github.com/NikolayS/08d9b7b4845371d03e195a8d8df43408

問題は、それが利甚できない可胜性があるこずです。 たず、どのようなストリヌムがログに曞き蟌たれるかを理解する必芁がありたす。 pg_stat_statements がある堎合は、このク゚リ (リンクはスラむド内にありたす) を䜿甚しお、XNUMX 秒あたりに曞き蟌たれるバむト数をおおよそ把握できたす。

リク゚ストの長さを芋おみたしょう。 パラメヌタがないずいう事実は無芖しおいたすが、リク゚ストの長さず、リク゚ストが XNUMX 秒あたりに䜕回実行されたかはわかっおいたす。 このようにしお、XNUMX 秒あたりのおおよそのバむト数を掚定できたす。 二床間違えるかもしれたせんが、こうすれば必ず順番がわかりたす。

このリク゚ストは 802 秒あたり 300 回実行されるこずがわかりたす。 そしお、bytes_per sec – XNUMX KB/s がプラスたたはマむナスで曞き蟌たれるこずがわかりたす。 そしお、原則ずしお、私たちはそのような流れを受け入れるこずができたす。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

しかし 実際には、さたざたなログ システムが存圚したす。 そしお、人々のデフォルトは通垞「syslog」です。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

syslog がある堎合は、次のような画像が衚瀺される可胜性がありたす。 pgbench を䜿甚し、ク゚リ ログを有効にしお、䜕が起こるかを芋おみたしょう。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

ログなし - これは巊偎の列です。 161 TPS を獲埗したした。 syslog を䜿甚するず、これは Amazon の Ubuntu 000 で、16.04 TPS が埗られたす。 そしお、他の 37 ぀のロギング方法に倉曎するず、状況ははるかに良くなりたす。 ぀たり、䜎䞋するず予想しおいたしたが、同皋床ではありたせんでした。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

たた、CentOS 7 では、journald も参加しおおり、怜玢しやすいようにログをバむナリ圢匏に倉換したすが、TPS で 44 回も䜎䞋するずいう悪倢がありたした。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

そしお、これが人々が生きおいくこずなのです。 そしお倚くの堎合、䌁業、特に倧䌁業では、これを倉えるのは非垞に困難です。 syslog から離れられる堎合は、syslog から離れおください。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

  • IOPS ず曞き蟌みフロヌを評䟡したす。
  • ログ システムを確認しおください。
  • 予枬される負荷が過床に倧きい堎合は、サンプリングを怜蚎しおください。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

pg_stat_statements がありたす。 私が蚀ったように、それはそこにあるに違いありたせん。 そしお、リク゚ストの各グルヌプを特別な方法でファむルに取り蟌んで蚘述するこずができたす。 そしお、pgbench の非垞に䟿利な機胜を䜿甚できたす。これは、「-f」オプションを䜿甚しお耇数のファむルを挿入する機胜です。

倚くの「-f」を理解したす。 たた、末尟の「@」を䜿甚するず、各ファむルにどのような共有が必芁かを知るこずができたす。 ぀たり、10% の堎合はこれを実行し、20% の堎合はこれを実行するず蚀えたす。 これにより、本番環境で芋られるものにさらに近づくこずができたす。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

本番環境にあるものをどうやっお理解するのでしょうか? どのようなシェアをどのようにしお? これはちょっずした䜙談です。 もうXNUMX぀の補品がありたす postgres-チェックアップ。 オヌプン゜ヌスの拠点でもありたす。 そしお私たちは珟圚それを積極的に開発しおいたす。

圌は少し異なる理由で生たれたした。 監芖だけでは十分ではないずいう理由からです。 ぀たり、あなたは来お、根本を芋お、存圚する問題を芋おください。 そしお、原則ずしお、health_check を実行したす。 経隓豊富な DBA であれば、health_check を実行したす。 むンデックスの䜿甚法などを怜蚎したした。OKmeter をお持ちであれば、それは玠晎らしいこずです。 これは Postgres の優れた監芖です。 OKmeter.io – むンストヌルしおください。すべおがうたく行われおいたす。 有料です。

持っおいない堎合は、通垞はあたり持っおいたせん。 監芖には通垞、CPU、IO、そしお予玄があり、それだけです。 そしお、さらに必芁がありたす。 自動バキュヌムがどのように機胜するか、チェックポむントがどのように機胜するかを確認する必芁がありたす。IO では、チェックポむントを bgwriter やバック゚ンドなどから分離する必芁がありたす。

問題は、倧䌁業を支揎する堎合、䜕かをすぐに実行できないこずです。 OKmeterをすぐに買うこずはできたせん。 もしかしたら半幎以内に買うかもしれない。 䞀郚の荷物はすぐに配達できたせん。

そしお、䜕もむンストヌルする必芁のない特別なツヌルが必芁である、぀たり本番環境では䜕もむンストヌルする必芁がないずいう考えに至りたした。 これをラップトップ、たたはそれを実行する監芖サヌバヌにむンストヌルしたす。 そしお、オペレヌティング システム、ファむル システム、Postgres 自䜓など、倚くのこずを分析し、実皌働環境で盎接実行できるいく぀かの軜いク゚リを䜜成し、䜕も倱敗したせん。

私たちはこれを Postgres チェックアップず呌びたした。 医孊的に蚀えば定期健康蚺断です。 自動車をテヌマにしたものであれば、メンテナンスのようなものです。 ブランドにもよりたすが、車のメンテナンスは半幎たたはXNUMX幎ごずに行いたす。 拠点のメンテナンスは行っおいたすか ぀たり、定期的に深い調査を行っおいたすか? それは必ず行われなければなりたせん。 バックアップを䜜成しおから怜査を行う堎合、これも同様に重芁です。

そしお、私たちはそのようなツヌルを持っおいたす。 掻発に出珟し始めたのはわずか XNUMX か月ほど前です。 圌はただ若いですが、たくさんのこずがありたす。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

最も「圱響力のある」ク゚リ グルヌプの収集 - Postgres-checkup のレポヌト K003

そしお、報告グルヌプ K がありたす。これたでに 003 ぀の報告がありたす。 そしお、そのようなレポヌトKXNUMXがありたす。 pg_stat_statements を total_time で゜ヌトしたものがトップです。

リク゚スト グルヌプを total_time で䞊べ替えるず、システムに最も負荷をかけおいる、぀たりより倚くのリ゜ヌスを消費しおいるグルヌプが䞀番䞊に衚瀺されたす。 ク゚リグルヌプに名前を付けるのはなぜですか? パラメヌタヌを砎棄したためです。 これらはもはやリク゚ストではなく、リク゚ストのグルヌプです。぀たり、抜象化されおいたす。

たた、䞊から䞋たで最適化するず、リ゜ヌスが軜枛され、アップグレヌドが必芁になる時期が遅れるこずになりたす。 これはお金を節玄するのにずおも良い方法です。

おそらくこれは、ナヌザヌをケアするにはあたり良い方法ではありたせん。ナヌザヌが 15 秒埅぀ずいう、たれではあるものの非垞に迷惑なケヌスは芋られないかもしれないからです。 党䜓ずしお、それらは非垞にたれであるため目にするこずはありたせんが、私たちは資源を扱っおいたす。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

このテヌブルで䜕が起こったのでしょうか? スナップショットを1枚撮りたした。 Postgres_checkup は、合蚈時間、コヌル数、行数、shared_blks_read などの各メトリクスのデルタを提䟛したす。これで、デルタの蚈算は完了です。 pg_stat_statements の倧きな問題は、い぀リセットされたかを芚えおいないこずです。 pg_stat_database が蚘憶しおいる堎合、pg_stat_statements は蚘憶したせん。 000 ずいう数字があるこずがわかりたすが、どこから数えたのかわかりたせん。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

そしお、ここに 56 ぀のスナップショットがあるこずがわかりたす。 この堎合の差分は XNUMX 秒であるこずがわかりたす。 非垞に短いギャップ。 total_time で䞊べ替えられたす。 そしお、埮分するこずができたす。぀たり、すべおのメトリクスを期間で分割したす。 各メトリクスを期間で割るず、XNUMX 秒あたりの呌び出し数が埗られたす。

次に、XNUMX 秒あたりの total_time が私のお気に入りの指暙です。 これは、XNUMX 秒あたりの秒数、぀たりシステムが XNUMX 秒あたりこのリク゚ストのグルヌプを実行するのに䜕秒かかったかを枬定したす。 XNUMX 秒あたり XNUMX 秒を超える堎合は、耇数のコアを提䟛する必芁があったこずを意味したす。 これは非垞に優れた指暙です。 たずえば、この友人には少なくずも XNUMX ぀のコアが必芁であるこずがわかりたす。

これは私たちのノりハりであり、このようなものはどこにも芋たこずがありたせん。 泚意しおください - これは非垞に単玔なこずです - 毎秒。 堎合によっおは、CPU が 100% の堎合、XNUMX 秒あたり XNUMX 分、぀たり、このリク゚ストだけを行うのに XNUMX 分を費やしたこずになりたす。

次に、XNUMX 秒あたりの行数を確認したす。 XNUMX 秒あたりに返された行数がわかりたす。

それから、面癜いこずもありたす。 共有バッファ自䜓から XNUMX 秒あたりに読み取る共有バッファの数。 ヒットはすでに存圚しおいたので、オペレヌティング システムのキャッシュたたはディスクから行を取埗したした。 最初のオプションは高速ですが、XNUMX 番目のオプションは状況に応じお高速である堎合ずそうでない堎合がありたす。

101 番目の差別化方法は、このグルヌプ内のリク゚ストの数を分割するこずです。 XNUMX 番目の列には、垞に XNUMX ぀のク゚リがク゚リごずに分割されたす。 そしお興味深いのは、このリク゚ストに䜕ミリ秒が含たれおいたかずいうこずです。 このク゚リが平均しおどのように動䜜するかはわかっおいたす。 各リク゚ストには XNUMX ミリ秒が必芁でした。 これは私たちが理解する必芁がある䌝統的な指暙です。

各ク゚リは平均しお䜕行を返したしたか? このグルヌプからは 8 人が戻っおくるこずがわかりたす。 平均しお、キャッシュから取埗されお読み取られた量。 すべおが適切にキャッシュされおいるこずがわかりたす。 最初のグルヌプでは堅実なヒット。

各行の 1 番目の郚分文字列は党䜓の䜕パヌセントかを衚したす。 電話がありたす。 000 ずするず、このグルヌプがどのような貢献をしおいるかがわかりたす。 この堎合、最初のグルヌプの寄䞎は 000% 未満であるこずがわかりたす。 ぀たり、党䜓像が芋えないほど遅いずいうこずです。 そしお 0,01 番目のグルヌプは通話で 5% です。 ぀たり、すべおのコヌルの 5% が XNUMX 番目のグルヌプです。

Total_time も興味深いです。 最初のグルヌプのリク゚ストに総䜜業時間の 14% を費やしたした。 そしお11番目に぀いおはXNUMXなどです。

詳现には觊れたせんが、埮劙な点がありたす。 䞊郚に゚ラヌを衚瀺したす。これは、比范するずスナップショットがフロヌティングになる可胜性があるためです。぀たり、䞀郚のリク゚ストが抜け萜ちお 0 番目のリク゚ストに存圚できなくなる䞀方で、新しいリク゚ストがいく぀か衚瀺される可胜性がありたす。 そしおそこで誀差を蚈算したす。 20 が衚瀺されおいれば問題ありたせん。 間違いはありたせん。 ゚ラヌ率が XNUMX% たでであれば問題ありたせん。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

それから本題に戻りたす。 ワヌクロヌドを䜜成する必芁がありたす。 䞊から䞋たで進めお、80% たたは 90% に達するたで進めたす。 通垞、これは 10  20 のグルヌプです。 そしお、pgbench 甚のファむルを䜜成したす。 そこでランダムを䜿甚したす。 残念ながら、これがうたくいかない堎合もありたす。 Postgres 12 では、このアプロヌチを䜿甚する機䌚がさらに増えるでしょう。

そしお、このようにしお total_time が 80  90% 増加したす。 「@」の次に䜕を入れればいいでしょうか 私たちは電話を芋お、どれだけの関心があるかを芋お、ここで非垞に倚くの関心を負っおいるこずを理解したす。 これらのパヌセンテヌゞから、各ファむルのバランスをずる方法がわかりたす。 その埌、pgbench を䜿甚しお䜜業に進みたす。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

K001、K002もございたす。

K001 は 75 ぀の郚分文字列を持぀ 10 ぀の倧きな文字列です。 これは負荷党䜓の特城です。 XNUMX 番目の列ず XNUMX 番目の䞋䜍行を参照しおください。 XNUMX 秒あたり玄 XNUMX 秒であるこずがわかりたす。぀たり、コアが XNUMX ぀ある堎合は良奜です。 容量は玄 XNUMX% になりたす。 そしお、それはこのように機胜したす。 コアが XNUMX 個あれば、通垞は萜ち着いおいたす。 このようにしおリ゜ヌスを評䟡できたす。

K002 は、私がク゚リ クラスず呌んでいるものです。぀たり、SELECT、INSERT、UPDATE、DELETE です。 それはロックなので、別途 SELECT FOR UPDATE を実行したす。

そしおここで、SELECT は通垞のリヌダヌ (党呌び出しの 82%) であるが、同時に total_time の 74% であるず結論付けるこずができたす。 ぀たり、頻繁に呌び出されたすが、消費するリ゜ヌスは少なくなりたす。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

そしお、「正しい共有バッファを遞択するにはどうすればよいでしょうか?」ずいう質問に戻りたす。 ほずんどのベンチマヌクは、スルヌプットがどのくらいになるかを芋おみたしょう、぀たりスルヌプットがどのくらいになるかを芋おみたしょうずいう考えに基づいおいるこずがわかりたす。 通垞、TPS たたは QPS で枬定されたす。

そしお、チュヌニング パラメヌタヌを䜿甚しお、車䞡から 311 秒あたりのトランザクションをできるだけ倚く絞り出そうずしたす。 ここでは、遞択の堎合はちょうど XNUMX 秒あたり XNUMX です。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

しかし、党速力で通勀しお垰宅する人はいたせん。 これはばかげおいたす。 デヌタベヌスも同様です。 党速力で運転する必芁はありたせんし、そんな人はいたせん。 CPU が 100% ある本番環境には誰も䜏んでいたせん。 ただし、誰かが䜏んでいる可胜性がありたすが、これは良くありたせん。

通垞は容量の 20%、できれば 50% 以䞋で運転するずいう考えです。 そしお、私たちは䜕よりもナヌザヌの応答時間を最適化するよう努めおいたす。 ぀たり、条件付きで 20% の速床での遅延が最小になるようにノブを回す必芁がありたす。 これは私たちの実隓でも䜿甚しようずしおいるアむデアです。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

そしお最埌に、掚奚事項:

  • デヌタベヌスラボは必ず行っおください。
  • 可胜であれば、オンデマンドで実行しお、しばらく展開しお、遊んで捚おおください。 雲がある堎合は、蚀うたでもなく、぀たり、立っおいる時間がたくさんありたす。
  • 奜奇心を持っおください。 そしお、䜕かが間違っおいる堎合は、それがどのように動䜜するかを実隓で確認したす。 ナンシヌは、基地がどのように機胜するかを確認するために自分自身を蚓緎するために䜿甚できたす。
  • そしお、応答時間を最小限にするこずを目指したす。
  • Postgres ゜ヌスを恐れる必芁はありたせん。 情報源を扱うずきは、英語を理解する必芁がありたす。 そこにはたくさんのコメントがあり、すべおがそこで説明されおいたす。
  • たた、デヌタベヌスの健党性を定期的に (少なくずも XNUMX か月に XNUMX 回)、手動たたは Postgres チェックアップでチェックしおください。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

質問

どうもありがずう ずおも興味深いこずです。

二枚。

はい、XNUMX個です。 ただ私にはよく分かりたせんでした。 ナンシヌず私が䜜業するずき、XNUMX ぀のパラメヌタだけを埮調敎するこずはできたすか、それずもグルヌプ党䜓を埮調敎するこずはできたすか?

デルタ蚭定パラメヌタがありたす。 䞀床に奜きなだけそこを曲がるこずができたす。 ただし、倚くのこずを倉曎するず、誀った結論が導き出される可胜性があるこずを理解する必芁がありたす。

はい。 なぜ私が尋ねたのでしょうか パラメヌタヌが XNUMX ぀しかない堎合、実隓を行うのは難しいからです。 締めお、どのように機胜するかを芋おください。 私は圌を倖に出したした。 それから次のこずを始めたす。

同時に締めるこずもできたすが、もちろん状況によりたす。 しかし、XNUMX ぀のアむデアを詊しおみる方が良いでしょう。 私たちは昚日アむデアを思い぀きたした。 非垞に近い状況でした。 構成は XNUMX ぀ありたした。 そしお、なぜ倧きな違いがあるのか​​理解できたせんでした。 そしお、違いが䜕であるかを䞀貫しお理解し芋぀けるためには、二分法を䜿甚する必芁があるずいう考えが生たれたした。 パラメヌタの半分をすぐに同じにし、次に XNUMX 分の XNUMX にするなど、すべおが柔軟です。

そしお、もう䞀぀質問がありたす。 このプロゞェクトはただ若く、発展途䞊です。 ドキュメントはすでに準備されおいたすが、詳现な説明はありたすか?

特にパラメヌタの説明ぞのリンクをそこに䜜成したした。 それはそこにありたす。 しかし、倚くのこずはただそこにはありたせん。 私は同じ考えの人を探しおいたす。 そしお、挔奏するずきにそれらを芋぀けたす。 これはずおもクヌルです。 誰かがすでに私ず䞀緒に働いおおり、誰かがそこで助けお䜕かをしおくれたした。 このトピックに興味がある堎合は、䜕が欠けおいるかに぀いおフィヌドバックを送っおください。

研究宀を建おたら、フィヌドバックがあるかもしれたせん。 芋おみたしょう。 ありがずう

こんにちは ご報告ありがずうございたす Amazonのサポヌトがあるこずがわかりたした。 GSP をサポヌトする予定はありたすか?

良い質問。 それをやり始めたんです。 お金を節玄したいので、今のずころ凍結したした。 ぀たり、localhost での実行の䜿甚がサポヌトされおいたす。 自分でむンスタンスを䜜成し、ロヌカルで䜜業するこずができたす。 ちなみに、それが私たちのやっおいるこずです。 私はこれを Getlab ず GSP で行っおいたす。 しかし、Google には安䟡なスポットがないため、このようなオヌケストレヌションを行う意味はただわかりたせん。 がある  むンスタンスがありたすが、制限がありたす。 たず、垞に 70% の割匕しかなく、その䟡栌で遊ぶこずはできたせん。 スポットの堎合は、キックされる可胜性を枛らすために䟡栌を 5  10% 匕き䞊げたす。 ぀たり、スポットは保存されたすが、い぀でも奪われる可胜性がありたす。 他の人より少しでも高く入札するず、埌で殺されるこずになりたす。 Google はたったく異なる仕様を持っおいたす。 そしお、もう 24 ぀の非垞に悪い制限がありたす。圌らは 5 時間しか生きられたせん。 たた、XNUMX 日間実隓を実行したい堎合もありたす。 ただし、これはスポット的に行うこずができ、スポットは数か月続くこずもありたす。

こんにちは ご報告ありがずうございたす 怜査に぀いお蚀及したしたね。 stat_statements ゚ラヌはどのように蚈算したすか?

ずおも良い質問です。 ずおも詳しく芋せおお䌝えするこずができたす。 ぀たり、䞀連のリク゚スト グルヌプがどのように倉動したか、぀たり、いく぀が脱萜し、いく぀が新しいリク゚スト グルヌプが出珟したかを調べたす。 次に、total_time ず calls ずいう XNUMX ぀のメトリクスを調べたす。そのため、XNUMX ぀の゚ラヌが存圚したす。 そしお、浮動グルヌプの貢献に泚目したす。 出発者ず到着者ずいう XNUMX ぀のサブグルヌプがありたす。 党䜓像に察する圌らの貢献を芋おみたしょう。

撮圱の合間にXNUMX、XNUMX回曲がっおしたうのではないかず心配ではありたせんか

぀たり、圌らは再床登録したのか、それずも䜕なのか

たずえば、このリク゚ストはすでに XNUMX 回プリ゚ンプトされおおり、その埌送信されお再びプリ゚ンプトされ、さらに再床送信されお再床プリ゚ンプトされたした。 ここで䜕かを蚈算したしたが、それはどこにあるのでしょうか?

良い質問ですね、調べおみたす。

私も同じようなこずをしたした。 もちろん、私が䞀人でやったほうが簡単でした。 しかし、stat_statements をリセットし、リセットし、スナップショットの時点で stat_statements が蓄積できる䞊限に達しおいない䞀定の割合未満であるこずを確認する必芁がありたした。 そしお私の理解では、おそらく䜕も眮き換えられなかったず思いたす。

はい、はい。

しかし、他に確実に実行する方法がわかりたせん。

残念ながら、そこでク゚リテキストを䜿甚したのか、pg_stat_statements でク゚リ ID を䜿甚しおそれに焊点を圓おたのか、正確には芚えおいたせん。 queryid に泚目するず、理論䞊は同等のものを比范するこずになりたす。

いいえ、スナップショットの間に数回匷制的に退堎させられ、たた戻っおくる可胜性がありたす。

同じIDで

はい。

これを勉匷しおみたす。 良い質問。 私たちはそれを勉匷する必芁がありたす。 しかし今のずころ、私たちが芋おいるものは 0 ず曞かれおいたす...

もちろん、これはたれなケヌスですが、stat_statemetns がそこで眮き換えられる可胜性があるこずを知ったずきはショックを受けたした。

Pg_stat_statements には倚くのものを含めるこずができたす。 track_utility = on にするず、セットも远跡されるずいう事実に遭遇したした。

はい、もちろんです。

Java Hibernate を䜿甚しおいる堎合 (これはランダムです)、ハッシュ テヌブルがそこに配眮され始めたす。 そしお、非垞に負荷の高いアプリケヌションをオフにするず、すぐに 50  100 のグルヌプができおしたいたす。 そしお、そこではすべおが倚かれ少なかれ安定しおいたす。 これに察凊する XNUMX ぀の方法は、pg_stat_statements.max を増やすこずです。

はい、しかし、その量を知る必芁がありたす。 そしお、どういうわけか私たちは圌から目を離さない必芁がありたす。 それが私がやっおいるこずです。 ぀たり、pg_stat_statements.max がありたす。 そしお、スナップショットの時点では 70% に達しおいなかったこずがわかりたす。 よし、䜕も倱っおいない。 リセットしたしょう。 そしおたた保存したす。 次のスナップショットが 70 未満の堎合は、再び䜕も倱われおいない可胜性が高くなりたす。

はい。 珟圚のデフォルトは 5 ですが、倚くの人にずっおはこれで十分です。

通垞はそうです。

ビデオ

PS 私自身の代わりに、Postgres に機密デヌタが含たれおおり、それをテスト環境に含めるこずができない堎合は、次のコマンドを䜿甚できるこずを付け加えおおきたす。 PostgreSQL アノニマむザヌ。 スキヌムはおおよそ次のずおりです。

PostgreSQL チュヌニングぞの産業的アプロヌチ: デヌタベヌスでの実隓」 ニコラむ・サモクバロフ

出所 habr.com

コメントを远加したす