skillup

技術ブログ

Database

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

投稿日:

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

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

ロックのメカニズム

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

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

trasactionロックの確認と特定

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

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

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

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

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

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

-Database
-

執筆者:


comment

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

関連記事

no image

Webの高速化に関して

Webの高速化に関してメモ。 高速化って言っても幅広いんですけどね。自分が行なっている対策に関して。 一応LAMP環境を前提にしてます。 Contents1 一番大事なのは測定2 DB対策3 フロント …

no image

SQLで数列を扱う

今回はSQLで数列を扱ってみましょう。 例えば下記のような0から9までの数字が書かれている数列があったとして、 これにより連番を作成してみましょう。 digit ——- 0 1 …

no image

オブジェクト指向 データベース層

本日も引き続き「現場で役立つシステム設計の原則」を読み進めてます。 本日は主にデータベース層の考え方について。 Contents1 データべース層1.1 要点1.1.1 典型的なダメテーブル設計1.1 …

no image

HAVING句について NULL時の動き

HAVING句のNULLがあった時の挙動にたいしてメモリます。 COUNTの処理 対象上の列数を数えるのにCOUNTを使うと思いますが、COUNT(*)とCOUNT(列名)では動きが若干違っており、前 …

no image

PostgreSQLについて

本日はポスグレ(PostgreSQL)について。 自分はほとんどMySQLだったので、主にMySQLとの比較について書いていきます。 Contents1 アーキテクチャの違い1.1 MySQL1.2 …

アーカイブ