データベースパフォーマンスの調整
データベースでパフォーマンス調整を行うことは、すべてのデータベース管理者(DBA)が継続的かつ定期的に実行する必要がある最も一般的でありながら最も重要なアクティビティの1つです。専門家は、パフォーマンスを最適化するためにデータベースを定期的に微調整することをお勧めします。微調整により、ユーザーはレポートとクエリをより高速に実行し、結果をより迅速に取得できます。この投稿では、Oracle®データベースのトラブルシューティングとチューニングに関するいくつかの手法を共有しています。
まず、問題が発生している領域を特定する必要があります。問題を引き起こす可能性のある領域には、オペレーティングシステム、データベース、メモリ不足などがあります。問題のある領域を特定したら、最大の利益を得るために領域の調整に進むことができます。このブログはパフォーマンスチューニングのみに焦点を当てています。
オラクルは、問題の診断とパフォーマンスの問題のトラブルシューティングに役立ついくつかのツールをDBAに提供しています。これらのツールには、自動データベース診断モニター(ADDM)および自動ワークロードリポジトリ(AWR)レポートが含まれ、問題のある期間に生成して分析に使用できます。ツールを使用して、歪んだコンポーネントや調整可能なコンポーネントを探す必要があります。
AWRレポートのトップタイムイベント
AWRは、特定のインスタンスごとの統計形式でメモリ使用量を要約するレポートを生成できるツールです。 AWRレポートを生成するには、sqlplusプロンプトで次のファイルを実行します。
@$ORACLE_HOME/rdbms/admin/awrrpt.sql
これにより、事前に保存されたテンプレートを使用してHTML形式のAWRレポートが生成されます。AWRレポートを生成すると、トップタイムイベントをすばやく確認できます。 次の画像に示すように、問題のある領域を特定するAWRレポートのセクション:
ADDMチューニングセッション
通常、問題が報告されると、DBAはその領域のみをトラブルシューティングするか、その特定の問題を解決する場合があります。ただし、問題が正しく特定および対処されていない場合、将来、より大きな問題が発生する可能性があります。 DBAは、ここで全体像を見逃す可能性があります。 DBAがデータベースの問題についてより大きく、全体像を把握できるように、OracleはDBA用の別のツールであるADDMを提供しています。ADDMチューニングセッションは、手動チューニングセッションと同様の手順に従います。次の画像は比較を示しています。
画像ソース:Oracle 11GPerformanceTuningトレーニングマニュアル
SQLまたはOracleEnterpriseManager(OEM)を使用してADDMレポートを取得します。次の画像は、サンプルSQLを示しています。
AWRまたはADDMレポートが不正なSQL/SQLIDのセクションを識別した後、DBMS_XPLANを使用してそれらに関する詳細情報を収集できます。 DBMS_XPLANパッケージは、実行(exec)計画を取得して表示するために使用できる次のテーブル関数を提供します。
DISPLAY
DISPLAY_AWR
select plan_table_output from table (DBMS_XPLAN.DISPLAY_AWR('fs22b3fgfh8xc'));
DISPLAY_CURSOR
次の画像は、EXPLAIN PLAN
からの出力例を示しています。 コマンドを実行し、クエリが全表スキャンを使用しているか、いくつかのインデックスを使用してデータを絞り込んでいるかを識別します。
ADDMレポートは、いくつかの新しいインデックスを作成することでパフォーマンス上の利点を達成できるかどうかを反映しています。 OEMからSQLTuningAdvisorを実行してクエリを微調整し、より適切な実行プランを使用することもできます。ほとんどの場合、問題のあるSQLに対してより適切な計画を使用すると、主要なパフォーマンスの問題が解決されます。
SQLチューニングアドバイザー
SQL Tuning Advisorは、SQL許可ID(SQLID)を使用してソリューションを分析および提案することにより、SQLステートメントの分析とパフォーマンスの推奨事項の取得を支援します。 SQL Tuning Advisorは、次のソースを分析します。
- 上位のアクティビティ:現在アクティブな上位のSQLステートメントを分析します。
- SQLチューニングセット:提供するSQLステートメントのセットを分析します。
- 履歴SQL(AWR):AWRスナップショットによって収集されたステートメントからSQLステートメントを分析します。
次のスクリーンショットは、いくつかの例を示しています。
Oracle eBusiness Suiteデータベースでは、長時間実行される要求の問題は、ほとんどの場合、いくつかの同時要求が実行され続ける場合に発生します。これを解決するには、同時リクエストに関連付けられているデータベースセッションに関する詳細情報を収集する必要があります。次の画像は、これを収集する手順を示しています
情報:
Oracleデータベースのメモリパラメータ
AWRレポートを確認した後、DBAは、微調整が必要なキャッシュを簡単に特定できます。これは、そのキャッシュのキャッシュヒット率が他のキャッシュよりも低いためです。次の画像は、インスタンス全体のメモリ調整のために考慮する必要がある上位のデータベースパラメータのいくつかを示しています。
画像ソース: https://ora-performance-tuning.blogspot.com/2014/02/automatic-shared-memory-management.html
次の表に、いくつかの一般的な待機イベントとその考えられる原因を示します。
(
表の出典:Oracle Performance Tuning 11G OCPトレーニングマニュアル、第20章、24ページ
お客様は通常、次の上位10のチューニングの問題に直面します。
-
不正な接続管理: 開発者は、アプリケーションでデータベースに接続するためのコードを記述したり、クエリを実行してデータベースからデータをフェッチしたりします。データがフェッチされ、それ以上何も必要なくなったら、コードはデータベースへの接続を閉じる必要があります。ただし、これは多くの場合発生しないため、データベース内の非アクティブなセッションの数が増加します。これらのセッションでは、他のアクティブな接続に使用された可能性のある貴重なリソースを使用します。
-
カーソルと共有プールの不適切な使用: カーソルは、開発者の武器庫にあるツールであり、ほとんど使用されていません。カーソルがないと、Oracleは実行するたびにコードをハード解析する必要があります。これは、繰り返し実行されるSQLクエリのパフォーマンスに大きな影響を与えます。 DBAは、インスタンス効率のパーセンテージ-実行して%を解析するを調べることで、この問題を特定できます。 AWRレポートセクション。
-
不正なSQL: SQLクエリの記述方法(データをフェッチするための結合条件を使用)は、実行後のSQLのパフォーマンスに大きく影響します。大きなテーブルの全表スキャンは避けてください。 SQLの準備ができたら、開発者とDBAは、そのSQLについて説明プランを実行して、データベースでSQLを実行するコストを理解する必要があります。カーソル、バインド変数、およびインデックスを使用することで、効率を上げることができます。
-
非標準の初期化パラメータの使用: DBAは、常に標準または推奨の初期化パラメーターのみを使用する必要があります。非標準の初期化パラメータは、Oracle Service Request(SR)によって提案された場合にのみ使用してください。
-
データベースI/Oを間違える: データベースハードウェアを選択するDBAがデータベースを複数のディスクに分散し、ネットワークチームを巻き込んで、データベースサーバーからエンドユーザーにデータが行き来する速度について話し合う必要がある場合。 DBAは、ボトルネックやパフォーマンスの問題を回避するために、ネットワークスイッチとルーターの速度を考慮する必要があります。
-
ログ設定の問題をやり直す: Oracleがクラッシュの場合にトランザクションをやり直すことができるように、やり直しバッファからのデータを格納するためにやり直しログが必要です。 REDOログのサイズが不十分な場合、データベースで複数のスイッチが発生し、パフォーマンスの問題が発生する可能性があります。これにより、アーカイブ生成の負荷も増加します。
-
バッファキャッシュ内のデータブロックのシリアル化: これは、空きリストグループまたは元に戻るセグメントが不足しているために発生します。この状況は、アクティブユーザーのベースが多く、元に戻るセグメントが少ない挿入が多いデータベースで発生し、最終的にパフォーマンスの問題につながります。
-
全表スキャン: 説明プランを実行して、クエリの全表スキャンを確認します。通常、全表スキャンを実行するクエリは、不正なSQLdesignを反映します。これは、インデックスを使用し、必要なデータを絞り込むことで修正できます。まれに、特に小さなテーブルの場合、全表スキャンが有益な場合があります。
-
再帰SQL: 再帰SQLは、正しく使用すれば開発者に恩恵をもたらす可能性がありますが、両刃の剣になる可能性があります。正しく行われると、出力が効率的に提供されます。そうしないと、データベースのパフォーマンスに大きな影響を与えます。
-
ディスク内の並べ替え: ディスク内の並べ替えは、データベースにとって非常にコストのかかる作業です。これは、SQLの設計が不十分で最適化が不十分であることを示しています。この問題は、インスタンスアクティビティ統計–並べ替え(ディスク)で特定できます。 AWRレポートセクション。
DBAはパフォーマンスチューニングのさまざまな領域を考慮する必要がありますが、データベースの世界では、パフォーマンスチューニングはデータベースとアプリケーションの設計段階から始まります。パフォーマンスチューニングの観点を念頭に置いて設計されたデータベースとアプリケーションは、パフォーマンスチューニングを考慮せずに設計されたアプリケーションよりもはるかにスケーラブルです。
>このブログで取り上げられているパフォーマンス調整ポイントは、氷山の一角にすぎません。データベース全体のパフォーマンスを管理するために、他のDBAがこのトピックについてさらに読み続けることをお勧めします。
[フィードバック]タブを使用して、コメントを書き込んだり、質問したりします。
データベースサービスの詳細をご覧ください。
Rackspaceは、Oracle製品に関する幅広い知識を持っています。オラクルへの投資を最大化する方法の詳細をご覧ください。
-
Redisのパフォーマンスについての考え
単純なキャッシングから数テラバイトサイズのセットアップまで、さまざまなユースケースでRedisを使用している多くの人々や企業と話す特権が与えられているので、私が他の何よりも取り上げるよう求められているトピックの1つはパフォーマンスです。 Redisは、パフォーマンスへのアプローチ方法が異なります。ほとんどではないにしても、多くのデータベースサーバーでパフォーマンスを向上させようとしています。 Redisの目標は、速度を落とさないことです。これは非常に異なるアプローチであり、それを利用するには異なる考え方が必要です。 パフォーマンスメトリクス–レイテンシーは王様ですか? Redisを使用すると
-
MS Access から SQL Server データベースにデータを移行する
最近、データベースが大きくなりすぎて Access で処理できなくなったため、Access データベースから SQL Server 2014 にデータを移行する必要がありました。プロセスはかなり単純ですが、段階的な手順を記載した記事を書こうと思いました. まず、コンピューターに SQL Server または SQL Server Express がインストールされていることを確認する必要があります。 PC に SQL Server Express をダウンロードする場合は、必ず Advanced Services を含むバージョンをダウンロードしてください。 .そうしないと、データベース エ