MySQL のデッドロック

この文書では、MySQL のデッドロックについて説明し、サイトのダウン、データベースの読み込み停止、またはその他のAdobe Commerceの問題が発生した場合に、デッドロックを特定して解決できるようにします。

影響を受ける製品とバージョン

  • Adobe Commerce オンプレミス 2.2.x および 2.3.x
  • クラウドインフラストラクチャー 2.2.x および 2.3.x 上のAdobe Commerce

問題

MySQL のデッドロックは、2 つ以上のトランザクションが相互に保持してロックを要求する場合に発生します。 デッドロックが存在する場合、必ずしも問題を示しているわけではありませんが、多くの場合、発生した他の MySQL またはAdobe Commerceの問題の症状です。

多くの場合、アプリケーション、デプロイメントまたは MySQL のログには、 「デッドロック」 エラーまたはエラー 「ロックの取得中にデッドロックが見つかりました。トランザクションを再度開始してください。」

原因:

デッドロックには複数の原因がありますが、最も一般的な原因は、DML/DDL クエリを同時に実行しながら、何らかのインタラクション(web サイト/プロセス/cron ジョブ/その他のユーザー/MySQL メンテナンス/MySQL インポート)を実行することです。

例えば、MySQL データベースインポートが停止するのを避けるためには、まずサイトをメンテナンスモードにして、デッドロックや停止したデータベースインポートの原因となる可能性のある SQL リクエストをデータベースに受け取らないようにすることがベストプラクティスです。

解決策

  1. アプリケーション、デプロイメント、または MySQL ログでデッドロックエラーを確認します。

  2. コマンドを使用して、MySQL プロセスのリストでプロセスを実行しているかどうかを確認します。 mysql -e 'show full processlist';

  3. クラウドインフラストラクチャー上のAdobe Commerceで、MySQL スレーブが有効になっていることを確認します。 この記事を参照してください。 変数のデプロイ(MYSQL_USE_SLAVE_CONNECTION).

  4. 関連するエラーに応じて、ソリューション自体が表示される場合や、 サポートチケット.

関連資料

NOTE
この記事には、人種差別的、性差別的、または抑圧的と思われる業界標準のソフトウェア用語が依然として含まれており、読者が苦痛を感じたり、トラウマを抱いたり、歓迎されないと感じたりする場合があることを認識しています。 Adobeでは、これらの用語をアドビのコード、ドキュメントおよびユーザーエクスペリエンスから削除するよう取り組んでいます。
recommendation-more-help
8bd06ef0-b3d5-4137-b74e-d7b00485808a