skillup

技術ブログ

Database

transactionが切れた場合のロックの復旧方法

投稿日:

transactionをスタートしたまま、commitせずにプログラムを途中で止めた場合の処理について。

不用意にプログラムを止めないようにしましょう。

ロックのメカニズム

ロック待ちでハマる前に知りたかったMySQL InnoDBの行ロックとテーブルロックの挙動

復旧しないと特定行の更新ができない(場合によってはテーブル全体のロックができない)状態になります。

trasactionロックの確認と特定

まずは下記コマンドでロックが本当に発生しているかどうかを確認しましょう。

そのあとスレッド発見→killをすることになります。(リンク参照)

ちなみにMySQLにログインしていないときに以下のコマンドでMySQLの結果を出力できます。(出力結果が長い時は結構使えそう)

\Gつけないと改行されません。

参考リンク
transactionの途中でトランザクションが切れてしまった時にそのトランザクションを殺す方法

MySQLでロックを特定し、強制終了する

-Database
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

アンチパターン 連鎖倒産+エラー監視+データのバックアップ

本日は主にインフラの設計的なことに関して。 Contents1 連鎖倒産1.1 デメリット1.2 対策2 エラー監視2.1 デメリット2.2 対策3 データのバックアップ体制3.1 デメリット3.2 …

no image

CASE式のすすめ

SQL実践入門を7割がたぐらい終えたところで同著者の方の「達人に学ぶSQL徹底指南書」を学習しようと思っています。 この方の著書は気づいたら結構読んでましたね。 Contents1 CASE式での注意 …

no image

JPAまとめ

JPAわけわかんねーと思い、触りはじめてから3か月ぐらいたちます。 いまだに細かい部分はよくわかっていないことは多いのですが、全体像というか何となくどういうものかはわかり始めてきたいのでまとめたいと思 …

no image

cake sql系+リレーション+ヘルパー

先月末に引き続いてcakeネタをもりっといきます。 といっても自分用の小ネタリンク集です。 Contents1 sql系の小ネタ1.1 findとread1.2 find(‘count&# …

no image

Cakeでのリレーションについて

いまさらながらCakeのリレーションについての復習。 基本から。 Contents1 基本的なリレーション1.1 1対N1.2 N対11.3 動的な紐づけ 基本的なリレーション 下記のようなテーブル構 …

アーカイブ