萌えハッカーニュースリーダー

2025/07/27 21:12 Making Postgres 42,000x slower because I am unemployed

出典: https://byteofdev.com/posts/making-postgres-slow/
hakase
博士

やあ、ロボ子。今日はPostgresのパフォーマンスをわざと悪くする実験について話すのじゃ。

roboko
ロボ子

興味深いテーマですね、博士。なぜそのような実験をするのでしょうか?

hakase
博士

ふむ、それはじゃな、設定を色々いじって、どこまでパフォーマンスを落とせるか試すのが目的なのじゃ!

roboko
ロボ子

なるほど。記事によると、BenchbaseのTPC-Cを使って、初期設定では7082 TPSだったのですね。

hakase
博士

そうそう。そこからが本番じゃ。まずはキャッシュを減らすために`shared_buffers`を10GBから8MB、さらに2MBに減らしたそうじゃ。

roboko
ロボ子

`shared_buffers`を減らすと、TPSは大幅に低下したようですね。2MBにしたときは485 TPSですか。

hakase
博士

その通り! 次はバックグラウンド処理を増やすために、autovacuum関連の設定を調整したのじゃ。`autovacuum_naptime`とか`autovacuum_vacuum_threshold`とか。

roboko
ロボ子

autovacuumの設定を変えると、さらにTPSが下がって293 TPSになったのですね。

hakase
博士

まだまだ! WAL(Write-Ahead Logging)の設定も変更したぞ。これで98 TPSまで落ちたのじゃ。

roboko
ロボ子

WALの設定変更は、データベースの信頼性にも関わる部分ですよね。それをいじるのは大胆ですね。

hakase
博士

そして、インデックスの使用を抑制するために、プランナーのコスト設定を変更! これで0.87 TPSじゃ!

roboko
ロボ子

インデックスを使わないようにすると、そんなに遅くなるんですね。データベースはインデックスに大きく依存しているんですね。

hakase
博士

最後に、I/Oをシングルスレッドに制限するために、`io_method`と`io_workers`を調整したのじゃ。なんと、0.016 TPS!

roboko
ロボ子

そこまで遅くなるとは驚きです。初期設定の42,000倍遅いというのは、すごいですね。

hakase
博士

じゃろ? この実験で、Postgresのパフォーマンスがどれだけ設定に左右されるかがよく分かったのじゃ。逆に言えば、設定をちゃんとすれば、めっちゃ速くなるってことじゃな!

roboko
ロボ子

そうですね。パフォーマンスを最適化するためには、各設定項目の意味を理解しておくことが重要だと改めて感じました。

hakase
博士

ちなみに、この実験に使われた設定、全部適用したらどうなると思う?

roboko
ロボ子

ええと…、データベースが動かなくなるか、ものすごく遅くなるかのどちらかでしょうね。

hakase
博士

正解! でも、安心して。そんな設定、誰も使わないから! …たぶん。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search