#author("2022-05-24T02:26:00+00:00","default:admin","admin")
#author("2022-05-24T05:15:15+00:00","default:admin","admin")
-MySQL関連のWikiへのリンク
--[[MySQL:http://wiki.gashimax.com/index.php?MySQL]]
--MySQL 5.1
--MySQL 5.4
--MySQL/InnoDB
--MySQL/エラー
--MySQL/クラスタリング
--MySQL/サーバ移動
--MySQL/チューニング
--MySQL/バージョン
--MySQL/バックアップ
--MySQL/プロファイリング
--MySQL/ベンチマーク
--MySQL/レプリケーション
--MySQL/ロック
--MySQL/制限
----

-[[InnoDBで行ロック/テーブルロックになる条件:http://blog.livedoor.jp/sasata299/archives/51345903.html]]

-[[MySQLのロックの挙動:http://www.buena-idea.net/~hironobu/mysql/m-2-10.html]]
-[[LOCK TABLES と UNLOCK TABLES 構文:http://dev.mysql.com/doc/refman/5.1/ja/lock-tables.html]]

-現在ロックされているSQLがあるかどうか見るには [[show processlist;:http://dev.mysql.com/doc/refman/5.1/ja/show-processlist.html]] を実行する。

-ロックではないが、drop database 中は他のDBの更新処理も closing tables 処理(スレッドが変更されたテーブル データをディスクにフラッシュしている、そして使用されたテーブルを閉じている)が激遅になって処理が止まるのに注意!

*ロック状態の確認 [#c0ed34a6]
-[[MySQL 5.7と8.0でロック状態を確認する(sys.innodb_lock_waitsビュー):https://qiita.com/hmatsu47/items/607d176e885f098262e8]]
-[[SHOW PROCESSLISTするときに気を付けること:https://koreshiki-nanno.hatenablog.com/entry/2020/09/21/180330]]

 SELECT * FROM sys.innodb_lock_waits;

*調査 [#tae6ea9f]
-まずクエリログをファイルに出力するようにする
-show processlist で確認
-ロックがかかっているクエリを確認
 SELECT * FROM sys.innodb_lock_waits;
-sql_kill_blocking_query で対象になっている番号のクエリを確認
-show processlist では NULL となっていても、クエリログでは確認できる

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS