제이의 블로그

物理データモデリング

作成: 2024-04-09

作成: 2024-04-09 23:01

論理的なデータモデリングがリレーショナルデータベースに適した理想的なテーブルを作成する作業であったとすれば、物理的なデータモデリングでは、理想的なテーブルを実用的なテーブルにする作業を含め、ストレージスペースの効率的な使用計画、オブジェクトパーティショニング設計、最適なインデックス設計など、パフォーマンス向上と最適化を重点的に考慮します。

サービス運用時にボトルネックを引き起こす遅いクエリ(Slow Query)を見つける方法は、DBMSの種類によって異なり、遅いクエリ(Slow Query)をキーワードに検索して見つける必要があります。

パフォーマンスのために考慮すべき点

遅いクエリ(Slow Query)の発見

  • 遅いクエリ(Slow Query)とは、DBMSが要求されたクエリを実行する際に、一定時間実行されなかったクエリのことです。
  • ボトルネックを引き起こす遅いクエリ(Slow Query)を見つけて、何が問題なのかを特定し、解決します。

インデックス(Index)

  • インデックスは、行に対する読み込みパフォーマンスを飛躍的に向上させます。
  • しかし、書き込みパフォーマンスを低下させ、ストレージスペースをより多く消費します。


キャッシュ(Cache)

  • アプリケーションレベルでデータベースの負荷を軽減できる方法です。
  • 同じ入力の要求応答をストレージスペースに保存しておき、応答する方式です。


上記の方法でもパフォーマンス問題が解決しない場合は、逆正規化または反正規化と呼ばれる作業を行います。

テーブルの構造を手術して修正することです。

正規化のトレードオフ

正規化は、書き込み作業の利便性のために、読み込みのパフォーマンスを犠牲にするようなものです。正規化すると、複数のテーブルに分割されたデータを結合するクエリを作成する必要があります。

しかし、正規化が必ずしもパフォーマンスを低下させるわけではないため、逆正規化を実行する前に、必ず問題を正しく特定し、検討する必要があります。

以下のリンクは、これから扱う逆正規化について解説している良い記事です。

逆正規化、反正規化(denormalization)

まず覚えておくべきことは、正規化を行った後に逆正規化を行う必要があるということです。最初から非正規化テーブルが良いわけではありません。

とりあえず、現時点では必要な知識ではないため、覚えておくだけにします。

テーブルの逆正規化手法

物理データモデリング

出典 - DataOnAir - 非正規化とパフォーマンス

カラムの逆正規化

物理データモデリング

出典 DataOnAir - 非正規化とパフォーマンス

関係の逆正規化

物理データモデリング

出典 - DataOnAir - 非正規化とパフォーマンス

コメント0