論理設計を最適化する
論理レベルは、クエリとテーブル自体の構造に関するものです。最初にこれを最大化してみてください。目標は、論理レベルでできるだけ少ないデータにアクセスすることです。
- 最も効率的な SQL クエリを使用する
- アプリケーションのニーズをサポートする論理スキーマを設計する (例:列のタイプなど)
- 他のユースケースよりも優れたユースケースをサポートするためのトレードオフを設計する
- 関係の制約
- 正規化
物理設計の最適化
物理レベルでは、インデックスのタイプ、テーブルのパラメーターなど、非論理的な考慮事項を扱います。目標は、常にボトルネックとなる IO を最適化することです。必要に応じて各テーブルを調整します。小さなテーブルを DBMS キャッシュに永続的にロードすることができます。書き込み率の低いテーブルは、更新率の高いテーブルとは異なる設定を使用して、ディスク領域を節約することができます。クエリに応じて、異なるインデックスを使用することができます。具体化されたビューなどで透過的に非正規化されたデータ。
- テーブル パラメータ (割り当てサイズなど)
- インデックス (組み合わせ、型など)
- システム全体のパラメータ (キャッシュ サイズなど)
- パーティショニング
- 非正規化
最初に論理設計を改善してから、物理設計を改善してください。 (ただし、両者の境界はあいまいなので、私の分類について議論することができます)。
メンテナンスを最適化
可能な限り効率を維持するには、データベースを正しく運用する必要があります。これには、パフォーマンスに影響を与える可能性のあるいくつかのメンテナンス タスクが含まれます。たとえば、
- 統計を最新の状態に保つ
- 重要なテーブルの順序を定期的に変更する
- ディスクのメンテナンス
- 優れたサーバーを構築するためのすべてのシステム要素