V$SQLAREA 次は「どのようなSQL文が問題となっているのか」を確認してみましょう。つまりロックをかけている原因となっているSQL文です。このV$SQLAREA動的パフォーマンスビューもかなりの情報を保持しています。しかし、ここで知りたい情報は問題となっているSQL文の内容ですので、SQL_TEXT列の説明とします。
![ロックをつぶせ! 最初に疑うべき原因](https://cdn-ak-scissors.b.st-hatena.com/image/square/6e84fc6ab06f31b2e64248cbfc92fe06deb5bab5/height=288;version=1;width=512/https%3A%2F%2Fimage.itmedia.co.jp%2Fimages%2Flogo%2F1200x630_500x500_ait.gif)
動的パフォーマンスビューによる調査 問題となっているロックを特定していく作業に利用できるものが、その名前からも分かるように、V$LOCK、V$SESSION、V$SQLAREA、V$LOCK_OBJECTという動的パフォーマンスビュー注1です。それぞれの動的パフォーマンスビューからどのような情報を取得できるか確認するために、DESC[RIBE](各テーブルやビューの構成を表示するSQL*PLUSコマンド)コマンドと実際のSQL文で確認していきましょう。 注1:動的パフォーマンスビュー Oracleサーバが稼働している間、データベースの状態を保持している表に対するアクセスを可能にするビュー。「動的パフォーマンスビュー」「データディクショナリビュー」に関する詳細解説は、@IT記事「OracleMaster試験ポイント解説」にありますので参照してみてください。
データベースの運用で避けられないのが、ロック競合によって起こるシステムトラブルへの対応です。「2時までに終わるはずのバッチ処理が朝になっても終わっていない」とか「負荷が高いわけでもないのにシステムが無応答になっている」といったトラブルが発生したとき、DBエンジニアはそれがロック競合によるものなのかどうかを切り分けて、適切に対処しなければなりません。 これまでInnoDBはロック競合に対してほとんど打つ手がなかったのですが、最近ようやく対処方法がでてきました。今日はその手順を確認していきたいと思います。 前提 今回ご紹介する手順は、MySQLの以下のバージョンを対象にしています。 MySQL 5.1+InnoDB Plugin 1.0 MySQL 5.4 いきなりハードルを上げてしまって申し訳ありませんが、バージョン5.0以下や素の5.1では使えませんのでご注意ください。以降の実行例はすべて
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く