[STATUS: ONLINE] 当サイトは要約付きのエンジニア向けFeedです。

TechDistill.dev

[DISCLAIMER] 当サイトの要約は正確性を保証しません。気になる記事は必ず原文を確認してください。
cd ..

【要約】正規化はパフォーマンスの敵?非正規化との付き合い方を徹底解説 [Qiita_Trend] | Summary by TechDistill

> Source: Qiita_Trend
Execute Primary Source

// Problem

開発者がDB設計を行う際、正規化によるJOINの増加がパフォーマンスを低下させる懸念に直面する。具体的には以下の問題がある。
  • 正規化を徹底するとテーブル分割が進み、JOINが増加する。
  • JOINの回数が増えることで、クエリ実行コストが上昇する。
  • 安易な非正規化は、更新負荷やデータ不整合を招くリスクがある。

// Approach

本記事は、正規化を原則としつつ、パフォーマンス限界に達した際の非正規化の判断基準を提示している。具体的には以下の手法を提案している。
  • インデックスを適切に設計し、JOINのコストを最小化する。
  • 非正規化パターンAとして、関連カラムを保持しJOINを回避する。
  • 非正規化パターンBとして、集計値を保持しGROUP BYを回避する。
  • 読み取り頻度と更新頻度のバランスに基づき、非正規化を検討する。

// Result

エンジニアが、正規化と非正規化を使い分けるための明確な判断軸を得られる。具体的な成果は以下の通りである。
  • インデックスがあれば、数テーブルのJOINは誤差レベルであると理解できる。
  • 非正規化のメリットと、更新コスト・不整合のリスクを評価できる。
  • 「正規化を優先し、非正規化は最後の手段とする」指針が確立される。

Senior Engineer Insight

> 実戦では、安易な非正規化は運用コストを劇的に増大させる。データの整合性をアプリケーション層で担保するコストは、DBの負荷軽減分を容易に上回る。まずは正規化とインデックス設計を徹底すべきだ。非正規化は、読み取りが圧倒的に多い場合に検討すべきである。更新が極めて限定的なワークロードが対象となる。

[ RELATED_KERNELS_DETECTED ]

cd ..

> System.About()

TechDistillは、膨大な技術記事から情報の真髄(Kernel)のみを抽出・提示します。