株式会社エンコアコンサルティング 著
李 華植 著
DBシステムへの顧客企業からの要望・要求の中で圧倒的に多いのが「パフォーマンスアップ(性能改善)」です。しかし、この性能の問題は、OracleやSQL ServerといったDBMS製品が備える最新機能や高額の専用ツールを導入するだけでは、十分に解決することはできません。
本書では、DBエンジニアの一番の課題であるこの問題に焦点を当て、アクセス効率を最大化するノウハウやテクニックについて、豊富な例題を紹介しながら解説しています。
「何故速度が遅いのか?」「何故そう対処するべきなのか」という基本原理から学習できるので、どんな製品・規模・業務・業種のプロジェクトでも通用する本当の実力を身につけることができます。
著者は、韓国の大規模DBシステム構築案件で多くの実績を持つDBコンサルタント。そのノウハウが惜しみなく公開されている本書の韓国語版は、ITエンジニア必携のバイブルとしてベストセラーとなっています。
第1部 アクセスに影響する要素
第1章 データ保存構造と特徴
1.1 テーブルとインデックスの分離型
1.1.1 分離型テーブルの構造
1.1.2 クラスタリングファクタ(Clustering Factor)
1.1.3 分離型テーブルのアクセス影響要素
1.2 インデックス一体型テーブル(Index-Organized Table)
1.2.1 分離型と一体型の比較
1.2.2 一体型テーブルの構造と特徴
1.2.3 論理的ROWIDと物理的位置情報(PHYSICAL GUESS)
1.2.4 オーバーフロー領域(Overflow Area)
1.2.5 一体型テーブルの生成
1.3 クラスタリングテーブル
1.3.1 クラスタリングテーブルの概念
1.3.2 単一テーブルクラスタリング
1.3.3 多重テーブルクラスタリング
1.3.4 クラスタリングテーブルのコスト
1.3.5 ハッシュ(Hash)クラスタリング
第2章 インデックスの種類と特徴
2.1 B-treeインデックス
2.1.1 B-Treeインデックスの構造
2.1.2 B-Treeインデックスの操作(Operation)
2.1.3 リバースキーインデックス(Reverse key index)
2.2 ビットマップ(Bitmap)インデックス
2.2.1 ビットマップインデックスの誕生背景
2.2.2 ビットマップインデックスの構造および特性
2.2.3 ビットマップインデックスのアクセス
2.3 関数ベースインデックス(FBI、Function-Based Index)
2.3.1 関数ベースインデックスの概念と構造
2.3.2 関数ベースインデックスの制約事項
2.3.3 関数ベースインデックスの活用
第3章 SQLの実行計画(Explain plan)
3.1 SQLとオプティマイザ
3.1.1 オプティマイザと我々の役割
3.1.2 オプティマイザの形態
3.1.3 オプティマイザの最適化プロセス
3.1.4 クエリ変換
3.1.5 開発者の役割
3.2 実行計画の種類
3.2.1 スキャン(Scan)の基本種類
3.2.2 データ連結のための実行計画
3.2.3 演算方式による実行計画
3.2.4 ビットマップ(Bitmap)実行計画
3.2.5 その他の特殊な目的を処理する実行計画
3.3 実行計画の制御
3.3.1 ヒント(Hint)の活用基準
3.3.2 最適化目標(Goal)の制御ヒント
3.3.3 ジョイン順序調整のためのヒント
3.3.4 ジョイン方式選択用のヒント
3.3.5 パラレル処理関連のヒント
3.3.6 アクセス手段選択のためのヒント
3.3.7 クエリ変換(Query Transformation)のためのヒント
3.3.8 その他のヒント
第4章 インデックス戦略の確立
4.1 インデックスの選定基準
4.1.1 テーブル形態別の適用基準
4.1.2 分布度と損益分岐点
4.1.3 インデックスマージと結合インデックスの比較
4.1.4 結合インデックスの特徴
4.1.5 結合インデックスの列順の決定基準
4.1.6 インデックス選定の手続き
4.2 クラスタリング形態の決定基準
4.2.1 包括的なクラスタリング
4.2.2 部分的なクラスタリング
4.2.3 単一テーブルクラスタリング
4.2.4 単位テーブルクラスタリングのサイズ決定
4.2.5 クラスタ使用のための処置
第2部 アクセスの最適化の策定
第5章 部分範囲処理(Partial range scan)
5.1 部分範囲処理の概念
5.2 部分範囲処理の適用原則
5.2.1 部分範囲処理の条件
5.2.2 オプティマイザモードによる部分範囲処理
5.3 部分範囲処理の実行速度向上の原理
5.4 部分範囲処理への誘導
5.4.1 アクセスパスを利用したソートの代替
5.4.2 インデックスだけにアクセスする部分範囲処理
5.4.3 MIN、MAXの処理
5.4.4 FILTER型部分範囲処理
5.4.5 ROWNUMの活用
5.4.6 インラインビューを利用した部分範囲処理
5.4.7 ストアドファンクションを利用した部分範囲処理
5.4.8 クエリの分離を利用した部分範囲処理
5.4.9 Web掲示板での部分範囲処理
第6章 ジョインの最適化
6.1 ジョインと反復連結(Loup query)の比較
6.1.1 全体範囲処理の場合
6.1.2 部分範囲処理の場合
6.2 連結チェーンによるジョインへの影響
6.2.1 連結チェーンの正常
6.2.2 連結チェーンの片方異常
6.2.3 連結チェーンの両方異常
6.3 ジョインの種類と活用
6.3.1 ネステッドループ(Nested Loops)ジョイン
6.3.2 ソートマージ(Sort Merge)ジョイン
6.3.3 ネステッドループジョインとソートマージンジョインの比較
6.3.4 ハッシュ(Hash)ジョイン
6.3.5 セミ(Semi)ジョイン
6.3.6 スター(star)ジョイン
6.3.7 スター変換(Star Transformation)ジョイン
6.3.8 ビットマップジョインインデックス(Bitmap Join Index)
内容についてのお問い合わせは、正誤表、追加情報をご確認後に、お送りいただくようお願いいたします。
正誤表、追加情報に掲載されていない書籍内容へのお問い合わせや
その他書籍に関するお問い合わせは、書籍のお問い合わせフォームからお送りください。
本書の書影(表紙画像)をご利用になりたい場合は書影許諾申請フォームから申請をお願いいたします。
書影(表紙画像)以外のご利用については、こちらからお問い合わせください。
Hiroshi Obara さん
2016-12-15
データベースを利用していて、チューニングに興味があるなら是非手にとって、手元に置いておきたい一冊。 もっともっとレスポンスを良くするためには何を考えどうすればいいのか、多くのヒントがあります。ただし、身につけるには何度も何度も繰り返しトライアンドエラーを積み重ねるしかないんだよね。 さぁ、明日からまたがんばろう。 (^^;;
ninn.atsu さん
2015-04-23
なんせ分量が多いので、必要なところだけざっと読んだ。また、仕事で必要になればその都度参考にするべき本だと思う。今までデータベースのパフォーマンスに関して浅く書かれた文献はあったがここまでしっかり記載してある物は探していてもなかなかなかった。よくまとまっていると思う。 システム開発のコアとなるメンバはこれぐらいのレベルは知っておく必要がある。しっかりと身につければ一つ自分の武器になるとおもうので、これからじっくりと活用していきたい。
おかまたけ さん
2010-03-12
ざっと読んだ。大きな発見や認識のズレは無さそう。その代わり結構細かい。よくあるネステッドループ最高!な本ではなく、ソートマージやハッシュジョインについても丁寧な解説があるのが嬉しい。