sql チューニング
DESCRIPTION
SQL チューニング. パフォーマンスを考慮した SQL 2009.03.02 まつけん. アジェンダ. データベースのおさらい SQL について SQL のチューニング. データベースのおさらい. データベースを使うシステムは、大きく 2 つに分類されます。 ・ OLTP ( オンライントランザクション処理) WEB アプリケーションのような、処理結果を即時に表示するような システム ・ DWH ( データウェアハウス ) 半年間の売り上げ上位の商品は?といった集計するためのシステム. データを更新、登録するための言語 - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: SQL チューニング](https://reader036.vdocuments.pub/reader036/viewer/2022082505/56812ff3550346895d956b56/html5/thumbnails/1.jpg)
SQL チューニング
パフォーマンスを考慮した SQL
2009.03.02 まつけん
![Page 2: SQL チューニング](https://reader036.vdocuments.pub/reader036/viewer/2022082505/56812ff3550346895d956b56/html5/thumbnails/2.jpg)
アジェンダ
データベースのおさらいSQL についてSQL のチューニング
![Page 3: SQL チューニング](https://reader036.vdocuments.pub/reader036/viewer/2022082505/56812ff3550346895d956b56/html5/thumbnails/3.jpg)
データベースのおさらい
データベースを使うシステムは、大きく 2 つに分類されます。
・ OLTP (オンライントランザクション処理) WEBアプリケーションのような、処理結果を即時に表示するよう
な システム
・ DWH (データウェアハウス) 半年間の売り上げ上位の商品は?といった集計するためのシステム
![Page 4: SQL チューニング](https://reader036.vdocuments.pub/reader036/viewer/2022082505/56812ff3550346895d956b56/html5/thumbnails/4.jpg)
データを更新、登録するための言語標準規格: SQL2003分類すると以下のパターンに分かれる
概要
SQL について
QUERY :データ抽出 ( SELECT )DML :データ操作 ( INSERT, UPDATE,
DELETE)
DDL :データ定義 ( CREATE , TRUNCATE)
![Page 5: SQL チューニング](https://reader036.vdocuments.pub/reader036/viewer/2022082505/56812ff3550346895d956b56/html5/thumbnails/5.jpg)
SQL について
データベース
オプティマイザ
SQL
実行計画
テーブル
結果セット
①解析フェーズ
②実行フェーズ
③フェッチフェーズ
実行イメージ
![Page 6: SQL チューニング](https://reader036.vdocuments.pub/reader036/viewer/2022082505/56812ff3550346895d956b56/html5/thumbnails/6.jpg)
SQL のチューニング
ポイント
SQL の実行回数を減らすINDEX 検索するFULL 検索を速くする
![Page 7: SQL チューニング](https://reader036.vdocuments.pub/reader036/viewer/2022082505/56812ff3550346895d956b56/html5/thumbnails/7.jpg)
SQL のチューニング
SQL の実行回数を減らす
省略できるものは省略しましょう。
例)修正前SELECT COUNT(*)
IF( あったら) UPDATEELSE( なかったら ) INSERT
修正後TRY INSERTEXCEPTION( 重複エラー ) UPDATE
![Page 8: SQL チューニング](https://reader036.vdocuments.pub/reader036/viewer/2022082505/56812ff3550346895d956b56/html5/thumbnails/8.jpg)
SQL のチューニング
INDEX 検索するINDEX のイメージ( B-Tree INDEX )
1 2 3 4
2
5 6
5
1
![Page 9: SQL チューニング](https://reader036.vdocuments.pub/reader036/viewer/2022082505/56812ff3550346895d956b56/html5/thumbnails/9.jpg)
SQL のチューニング
INDEX 検索するメリット
① 全体の 1 割 ~ 2 割のデータを抽出する場合に高いパフォーマンスが得られる。
![Page 10: SQL チューニング](https://reader036.vdocuments.pub/reader036/viewer/2022082505/56812ff3550346895d956b56/html5/thumbnails/10.jpg)
SQL のチューニング
INDEX 検索するデメリット ① DML のパフォーマンスが劣化する。 → INDEXがない場合と比較すると、 3 倍~ 4 倍時間がかかることも。
② 定期的な縮小が必要になる。 → 定期的にメンテナンスしないと、サイズが肥大化する。
③抽出対象件数が多くなると、逆に遅くなる。
![Page 11: SQL チューニング](https://reader036.vdocuments.pub/reader036/viewer/2022082505/56812ff3550346895d956b56/html5/thumbnails/11.jpg)
SQL のチューニング
FULL 検索を速くするFULL 検索とは?
テーブルの先頭レコードから、最後( HWM)まで検索する方法
HWM(ハイウォータマーク)
テーブル HDD の格納領域
![Page 12: SQL チューニング](https://reader036.vdocuments.pub/reader036/viewer/2022082505/56812ff3550346895d956b56/html5/thumbnails/12.jpg)
SQL のチューニング
FULL 検索を速くするポイント
①テーブルをきちんと正規化する。② 巨大なテーブル(履歴テーブル等)は、月度等で
テーブルを分けてしまう。(参照は結合 VIEW 等で行う)
③ 定期的にテーブルを Truncate する。④ 抽出に必要なキー項目のみをあらかじめ専用テーブ
ルに退避し、それを基に検索する。
![Page 13: SQL チューニング](https://reader036.vdocuments.pub/reader036/viewer/2022082505/56812ff3550346895d956b56/html5/thumbnails/13.jpg)
最後に
SQL チューニングの心得INDEXは、万能ではない。FULL検索を恐れない、嫌わない。きちんとテーブルは正規化する。DELETEは、ごみ箱に捨てているだけ。 実サイズは縮小しない事を忘れない。
![Page 14: SQL チューニング](https://reader036.vdocuments.pub/reader036/viewer/2022082505/56812ff3550346895d956b56/html5/thumbnails/14.jpg)
ご静聴、ありがとうございました。