MySQL のデッドロックのトラブルシューティング
質問
MySQL テーブルで「試行中にデッドロックが見つかりました」 DBI を介した Perl の並列更新中に、ロックを取得するにはトランザクションを再起動してください」というエラーが発生します。エラー ソース クエリは、特定の行にロックを設定しようとします。エラーの原因はテーブル サイズと並列プロセスにあると考えられます。このようなデッドロックの原因は何ですか?また、どのように軽減できますか?
回答
InnoDB または同様の行レベルのトランザクション RDBMS システムでは、同時書き込みが原因でデッドロックが発生する可能性があります。取引。テーブル サイズ、書き込み量、長時間のトランザクションが増加すると、その可能性がさらに高まります。
デッドロックの軽減
デッドロックを効果的に処理するには、コードでデッドロックの可能性を予測する必要があります。デッドロックをチェックし、デッドロックが検出された場合は失敗したクエリの再実行を試みるエラー処理ロジックの採用を検討してください。
MySQL マニュアルの推奨事項を実装することでもメリットが得られる場合があります。
以上が並列更新中の MySQL のデッドロックをトラブルシューティングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。