PostgreSQLをばかみたいに遅くする方法

2025-07-28
PostgreSQLをばかみたいに遅くする方法

この記事では、CPUのスロットリングやインデックスの削除に頼らずに、`postgresql.conf`ファイルのパラメータを調整することで、PostgreSQLを可能な限り遅くする方法に挑戦しています。バッファキャッシュサイズ(`shared_buffers`)の劇的な縮小、autovacuumとanalyzeの積極的なトリガー(`autovacuum_*`パラメータ)、WAL(`wal_*`パラメータ)の最大書き込み頻度とI/O競合のための設定など、綿密に選択された一連の調整を通じて、PostgreSQLのTPSを7000倍以上削減することに成功し、7000+から1桁未満、0.1 TPS以下にまで低下させています。著者は、各パラメータ変更の根拠と影響を詳細に説明し、再現可能な設定を提供しています。これは、データベースパラメータチューニングの深い影響を示す、興味深い実験です。

続きを読む

JavaScriptベンチマーク:JITコンパイラ、エンジン間の違い、および時間測定の不正確さによる混乱

2024-12-24
JavaScriptベンチマーク:JITコンパイラ、エンジン間の違い、および時間測定の不正確さによる混乱

JavaScriptのパフォーマンスベンチマークは、非常に難しいことで知られています。この記事では、その課題を強調しています。JITコンパイラの動的な最適化により、実行間で結果が大きく異なります。V8やJavaScriptCoreなどの異なるJavaScriptエンジンでは、パフォーマンスに大きな違いがあり、同じコードでも劇的に異なる動作を示します。また、タイミング攻撃を軽減するために、ブラウザは意図的に時間測定の精度を低下させているため、正確な測定が困難です。著者は、サーバーサイドではd8などのツールを使用して、最適化レベルとガベージコレクションをより細かく制御することを提案しています。一方、クライアントサイドのテストでは、開発者ツールによって提供される限られた情報に大きく依存します。要するに、JavaScriptのベンチマークでは、JITコンパイル、エンジン間の違い、時間測定の精度を慎重に考慮する必要があり、他の言語よりもはるかに複雑です。

続きを読む