タグ付けされた質問 「locked-objects」

3
行ロック競合のトレース、デバッグ、修正
遅くなって、私は多くの行ロックの競合に直面しました。競合するテーブルは特定のテーブルのようです。 これは一般的に何が起こるかです- 開発者1は、Oracle Formsのフロントエンド画面からトランザクションを開始します 開発者2は、同じ画面を使用して別のセッションから別のトランザクションを開始します 〜5分で、フロントエンドが応答しなくなったようです。セッションをチェックすると、行ロックの競合が示されます。誰もが投げる「解決策」は、セッションを終了することです:/ データベース開発者として 行ロックの競合を排除するために何ができますか? ストアドプロシージャのどの行がこれらの行ロックの競合を引き起こしているかを調べることは可能でしょうか このようなコーディングの問題を軽減/回避/排除するための一般的なガイドラインは何でしょうか? この質問が無制限で不十分な情報であると感じた場合は、気軽に編集してください。 問題のテーブルには多くの挿入と更新が行われています。最も忙しいテーブルの1つだと思います。SPはかなり複雑です-簡単にするために-さまざまなテーブルからデータをフェッチし、それを作業テーブルに取り込みます。作業テーブルで多くの算術演算が行われ、作業テーブルの結果が問題のテーブルに挿入/更新されます。 データベースのバージョンは、Oracle Database 10g Enterprise Editionリリース10.2.0.1.0-64ビットです。ロジックのフローは両方のセッションで同じ順序で実行され、トランザクションは長時間(または少なくともそうだと思われます)開いたままにならず、トランザクションのアクティブな実行中にロックが発生します。 更新:テーブルの行数は予想よりも大きく、約310万行です。また、セッションをトレースした後、このテーブルに対するいくつかの更新ステートメントがインデックスを使用していないことがわかりました。なぜそうなのか-よくわかりません。where句で参照される列にはインデックスが付けられます。現在、インデックスを再構築しています。

2
原因不明のInnoDBタイムアウト
最近、いくつかの非常に基本的な更新がタイムアウトし、原因を特定できませんでした。例: //#Query_time:51 Lock_time:0 Rows_sent:0 Rows_examined:0 UPDATE photos SET position = position + 1 WHERE (photo_album_id = 40470); 同じログには、Lock_time> 0のエントリはありshow innodb statusません。実行しても、関連するロックは明らかになりません。この問題は、私のアプリケーションサーバーログ(Mysql::Error: Lock wait timeout exceededmysql-slowログの対応する各エントリに関連するエラーを示す)に基づいて、少なくとも5つの異なるテーブルに影響しているようです。 ここからどこへ行くべきかについてのアイデアはありますか?私はあらゆる方向に行き止まりを打っています。ありがとう。 編集: CREATE TABLE `写真`( `id` int(11)NOT NULL auto_increment、 `type` varchar(255)NOT NULL、 `photo_album_id` int(11)NOT NULL、 `user_id` int(11)NOT NULL、 `title` varchar(255)default 'Untitled'、 「説明」テキスト、 `credit` varchar(255)デフォルトはNULL、 `photo_file_name` …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.