私は sql/databases の世界では新人であることを覚えておいてください。
毎秒何千ものオブジェクトを挿入/更新しています。これらのオブジェクトは、数秒間隔でアクティブにクエリされています。
(postgres) データベースのパフォーマンスを調整するために行うべき基本的なことは何ですか?
私は sql/databases の世界では新人であることを覚えておいてください。
毎秒何千ものオブジェクトを挿入/更新しています。これらのオブジェクトは、数秒間隔でアクティブにクエリされています。
(postgres) データベースのパフォーマンスを調整するために行うべき基本的なことは何ですか?
これは幅広いトピックなので、ここにたくさんの内容があります。
そして、これらのオプションを使い果たしたら、メモリを追加したり、ディスクサブシステムを高速化したりします。ハードウェアは、特に大規模なデータセットでは重要です。
そしてもちろん、postgres/databases の他のすべてのスレッドを読んでください。:)
何よりもまず、公式マニュアルのPerformance Tipsを読んでください。
すべてのクエリでEXPLAINを実行し、その出力を理解すると、クエリが可能な限り高速であるかどうか、およびインデックスを追加する必要があるかどうかがわかります。
それが完了したら、マニュアルのサーバー構成の部分を読むことをお勧めします。パフォーマンスをさらに向上させるために微調整できる多くのオプションがあります。ただし、設定するオプションを理解するようにしてください。誤って設定すると、パフォーマンスが簡単に低下する可能性があるためです。
クエリまたはオプションを変更するたびに、テストとベンチマークを行って、各変更の影響を確認してください。
実際には、ほとんどの場合に十分なパフォーマンスを得るための簡単なルールがいくつかあります。
インデックスは最初の部分です。主キーは自動的に索引付けされます。すべての外部キーにインデックスを付けることをお勧めします。さらに、頻繁にクエリされるすべての列にインデックスを付けます。複数の列がクエリされるテーブルに頻繁に使用されるクエリがある場合は、それらの列にまとめてインデックスを付けます。
postgresql インストールのメモリ設定。次のパラメータを高く設定します。
.
shared_buffers, work_mem, maintenance_work_mem, temp_buffers
専用のデータベース マシンの場合は、これらの最初の 3 つを RAM の半分に簡単に設定できます (共有バッファーを使用する Linux では注意してください。shmmax パラメーターを調整する必要があるかもしれません)。それ以外の場合は、RAM の量に依存します。あなたはpostgresqlに渡したいです。
http://www.postgresql.org/docs/8.3/interactive/runtime-config-resource.html
私が推奨する絶対的な最小値は、EXPLAIN ANALYZEコマンドです。サブクエリ、結合などの内訳が常に表示され、操作で消費された実際の時間が示されます。また、シーケンシャル スキャンやその他の厄介な問題についても警告します。
始めるのに最適な方法です。
ファイルシステムを信頼する場合は、posgresql.confでfsync = offを設定します。そうでない場合、各postgresql操作は(fsyncシステムコールを使用して)すぐにディスクに書き込まれます。このオプションは、かなり10年前から多くの本番サーバーでオフになっており、データが破損することはありませんでした。