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