AWS RDSにMySQL 8 DBがあり、数か月前にMySQL 5.7から8にアップグレードした後、空きディスク領域が非常に速い速度で消費されていることに気付きました。少なくとも以前の速度の2倍です。
1つの特定のテーブルは、INFORMATION_SCHEMA.TABLESに対してクエリを実行すると約500GBのdata_length + index_lengthを示しますが、その.ibdファイルは、INFORMATION_SCHEMA.FILESまたはINFORMATION_SCHEMA.INNODB_TABLESPACESをクエリするとディスク上の1TB以上に割り当てられます(innodb_per_file_table = 1)。 data_freeとdata +インデックスの長さの比較から判断すると、断片化はほとんどありません。
ディスク使用率の増加の原因を見つけるにはどうすればよいですか?より多くのディスクを使用するMySQL 8に固有の何かはありますか?私たちのアプリケーションは変更されていませんが、かなり大きなJSON列があります-おそらく、MySQL 8の何かがディスク上のJSONを効率の悪い方法で処理していますか?
これは、使用しているmysqlのバージョンのバグが原因である可能性が高いです。問題は、mysqldを再起動するまで、mysqlが一時ファイルのファイルハンドルを解放しないことです。これは確認済みのバグであり、他のユーザーの経験を読むことができます ここ 。
8.0.15を超えてアップグレードすることで問題は解決するはずです。