前提・実現したいこと
MySQLの断片化を解消して、最適化したいと考えています。
data_freeの件数が0になれば断片化を解消できると思っていますが、
なにをやってもdata_freeが0になりません。エラーも発生しません。
やり方が間違っているのでしょうか?
それとも、そもそもの考え方が間違っているのでしょうか?
発生している問題
ALTERやOPTIMIZEのSQLを実行しても、data_freeが0になりません。
コマンドのmysqlcheckも同じです。
Dumpしてデータベースを再構築しても、他の実行環境も同じです。
試したこと
SQL
ALTER TABLE test5.Categories ENGINE INNODB;
OPTIMIZE TABLE test5.Categories;
コマンド
mysqlcheck -o test5 -u root -p
その他
- データベースの再構築
- 異なる実行環境(以下の補足にある開発環境とサーバ環境ともに同じでした。)
補足情報
開発環境
- macOS Big Sur 11.2.1
- MySQL:5.7.32
サーバ環境
- さくらインターネット
- FreeBSD 11.2
- MySQL 5.7
実行した結果(例
以下に、OPTIMIZEを使った場合の状況を記載しました。
断片化を確認
mysql> SELECT table_schema, table_name, data_free, table_rows FROM information_schema.tables WHERE table_schema = 'test5'; +--------------+------------------------+-----------+------------+ | table_schema | table_name | data_free | table_rows | +--------------+------------------------+-----------+------------+ | test5 | Addresses | 0 | 1896 | | test5 | Categories | 2097152 | 20923 |
OPTIMIZEを実行
mysql> OPTIMIZE TABLE test5.Categories; +------------------+----------+----------+-------------------------------------------------------------------+ | Table | Op | Msg_type | Msg_text | +------------------+----------+----------+-------------------------------------------------------------------+ | test5.categories | optimize | note | Table does not support optimize, doing recreate + analyze instead | | test5.categories | optimize | status | OK | +------------------+----------+----------+-------------------------------------------------------------------+ 2 rows in set (0.10 sec)
断片化が解消されたか確認
mysql> SELECT table_schema, table_name, data_free, table_rows FROM information_schema.tables WHERE table_schema = 'test5'; +--------------+------------------------+-----------+------------+ | table_schema | table_name | data_free | table_rows | +--------------+------------------------+-----------+------------+ | test5 | Addresses | 0 | 1896 | | test5 | Categories | 2097152 | 20923 |
data_freeの件数が0にならず、変化も見られません。
以上。
ご多忙だと思いますが、助言をいただけると非常に助かります。
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/25 07:05
2021/02/25 07:12
2021/02/25 07:19 編集
2021/02/26 00:37
2021/02/26 01:08
2021/02/26 01:10 編集
2021/02/26 01:26
2021/02/26 06:13
2021/02/26 07:58 編集
2021/02/26 08:42
2021/02/26 08:52 編集
2021/02/26 09:04
2021/02/26 09:17
2021/02/26 09:35