Oracleの待機とロック
1 Oracleの待機
Oracleの待機には「アイドル待機」と「アイドルでない待機」があります。アイドル待機とは処理がないため暇をしている待機のことをいいます。異常やI/Oにより理由がありSQLを待たせてしまう待機をアイドルでない待機といいます。
2 アイドルでない待機
アイドルでない待機の中でも、正常なI/O待ちなどはSQL処理に必要な待機であると考えられます。しかし、ロックによるものや、ディスク故障による無駄な待ちは必要な待機とはいえません。SQL処理のチューニングの観点から考えると「CPU時間+アイドルでない待機」がSQL処理時間として考えられるため、アイドルでない待機をいかに減らすかがチューニングする際に大切になってきます。待機イベントを含めた総合的にパフォーマンスを確認するツールとしてOracleでは、無償版でStatspackや有償版でDiagnostics Packがあります。また待機イベントだけを確認した場合は、動的パフォーマンスビューであるv$session_waitをご確認ください。
3 ロックの仕組み
ロックによる待機とは、ロックがかかっている対象にロックをかけようとするときに発生する待機を言います。ロック情報はv$lockで確認することができます。よく見られるロックとして「TX」と「TM」があります。TXは行のロックを表しています。TMは表のロックを表しています。またアプリケーションの作りによってはデッドロックが発生してしまうこともあります。デッドロックとは、複数サーバプロセスがお互いに他のサーバプロセスが待つロックを持ってしまっている状態です。デッドロック(ORA-60)が発生すると片方の処理がロールバックされalertファイルとトレースファイルに情報が表示されます。
以下にデッドロックイメージ図を示します。
Oracleは多重処理を実現するためにラッチという仕組みを使用します。ラッチとは出来る限りロックの種類を増やして、他のセッションとの競合を減らしているのです。
<オラクルデータベース概要(豆知識)>
|
スポンサードリンク
|