最近、MySQL サーバーを 5.1 から 5.6 (CentOS 6.x で実行) にアップグレードしました。アップグレード以来、特定のテーブル タスクを実行しようとすると、クエリに非常に長い時間がかかります。テストの実行に 1 秒かかるはずが、実行に 1 ~ 2 分かかるため、開発サイクルの反復に非常に支障をきたし、生産性が著しく低下しています。
非常に長い時間がかかっているクエリ:
- ドロップして作成
- INSERTSの後にCREATE
- 切り捨て
ローカル Mac に同じバージョンの MySQL (5.6.15) をインストールしています。現在、6 つのテーブルを操作しているため、これらのテーブルを頻繁に切り捨てたいと考えています。ローカル Mac でテーブルを切り捨てると、クエリに 21 ミリ秒かかります (まったく妥当な値です)。同じテーブルを CentOS サーバーで切り捨てると、8.5 秒かかります。テーブルはすべて InnoDB です。
ローカル Mac と CentOS サーバー上の同じデータベース内の他のテーブルを試してみましたが、他のテーブルでは極端な遅さが続きます。そこで、まったく別のデータベースを試してみましたが、やはり極端な遅さが続きます (ローカル Mac でデータベースの 1 つを復元するには 25 秒かかりますが、CentOS サーバーでは 4 分 14 秒かかります)。
MySQL のバージョンは同じなので、設定の違いかもしれないと考えました。 CentOS とローカル Mac で「show variables;」クエリをエクスポートしましたが、違いは (パスやログ ファイル名など以外) 次の 2 つだけです。
innodb_use_native_aio OFF // local Mac
innodb_use_native_aio ON // CentOS
lower_case_file_system ON // local Mac
lower_case_file_system OFF // CentOS
lower_case_table_names 2 // local Mac
lower_case_table_names 0 // CentOS
have_symlink YES // local Mac
have_symlink DISABLED // CentOS