複数のワーカー アプリケーションによってアクセスされるテーブルがあります。このアプリケーションは、レコードのバッチを取得し、レコードの一部を計算し、計算結果を更新してこのテーブルに戻します。このテーブルは現在 MyISAM ベースですが、計算アルゴリズムにいくつかの変更を加えた結果、大幅な高速化が実現したため、MyISAM テーブルであるため、テーブルに多くのロックが発生することが予想されます。(テーブルには約650 ~ 700 000 のレコードがあります)。
すべてのレコードが処理されると、それに基づいてレポートが生成され、テーブルが切り捨てられます。テーブルが切り捨てられると、プロセスによってテーブルが再初期化され、サイクルが再び開始されます。
ロックを防ぐためにMyISAMテーブルをInnoDBに切り替えることを考えていましたが、INSERT INTO .. SELECT .. FROM
ステートメントでテーブルを初期化するプロセス(以前は3〜4分かかりました)は、停止することにしたときに35〜40分間実行されていました. どうしてこれなの?それをスピードアップする方法はありますか?