頻出中 ⏱ 7分★★★☆☆

性能設計

インデックス・パーティション・接続プール・反正規化を完全習得

DB性能設計は「どれだけ速く・どれだけ多くの処理を捌けるか」を設計段階から作り込む活動。インデックス・パーティション・接続プール・クエリ最適化の4本柱で構成される。

施策効果トレードオフ
インデックス検索高速化INSERT/UPDATE/DELETEのオーバーヘッド増
パーティショニング大テーブルの分割・並列処理跨ぎ検索はパフォーマンス低下の可能性
接続プール接続確立コスト削減プール数の上限設計が必要
クエリ最適化実行計画の改善アプリ修正コスト
種類分割基準適した用途
レンジパーティション値の範囲時系列データ(年月で分割)2023年分・2024年分
リストパーティション値のリスト地域・カテゴリで分割東日本・西日本
ハッシュパーティションハッシュ値均等分散・ホットスポット回避顧客IDのハッシュ
複合パーティション上記の組み合わせ多次元の分割年月 x 地域
パーティションプルーニング:WHERE 条件がパーティションキーに一致すると関係しないパーティションをスキップできる。

DB接続の確立はコストが高い(TCP ハンドシェイク・認証など)。接続プールで事前に接続を確立しておき再利用する。

スロークエリログで遅いクエリを特定
EXPLAIN / EXPLAIN ANALYZE で実行計画を確認
Seq Scan を Index Scan / Index Only Scan に変える施策を検討
インデックス追加・クエリ書き換え・統計情報更新を実施
実測で改善を確認(ベンチマーク比較)

正規化によって増えた JOIN が性能ボトルネックになる場合、意図的に冗長化することで JOIN を削減する。

手法内容リスク
列の複製よく参照する列を別テーブルにコピー更新時に両方の同期が必要
集計列の追加合計・件数などを事前計算して列に保存更新タイミングのずれ
テーブルの結合JOINが多い2テーブルを1テーブルにまとめるNULL列増、更新異常の可能性
反正規化は性能改善の手段として有効だが、データ整合性リスクを伴う。適用前にトレードオフを十分検討する。

📝 理解度チェック

時系列ログデータを月単位で分割管理するのに最適なパーティション種別はどれか?
接続プールを利用する主な目的はどれか?
反正規化(非正規化)のリスクとして最も適切なのはどれか?

読了ボタンを누すとトップページの進捉に反柼されます