MySQL 5.5 サーバーで発生している問題を理解しようとしています。
このサーバーは多数のデータベースをホストします。毎日特定の時間に、プロセスがこのデータベース内の 2 つのテーブルに一連の挿入を実行します。このプロセスは、挿入される行の量に応じて 5 ~ 15 分かかります。
このプロセスは完全に実行されます。しかし、これには予想外の副作用があります。他のすべての挿入と更新は、挿入される 2 つに関係のないテーブルで実行され、プロセスが停止するまでただ座って待機します。このデータベースの外部での読み取りと書き込みは問題なく機能し、SELECT ステートメントも問題ありません。
では、単一のテーブルがサーバー全体ではなくデータベースの残りの部分をブロックする (負荷が原因で) 可能性があるのはなぜでしょうか?
背景のビット:-
挿入されるテーブルは、1,000 万から 2,000 万行の MyISAM です。
MySQL は Percona V5.5 であり、Debian で実行されている 1 つのスレーブにサービスを提供しています。
レコードを挿入するプロセスによって、明示的なロックが呼び出されることはありません。
どの Insert ステートメントも、他のテーブルからデータを選択しません。これらは INSERT IGNORE ステートメントでもあります。
追加情報:
これが発生している間、PROCESS LIST に LOCK テーブル エントリはなく、この問題の原因となっているレコードを挿入するプロセッサはテーブル ロックを発行しません。
テーブル ロックの通常の原因については既に調査しており、それらを除外したと思います。この動作は、MySQL の動作方法に関係があるか、大きなデータベース ファイルを持っていることの癖であるか、OS/ファイル システムに関係している可能性さえあります。