ホームページ バックエンド開発 PHPチュートリアル DB2 デッドロック解決プロセスの完全な記録

DB2 デッドロック解決プロセスの完全な記録

Mar 06, 2018 pm 05:43 PM
デッドロック 解決する 記録

DB2 は主に大規模なアプリケーション システムで使用され、優れた拡張性を備えており、メインフレームからシングル ユーザー環境まですべてをサポートできます。 DB2 は、高レベルのデータ利用、整合性、セキュリティ、および回復可能性を提供します。この記事では、DB2 のデッドロック解決プロセスの完全な記録を紹介します。この記事で発生するデッドロックは、非常に難しい処理です。

環境はDB2です。しかし、最近、特定の select SQL ステートメントが常にデッドロックになるという奇妙なデッドロック現象が頻繁に発生しています。

過去の経験によれば、update/delete などの更新 SQL ステートメントは通常、デッドロックの問題を引き起こします。そして、この select SQL ステートメントは非常に普通の SQL であり、大規模なデータ処理はありません。

この行き詰まりを分析すると、対処が難しいことがたくさんあります。

1. 本番環境には大量のデータがあるため、本番環境の関連付けテーブルのデータをテスト環境にインポートできません。つまり、データ量をシミュレーションすることができません。
2. ログ出力はありません。本番環境のログ出力レベルがERRORのため。
3. 顧客が許可していないため、本番環境でテストできません。
4. 本番環境のデータベースではスナップショットやその他の機能を有効にすることはできません。パフォーマンスに影響するからです。

ご想像のとおり、スナップショットなどの機能がなければ、デッドロック分析はコード分析にのみ依存できます。しかし、このプロセスは非常に複雑であり、コードを分析するだけでは手がかりがありません。

ステージ 1: データ量が原因であると考えられます

実稼働環境では非常に大量のデータがあるため、このプロセスには他の多くのテーブルの処理も含まれます。では、大量のデータによってシステムに過負荷がかかり、デッドロックが発生したのではないかと考えられます。
そこでデッドロック発生時のCPU、ハードディスク、ネットワークなどの負荷情報を取得しました。手がかりは見つかりませんでした。

ステージ 2: テスト プログラムを作成し、マルチスレッドを使用して、テスト環境で複数のユーザーがこの処理を実行することをシミュレートします。

このデッドロックを開発環境で再現するために、マルチユーザー操作をシミュレートするマルチスレッドのテストプログラムを作成しました。残念ながら未だに再現されていません。

フェーズ 3: テスト環境データベースと運用環境データベースの違いを分析します

現時点では、問題は依然としてデータ量によって引き起こされていると考えられます。そのため、開発環境にも運用環境と同じくらい多くのデータが存在するように最善を尽くしました。
テストを実行してもまだ再現されませんでした。

ステージ 4: ユーザーの操作ログを分析する

他に解決策がないため、何らかの手がかりを見つけるために、ユーザーの操作ログを分析する必要があります。苦労の甲斐あって、この操作を 2 人で同時に実行すると、基本的にデッドロックが発生することがわかりました。したがって、二人が同時に操作していることが問題の原因であると判断します。しかし、なぜ開発環境は多くの人の操作をシミュレートしているのにデッドロックが発生しないのでしょうか。


ステージ 5: データベース設定に問題が見つかりました

テスト プログラムを変更し、シミュレートされるユーザーの数を増やしましたが、残念ながら問題は依然として再現されませんでした。この時点で、開発環境のデータベース設定が本番環境のデータベース設定と異なることに気づきました。 2 つのデータベースの設定を比較したところ、多くのパラメーターが異なることがわかりました。ただし、ここではロックに関連する設定、つまり LOCK キーワードを含む設定のみに焦点を当てました。


ステージ 6: テスト環境データベースと運用環境データベースの設定の一貫性を保つ


運用環境と一貫性を保つために、すべてのロック関連の設定を変更しました。しかし、それでもデッドロックは再現されません。最後に、ある人が「cur_commit」設定が異なることを発見しました。そこでドキュメントを調べて、cur_commit の特徴を発見しました。 cur_commit = false の場合、次の状況によりデッドロックが発生します:
スレッド 1 がデータ A を挿入し、次にスレッド 2 がデータ B を挿入します。
スレッド 2 がトランザクションを送信する前に、スレッド 1 がデータ A をクエリするため、デッドロックが発生します。
開発環境では cur_commit = true なので、この現象をシミュレートすることはできませんでした。
そこで、cur_commit を false に変更しました。


フェーズ 7: テスト プログラムを使用してシミュレートする


上記 2 つのスレッドの動作をシミュレートするためにテスト プログラムを変更し、デッドロックを正常に再現しました。エラー ログ情報も実稼働環境と一致します。

ステージ 8: 画面操作を使用して

をシミュレートします
次に、プログラムを変更し、画面操作を使用してデッドロックを再現することに成功しました。
解決策:
解決策は非常に簡単です。つまり、デッドロックが発生しないようにクエリ ステートメントに条件をインデックスとして追加します。
このテーブルのデータ量は大きくないため、パフォーマンスへの影響はほとんどありません。



関連する推奨事項:

db2 の Python モジュール ibm_db メソッドのオフライン インストールの詳細な説明

DB2 データベースへの Python 接続

PHP を使用して DB2 Express C を操作する 5 つの方法 (1)_PHP チュートリアル

以上がDB2 デッドロック解決プロセスの完全な記録の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Win11システムに中国語言語パックをインストールできない問題の解決策 Win11システムに中国語言語パックをインストールできない問題の解決策 Mar 09, 2024 am 09:48 AM

Win11 システムに中国語言語パックをインストールできない問題の解決策 Windows 11 システムの発売に伴い、多くのユーザーは新しい機能やインターフェイスを体験するためにオペレーティング システムをアップグレードし始めました。ただし、一部のユーザーは、アップグレード後に中国語の言語パックをインストールできず、エクスペリエンスに問題が発生したことに気づきました。この記事では、Win11 システムに中国語言語パックをインストールできない理由について説明し、ユーザーがこの問題を解決するのに役立ついくつかの解決策を提供します。原因分析 まず、Win11 システムの機能不全を分析しましょう。

Black Shark携帯電話の電源が入らない問題を解決する方法を教える5つのヒント! Black Shark携帯電話の電源が入らない問題を解決する方法を教える5つのヒント! Mar 24, 2024 pm 12:27 PM

スマートフォン技術が発展し続けるにつれて、携帯電話は私たちの日常生活においてますます重要な役割を果たしています。 Black Shark フォンは、ゲーム パフォーマンスに重点を置いたフラッグシップ フォンとして、プレイヤーから高い支持を得ています。ただし、場合によっては、Black Shark 携帯電話の電源が入らないという状況にも直面するため、この問題を解決するために何らかの措置を講じる必要があります。次に、Black Shark 携帯電話の電源が入らない問題を解決する方法を説明する 5 つのヒントを共有しましょう: ステップ 1: バッテリー残量を確認する まず、Black Shark 携帯電話に十分な電力があることを確認します。携帯電話のバッテリーが消耗している可能性があります

小紅書で公開するときに写真が自動的に保存される問題を解決するにはどうすればよいですか?投稿時に自動保存された画像はどこにありますか? 小紅書で公開するときに写真が自動的に保存される問題を解決するにはどうすればよいですか?投稿時に自動保存された画像はどこにありますか? Mar 22, 2024 am 08:06 AM

ソーシャルメディアの継続的な発展に伴い、Xiaohongshu はますます多くの若者が自分たちの生活を共有し、美しいものを発見するためのプラットフォームとなっています。多くのユーザーは、画像を投稿する際の自動保存の問題に悩まされています。では、この問題をどうやって解決すればよいでしょうか? 1.小紅書で公開するときに写真が自動的に保存される問題を解決するにはどうすればよいですか? 1. キャッシュをクリアする まず、Xiaohongshu のキャッシュ データをクリアしてみます。手順は次のとおりです: (1) 小紅書を開いて右下隅の「マイ」ボタンをクリックします。 (2) 個人センター ページで「設定」を見つけてクリックします。 (3) 下にスクロールして「」を見つけます。 「キャッシュをクリア」オプションを選択し、「OK」をクリックします。キャッシュをクリアした後、Xiaohongshu を再起動し、写真を投稿して、自動保存の問題が解決されるかどうかを確認します。 2. 小紅書バージョンを更新して、小紅書が正しく動作することを確認します。

このデバイスにドライバーをロードできません。解決するにはどうすればよいですか? (個人的にテスト済みで有効です) このデバイスにドライバーをロードできません。解決するにはどうすればよいですか? (個人的にテスト済みで有効です) Mar 14, 2024 pm 09:00 PM

コンピューターがドライバーを読み込めない場合、デバイスが正しく動作しないか、コンピューターと正しく対話できない可能性があることは誰もが知っています。では、このデバイスにドライバーをロードできないことを示すプロンプト ボックスがコンピューターに表示された場合、問題を解決するにはどうすればよいでしょうか?以下のエディタでは、問題を簡単に解決する 2 つの方法を説明します。このデバイスにドライバーをロードできません 解決策 1. スタート メニューで「カーネル分離」を検索します。 2. メモリの整合性をオフにします。上記のメッセージには、「メモリの整合性がオフになっています。デバイスは脆弱である可能性があります。」というメッセージが表示されます。戻るボタンをクリックして無視してください。使用には影響しません。 3. マシンを再起動すると、問題が解決することがあります。

Pinduoduo で購入したものの記録はどこで確認できますか? 購入した製品の記録を表示するにはどうすればよいですか? Pinduoduo で購入したものの記録はどこで確認できますか? 購入した製品の記録を表示するにはどうすればよいですか? Mar 12, 2024 pm 07:20 PM

Pinduoduo ソフトウェアは多くの優れた製品を提供し、いつでもどこでも購入でき、各製品の品質は厳しく管理され、すべての製品は正規品であり、多くの優遇ショッピング割引があり、誰もがオンラインで買い物をすることができます。携帯電話番号を入力してオンラインにログインし、オンラインで複数の配送先住所や連絡先情報を追加し、最新の物流動向をいつでも確認できます さまざまなカテゴリの商品セクションが開き、検索して上下にスワイプして購入および注文することができます家から出ることなく利便性を体験することができます.オンライン ショッピング サービスでは、購入した商品を含むすべての購入記録を確認することもでき、数十のショッピング赤い封筒とクーポンを無料で受け取ることもできます.今回、編集者は Pinduoduo ユーザーに詳細なオンライン サービスを提供しました購入した製品の記録を表示する方法。 1. 携帯電話を開き、Pinduoduo アイコンをクリックします。

Linuxで中国語の文字化けを解決する方法 Linuxで中国語の文字化けを解決する方法 Feb 21, 2024 am 10:48 AM

Linux の中国語の文字化け問題は、中国語の文字セットとエンコーディングを使用する場合によく見られる問題です。文字化けは、ファイルのエンコード設定が正しくない、システム ロケールがインストールまたは設定されていない、端末の表示設定エラーなどが原因で発生する可能性があります。この記事では、いくつかの一般的な回避策を紹介し、具体的なコード例を示します。 1. ファイルのエンコード設定を確認します。ファイルのエンコードを表示するには file コマンドを使用します。ターミナルで file コマンドを使用して、ファイルのエンコードを表示します: file-ifilename。出力に「charset」がある場合

デフォルトゲートウェイが自動的に消える問題の解決方法 デフォルトゲートウェイが自動的に消える問題の解決方法 Feb 24, 2024 pm 04:18 PM

デフォルトゲートウェイが自動的に消えてしまう問題の解決方法 現代社会において、インターネットは人々の生活に欠かせないものとなっています。仕事でも娯楽でも、さまざまなタスクを完了するには安定したネットワーク接続が必要です。デフォルト ゲートウェイは、ローカル ネットワークを外部インターネットに接続する重要な要素の 1 つです。しかし、場合によってはデフォルトゲートウェイが自動的に消えてしまい、インターネットにアクセスできなくなるという問題が発生することがあります。では、デフォルトゲートウェイがなくなってしまった場合、どうやってこの問題を解決すればいいのでしょうか?まず、デフォルト ゲートウェイの概念を明確にする必要があります。デフォルトゲートウェイはネットワークルートです

PyCharmが開けない問題を解決する方法を共有します PyCharmが開けない問題を解決する方法を共有します Feb 22, 2024 am 09:03 AM

タイトル: PyCharmが開けない問題の解決方法 PyCharmは強力なPython統合開発環境ですが、時々PyCharmが開けない問題に遭遇することがあります。この記事では、一般的な回避策をいくつか紹介し、具体的なコード例を示します。この問題に遭遇した方のお役に立てれば幸いです。方法 1: キャッシュをクリアする PyCharm のキャッシュ ファイルにより、プログラムが正常に開けなくなることがあります。この問題を解決するには、キャッシュをクリアしてみてください。道具

See all articles