
Oracle SQLチューニング講座(1)
パフォーマンス向上の最短コースを知る Page2
株式会社アゲハ
加藤 猛
2004/6/21
それでは実際に、パフォーマンス・チューニングでのSQLチューニングの位置付けを見てみます。
論理設計や物理設計の変更、Oracleインスタンスの初期化パラメータの変更などOracleデータベースのパフォーマンス・チューニング方法の中で、SQLチューニングは、最も効果が期待できる手段です。場合によっては、索引の使用の有無など、SQL文を最適化することによって、数倍から数百倍のパフォーマンス向上といった、そのほかの手段では実現不可能な結果をもたらすこともできます。
SQLチューニングの処理は、Oracleインスタンスやハードウェア・リソースなどに密接にかかわっていて、パフォーマンス・チューニングの観点から見ると、これらのかかわり合いは、図3のような関係で表せます。この図の中で、SQLチューニングは最も下位に位置しています。下位の階層は、より上位の階層に対してパフォーマンスの影響を与えることを表しています。
![]() |
| 図3 パフォーマンス・チューニング項目の相互影響度 |
- OS(ハードウェア)リソースのチューニング
CPUやメモリ、ディスク、ネットワークなど、OSリソースの最適化
- Oracleインスタンス・チューニング
SGA(システムグローバル領域)、PGA(プログラムグローバル領域)、各種バックグラウンド・プロセスなど初期化パラメータの調整
- アプリケーションのチューニング
プログラムロジックやアプリケーション・サーバの設定などのアプリケーションの最適化
- オブジェクトのチューニング
表や索引といったデータベース・オブジェクトの設定や設計の変更など
- SQLチューニング
SQL文のチューニング
例えば、すでに稼働中のデータベース・システムでパフォーマンスが出ないケースを考えてみます。この場合、上層に当たるOracleデータベースの初期化パラメータを調整しても、最適な値を見つけるのは難しいでしょう。
仮に非効率なSQLによって無駄なデータが数多くキャッシュにある場合などを考えてみてください。いくらキャッシュ関連の初期化パラメータを大きくしてもキャッシュの効果は少なく、メモリ・リソースを無駄にするだけで適切な対応とはいえません。そのため下位に当たるSQLに関して最適なチューニングを事前に実施して、それに合わせて初期化パラメータを調整することが、パフォーマンスを向上させる方法として望まれます。つまり、SQLチューニングを行うことが、そのほかすべてのパフォーマンス・チューニングの基礎となるのです。
SQLのチューニングを行うには、もちろんチューニングの対象となるSQLが決まっていなければなりません。しかし、実際のDBAに届くユーザーからの問い合わせの内容は、「使用しているアプリケーションなどの処理が遅い」といったように、具体的に何が遅いのかが判明しておらず、SQLの部分が遅いのかどうかが分からない、といったことが少なくありません。そこで、SQLチューニングを行うに当たって、実際に行うべき手順の概略が図4になります。
![]() |
| 図4 SQLチューニングを行うまでの手順の概略 |
手順1
最初に、パフォーマンスの問題に直面しているユーザーから、「何の処理を行っているのか」「処理にどのくらい時間がかかっているのか」などといった状況報告と、「システム形態やアプリケーションの種類」などといった環境を確認します。
手順2
次にCPU負荷や過度のスワップ処理の発生、ネットワーク負荷などのシステム・リソースに問題がないか、アプリケーションに問題がないかなどを確認することで、問題点の切り分けを行います。これらシステムリソース全体に問題がない場合や、特定のOracleプロセスがシステムリソースを使用してるのが明確な場合などでは、SQLやインスタンスといったOracle側に問題があると判断できます。
手順3
Oracle側の問題がSQLにあった場合、必ずSQLチューニングの目標を決定します。SQLチューニングは目標を定めないと終わりのない作業になってしまうため、「レスポンスタイムが何秒以下」といった明確なゴールを決めておきます。また、SQLチューニングの作業にかけられる時間は、スケジュールなどにより限られていることが多いため、チューニングを行うべきSQLの選択、例えばCPUに負荷をかけているSQL、物理アクセス量が多いSQLなどといった作業の優先順位付けも併せて決定しておきます。
手順4
そして実際の処理の間に、SQLの詳細情報の取得を行います。また、先に説明したように、SQLのチューニングはOracleインスタンスやOSリソースの状況にもかかわってくるため、Oracleの稼働状況や、データベース・サーバのシステム・リソース情報も併せて取得します。
手順5〜7
その後、情報を分析、適切なSQLチューニングを実施し、目標に達するまで情報取得とチューニングを繰り返します。
◇
今回はSQLチューニングの目的と意味、チューニングを行うまでの手順の概略を紹介しました。次回はSQLチューニングを行うに当たって必要な基礎知識として、データ・アクセス方法、オプティマイザに関して説明します。(次回に続く)
| 2/2 |
| Index | |
| 連載 Oracle SQLチューニング講座(1) パフォーマンス向上の最短コースを知る |
|
| Page 1 ・パフォーマンス・チューニング概要 ・パフォーマンス・チューニングの目的とは? |
|
| Page 2 ・パフォーマンス・チューニングにおけるSQLチューニング ・SQLチューニングの手順 |
|
| 連載 Oracle SQLチューニング講座 |
TechTargetジャパン
- IBMが歴史を変える!? 新カテゴリの製品を発表 (2012/5/25)
IBMは新たな製品カテゴリとなる「PureSystems」を発表。DB2 10とビッグデータの関係、PureSytemsの斬新さはどこかに迫ります - クラウド時代のデータ処理を支える分散KVSの可能性 (2012/5/23)
現在、高速データ処理の主流はインメモリ型データ処理だが、別の方法として分散KVSが注目を集めている。今回は分散KVSについて話を聞いた - 複数の表からデータを取り出して表示させる(2) (2012/4/23)
前回はSQLの基本的な結合構文について説明しました。今回は、より複雑な自己結合や外部結合について説明します - SQL Server、OOWにIQ、盛りだくさんの4月 (2012/4/20)
オラクルオープンワールドが3年ぶりに東京で開催されたほか、SQL Server 2012が提供開始されるなど、今月は話題が盛りだくさんです
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -


