mysqltuner
による推奨の後、mysqlcheck --optimize --all-databases
を正常に実行しました(すべてのテーブルで「注:テーブルは最適化をサポートしていないため、代わりに再作成+分析を実行しています」および「ステータス:OK」と報告されています)。テーブルはまだ断片化しています。私は実行しました このクエリ :
SELECT engine,
table_name,
ROUND(data_length/1024/1024) AS data_length,
ROUND(index_length/1024/1024) AS index_length,
ROUND(data_free/1024/1024) AS data_free
FROM information_schema.tables;
そして、私のテーブルの約の半分がまだ断片化されていることがわかりました。それらのいくつかは100%よりも断片化されています(つまり、data_free> data_length + index_length)。 データベース全体を再作成せずに最適化を確実にするにはどうすればよいですか?
ibdata1
は82 MB(DB全体は> 100 GB)で、innodb_file_per_table = on
が設定されています。また、1つのテーブルで ALTER TABLE schema_name.table_name ENGINE=InnoDB;
を試して、mysqlcheck
に問題があるかどうかを確認しましたが、ファイルサイズに大きな変化はありませんでした。
MariaDB 5.5を実行しています。
テーブルを再作成するか、「optimize table」コマンドを使用してテーブルを再構築できます。念のためにバックアップを作成することを強くお勧めします。
https://dev.mysql.com/doc/refman/5.7/en/optimizing-innodb-storage-layout.htmlhttps://mariadb.com/kb/en/ mariadb/optimize-table /