データトランザクションのデッドロック

このことは覚えておく理由は、InnoDBの行ロックとロック解除が主キー索引のためのものです。インデックステーブルロックによると、しかし、クエリ場合は、更新Shiqueは、主キーを更新しません。それはない、彼らはデッドロックエラーを報告した条件として、主キーによってインデックスクエリ、自動ロックテーブル、更新Shiqueによってクエリ

解決策:プライマリキーの更新は、同じクエリの条件を使用していない変更の条件は、条件としてクエリの後に主キーを介して取得する必要があります。

エラーの例:


ユーザーがSELECT * FROM WHERE名= "张三"。

UPADTEユーザーSETセックス= "男" 名前= "张三"。


別の顧客にもこの文を訪問し、女性の性転換または未知しようとしたとき、1213年に報告ロックを取得しようとすると、デッドロックが見つかりました。トライ残り

正しい例:


"张三" ユーザー、ID名= SELECT * FROM。

UPADTEユーザーSETセックス=「男性」WHERE ID = ID番号でクエリをチェックしてください。


それは主キーの更新があるので、別のクライアントのインスタントアクセスがあります。この時点で、あなたも、いつものように渡すことができます

 

INNODB STATUS ENGINE SHOW#ビュー最後のデッドロック

------------------------ 
LATESTデッドロックが検出されまし
----------------------- -

LATEST下にDETECTED DEADLOCK文は間違っています

公開された20元の記事 ウォンの賞賛8 ビュー50000 +

おすすめ

転載: blog.csdn.net/a26637896/article/details/84101657