このトピックでは、ストレージ容量を使い果たす大量のデータファイルの問題、この問題の解決方法、および次の手順について説明します。
問題の説明
PolarDB for MySQLクラスターによって生成されたデータファイルを長期間保存すると、ストレージが使い果たされる可能性があります。 データスペースの使用状況は、PolarDBコンソールの [ストレージ分析] ページの [ストレージの傾向] セクションで確認できます。 次の図は、ルーティングアルゴリズムの違いを示しています。
解決策
冗長データを削除するには、次の手順を実行します。
データの損失を防ぐには、削除するテーブルのデータをバックアップします。
DROPまたはTRUNCATEステートメントを実行して、テーブルを削除し、ストレージを解放します。 DELETE文を使用してストレージを解放することはできません。
テーブルに対してOPTIMIZEステートメントを実行すると、テーブルはロックされます。 オフピーク時にOPTIMIZEステートメントを実行します。
データファイルが削除された後、クラスターのストレージ容量を解放するには期間が必要です。
次の手順を実行してデータファイルを削除した後、さらにストレージを解放する必要がある場合は、他の種類のファイルを削除して、ストレージの使用量を減らすことができます。 詳細については、「ログファイルを削除してストレージ容量を解放する方法」をご参照ください。
[SQLコンソール] ページで、次のコマンドを実行してデータベースのファイルサイズを表示し、履歴データまたは不要なデータを削除できるかどうかを確認します。
SELECT file_name, concat(TOTAL_EXTENTS,'M') as 'FIle_size 'FROM INFORMATION_SCHEMA.FILES order by TOTAL_EXTENTS DESC
DROPまたはTRUNCATEステートメントを実行して、データを削除します。 ステートメント内のデータベース名とテーブル名のパラメーターを、実際のデータベース名とテーブル名に置き換えます。
DROP TABLE <データベース名> 。<テーブル名> TRUNCATE TABLE <データベース名> 。<テーブル名>
次に何をすべきか
クラスターのストレージをスケールアップします。 PolarDB for MySQLは、ストレージリソースをコンピューティングリソースから分離するアーキテクチャを使用します。 クラスターのストレージ容量を手動でスケールアップできます。 詳細については、「手動でストレージ容量のスケールアップ」をご参照ください。
.テーブルに対してDELETEステートメントを頻繁に実行すると、テーブルスペースのフラグメントが生成されます。 テーブルスペースを再利用するには、オフピーク時に
OPTIMIZE TABLE <database name>.<table name>
ステートメントを実行することを推奨します。 詳細については、「OPTIMIZE TABLEステートメントを実行してテーブルスペースを再利用する」をご参照ください。