2016.10.25インフラ

SQLチューニングの必要性と2種類のチューニング方法

  • このエントリーをはてなブックマークに追加
98349385 83a4 48dd 98a5 454a6111de89
SQLのチューニングは、比較的容易に済むインデックスを作成するという対応を取られがちですが、数万レコードほどのデータ量では意味がなく、またインデックスを乱立してしまうと複数条件がある場合にオプティマイザが誤作動を起こす原因になってしまいます。エラーを起こさないためにも、正しい実行計画をオプティマイザに作成してもらい、SQLを試行錯誤し、変更してチューニングを行う必要があります。
 
今回は、SQLのチューニングの必要性と、代表的な2種類のチューニング方法についてご紹介していきます。
 

 
SQL案件を探す!

未公開案件も多数ありますので「まずは相談したい。」という方もお気軽に登録ください。
 
Banner free wide 037b570405fddeb419957475d18a005501589cadc55bfe73d5000335887322fd
【目次】
SQLチューニングの必要性とスキル
SQLチューニングの必要性
SQLチューニングに必須な5つのタスク
SQLチューニングはOracle Databaseのスキルも必要
SQLチューニングのやり方は2種類ある
手動でのSQLチューニング
自動でのSQLチューニング
SQLチューニングの必要性と需要
DB高速化の需要のおかげでSQLチューニングが増えてきている
フルスタックエンジニアとしての募集もある
SQLチューニングの案件・求人情報例
まとめ
 
 

SQLチューニングの必要性とスキル

 
パフォーマンス・チューニングに関する全体の方針は、「一番遅いところ(ボルトネック)を改善する」ことです。当たり前のことではありますが、すでに速い処理をさらに早くさせても全体のパフォーマンスには無意味です。その為、処理が遅いと感じた場合、SQLやアプリの改修を行うのではなく、どこが遅い原因なのか調査することが重要となります。
 

SQLチューニングの必要性

SQLのチューニングは、データベース管理システムのパフォーマンス・チューニングの重要な部分になります。なぜ、チューニングが必要なのか。それは、「コスト削減」と「業務効率」の2つにおいて必要だからです。ユーザー・レスポンス時間の短縮したり、同じ作業処理にかかるリソースを削減することにより、全体のコストダウンを図れます。
 

ユーザー・レスポンス時間の短縮

レスポンス時間とは、問い合わせを発行してから結果が戻るまでの時間と、バッチ処理を行ってから終了するまでの時間を指します。このレスポンス時間は、収益に直結すると言われています。例えばWebサイトでしたら、レスポンス時間が2秒遅いだけで閲覧している50%の人がそのサイトから別のサイトに移ってしまいます。これがシステム開発ですと、レスポンスが遅い分だけ全体の作業も遅れてしまいがちになります。ですので、ユーザー・レスポンス時間の短縮を行うことにより、業務効率化と収益にメリットが出ます。
 

スループットの向上

スループットとは、一定時間内に処理できるデータ量のことで、1秒間で100トランザクション処理数などの、処理量のことを指します。特にネットワークに関わる処理などにスループットの向上が必要となります。スループットを向上させることによりCPAが改善され、無駄な処理・無駄な待機時間をなくすメリットがあります。
 

SQLチューニングに必須な5つのタスク

SQLチューニングのセッション使用は、事前にチューニングを行う、事後チューニングを行うかなどの多様な要因によって異なります。事前でも事後でも一般的なSQLチューニング・セッションには5つのタスクのほとんどもしくは全てが含まれます。
 
SQL文の識別
過去の実行履歴を検討し、ワークロードとシステムリソースの大部分に関係しているSQL文を識別します。
 
・パフォーマンス関係のデータ収集
オプティマイザ統計はSQLチューニングにおいて非常に重要な部分です。この統計が存在しない、もしくは正確ではない場合は最適な計画を作成することが出来ません。その為、パフォーマンス関係のデータを収集する必要があります。
 
・問題原因、範囲の特定
SQLパフォーマンスの主な原因は、「SQL文の設計が非効率的」「最適ではない実行計画」「SQLのアクセス構造がない」「失効したオプティマイザ統計」「ハードウェアの問題」の5つに分けられます。原因と範囲を特定し、問題範囲の定義を行います。
 
・パフォーマンスのSQL文の修正実装
SQL文の修正・実装は問題の原因やシステムの状況によって異なります。SQL文を修正し、不要なハード解析を開始、不要な分の削除、複雑な分を単純になるよう分けるなどの方をとるか、場合によっては分ではなくスキーマ・オブジェクトの再構築によりSQLパフォーマンスが向上する場合がありますので、事前の問題原因・範囲の特定をしっかり行って、適切な修正を行います。
 
・パフォーマンス低下の回避
最適なパフォーマンスを実現し続けることが重要ですので、オプティマイザ統計、SQLプロファイル、SQL計画ベースラインなどを使用して、パフォーマンス低下を回避させます。
 

SQLチューニングはOracle Databaseのスキルも必要

SQLチューニングの際は、データベース管理システムも関わってきます。多くのDBは、Oracle Databaseを使用していることが多いため、SQLのスキルと一緒にOracle Databaseのスキルも必要となります。Oracleインスタンスの初期化パラメータの変更などのOracle Databaseのパフォーマンス・チューニング方法の中で、SQLチューニングは最も効果が期待できる手段だからです。
 
 

SQLチューニングのやり方は2種類ある

 
SQLチューニングのやり方は、大きく分けて「手動」と「自動」があります。データベース自体が分析、アドバイス、修正アクションを出来るものは自動でのSQLチューニングになります。手動の場合は、データベースの分析、アドバイス、修正アクションの作業を全て実行する必要があります。
 

手動でのSQLチューニング

手動でSQLチューニングを行う際、SQLチューニング・アドバイザを使用して1つ~複数のSQL文をチューニングすることが出来ます。簡単な流れをご紹介します。
 
1.データベースの「ホーム」ページにある「関連リンク」で「セントラル・アドバイザ」を表示
2.「アドバイザ」で「SQLチューニング・アドバイザ」を表示
3.SQLチューニングのタスクを実行するための手順を実行
・高負荷SQL文に対するタスクの場合は、「トップ・アクティビティ」を選択
・AWRのSQL文履歴に対するタスクの場合は、「期間SQL」を選択
・SQLチューニング・セットに対するタスクの場合は「SQLチューニング・セット」を選択

4.「有効範囲」で実行するチューニングの範囲を選択
5.スケジュールで「即時」を選択、もしくは「後で」を選択して実行時間を決める
6.即時実行した場合は、タスク終了後に「SQLチューニング結果」が表示されますので、8項目に進んでください
7.後で実行した場合は、「セントラル・アドバイザー」ページで操作実行できます
8. SQL IDの推奨」で推薦事項を実装する場合は「実行」を選択
9.SQLチューニング結果」ページに推薦操作が完了の旨が表示されるので確認します
 
詳しい操作方法は、Oracle Database 2日でパフォーマンス・チューニング・ガイドをご参考ください。
 

自動でのSQLチューニング

Oracle Databaseには、SQLチューニングに関連するいくつかのアドバイザが用意されており、全ての自動SQLチューニング・ツールで入力としてSQLチューニング・セットを使用出来ます。やり方は、「自動SQLチューニング」という新しいタスクを通じて、AUTOTASKフレームワークを使用します。簡単なSQLチューニングの流れをご紹介します。 
 
1. AWRの上位SQLの識別に基づき、自動SQLチューニングは、自動チューニングのターゲットにします
2.メンテナンス・ウィンドウで自動SQLチューニング・タスクを実行
3. SQLチューニング・アドバイザが起動することにより、識別したSQL文が自動的に調整される
4. 必要に応じてSQLプロファイルが作成
5. 自動チューニング・アクティビティのレポートを要求
6. 生成された自動SQLプロファイルを検証または削除するために、調整されたSQL文を確認するオプションを使用
 
更に詳しく知りたい方は、ORACLEの公式ページをご参考ください。
 

SQLチューニングの必要性と需要

 
データベース管理システムのパフォーマンス・チューニングの重要な部分になります。本来であれば、SQLチューニングが必要になること自体を避けなければいけませんが、規模が拡大した、別の環境を導入したなど様々なことからSQLチューニングを行わなければいけない状態が発生します。より良い品質のものを顧客に提供するためにも、SQLチューニングが必要となってきます。
 

DB高速化の需要のおかげでSQLチューニングが増えてきている

バッチ処理に時間がかかる、DBがボルトネックの原因となっているなどから、DB高速化の需要が高まってきています。この問題を改善するためには、インタフェースやストレージをより高速なものに変更するとともに、SQLのパフォーマンスチューニングを行います。そのため、近年ではDB高速化の需要に伴い、SQLチューニングの需要が増えてきています。
 

人工知能やビッグデータのニーズに合わせ需要が増加

特に、人工知能やビッグデータなどの複雑かつ大量のデータを取り扱う企業は、真っ先にDB高速化を取り入れています。その為、今度のIT業界で期待されている人工知能やビッグデータのニーズに合わせて、各企業がSQLチューニングを行っています。
 

フルスタックエンジニアとしての募集もある

SQLチューニングは、チューニング専門のエンジニアを募集する場合が多かったのですが、近年ではDB周りを触るインフラのエンジニアにチューニングを求めることが多くなってきました。これは、人件費の削減も関わってきますが、一番の原因はエンジニア不足です。エンジニアが不足しているため、1人で色々な仕事が出来るフルスタックエンジニアが求められるようになってきました。その為、SQLのチューニングをもう一つプラスとしてスキルが求められることが多いです。
 

SQLチューニングの案件・求人情報例

エンジニアのための情報サイト”フリエン”に掲載されている案件情報を少しだけご紹介します。
 

【Oracle】飲食店情報サイト DBA募集の情報を見る)
 

【Ruby】SQLチューニング、DB運用支援の情報を見る)
 

【Oracle /SQL】生産管理システムの導入におけるアドオン開発の情報を見る)
 
 
気になる案件情報が見つかった方は、【登録フォーム】よりお気軽にお問い合わせください。掲載できない案件も複数抱えているうえ、SQLチューニングのエンジニアを探している企業も豊富です。
 
 

まとめ

いかがでしたでしょうか。SQLチューニングはDBのパフォーマンスを発揮するにあたり、重要な作業になります。特に大手企業や通信会社などでは、システムの移り変わりに伴いSQLチューニングが出来るエンジニアを募集します。DB周りを触る場合、基礎知識だけでも吸収しておくと、スキルアップに繋がります。少しでも仕事の幅を広げるためにも、SQLチューニングに触れてみてはいかがでしょうか。
 
  • このエントリーをはてなブックマークに追加
SQL案件を探す!

未公開案件も多数ありますので「まずは相談したい。」という方もお気軽に登録ください。
 
Banner free wide 037b570405fddeb419957475d18a005501589cadc55bfe73d5000335887322fd

新着のコラム記事

人気のコラム記事

  • キーワードからコラムを探す