言語を選択
durumis AIが要約した文章
- 論理データモデリングがリレーショナルデータベースに適したテーブルを作成する作業であるのに対し、物理データモデリングは実際に使用されるテーブルを作成する作業であり、ストレージスペースの効率性とパフォーマンスの最適化を考慮します。
- 遅いクエリ、インデックス、キャッシュなどを活用してパフォーマンスを向上させることができます。パフォーマンスの問題が継続する場合は、データベース構造を変更するデノーマライズを検討できます。
- 正規化は、書き込み作業の利便性のために読み取りパフォーマンスを犠牲にするものですが、デノーマライズはパフォーマンスの低下を引き起こす可能性があるため、問題を正確に把握して慎重に判断する必要があります。
論理的データモデリングがリレーショナルデータベースに適した理想的なテーブルを作成する作業だった場合、物理的データモデリングでは理想的なテーブルを実際に使用可能なテーブルにする作業を含め、ストレージ空間の効率的な使用方法、オブジェクトパーティショニング設計、最適なインデックス設計など、パフォーマンス向上と最適化を重点的に考慮します。
サービス運用時にボトルネックを引き起こすスロークエリを見つける方法は、DBMSの種類によって異なります。スロークエリをキーワードに検索して見つける必要があります。
パフォーマンスのために検討すべき事項
スロークエリ(Slow Query)の検出
- スロークエリは、DBMSが要求されたクエリを実行するときに、一定時間実行されないクエリのことです。
- ボトルネックを引き起こすスロークエリを見つけ、問題が何であるかを特定して解決します。
インデックス(Index)
- インデックスは、行に対する読み取りパフォーマンスを飛躍的に向上させます。
- ただし、書き込みパフォーマンスが低下し、より多くのストレージ空間を使用します。
キャッシュ(Cache)
- アプリケーションレベルでデータベースの負荷を軽減する方法
- 同じ入力の要求応答をストレージ空間に保存しておいて、応答する方式です。
上記の方法でパフォーマンス問題が解決しない場合は、逆正規化または反正規化と呼ばれる作業を実行します。
テーブルの構造を手術して修正します。
正規化のトレードオフ
正規化は、書き込み作業の利便性のために、読み取りのパフォーマンスを犠牲にするようなものです。正規化すると、複数のテーブルに分割されたデータを結合するクエリを作成する必要があります。
しかし、正規化が必ずしもパフォーマンスを低下させるわけではないため、逆正規化を実行する前に、問題を正しく把握して確認する必要があります。
以下のリンクは、これから取り上げる逆正規化について詳しく解説している優れた記事です。
逆正規化、反正規化(denormalization)
最初に覚えておくべきことは、正規化を実行した後に逆正規化を実行する必要があるということです。最初から非正規化されたテーブルが良いわけではありません。
とりあえず、今は必要な知識ではないので、覚えておくだけにします。
テーブル逆正規化技法
出典 - DataOnAir - 反正規化とパフォーマンス
カラムの逆正規化
出典 DataOnAir - 反正規化とパフォーマンス
関係の逆正規化
出典 - DataOnAir - 反正規化とパフォーマンス