すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:OPTIMIZE TABLEステートメントを使用して、ApsaraDB RDS for MySQLインスタンスのテーブルスペースをリリースするにはどうすればよいですか。

最終更新日:Jan 10, 2024

DELETE文を実行してデータを削除すると、delete文はデータレコードまたはデータページの場所のみを再利用可能としてマークします。 ディスクファイルのサイズは変更されず、テーブルスペースは直接再利用されません。 この場合、OPTIMIZE TABLEステートメントを実行して、テーブルスペースを解放できます。

前提条件

  • RDSインスタンスがInnoDBまたはMyISAMストレージエンジンを実行している場合にのみ、OPTIMIZE TABLEステートメントを実行できます。
  • RDSインスタンスの使用可能なストレージは、リリースするテーブルスペースのサイズ以上である必要があります。 使用可能なストレージが不十分な場合は、RDSインスタンスのストレージ容量を拡張することを推奨します。 詳細については、「ApsaraDB RDS For MySQLインスタンスの仕様の変更」をご参照ください。
    説明 テーブルに対してOPTIMIZE TABLE文を実行すると、テーブルデータが新しい一時テーブルにコピーされます。 これにより、RDSインスタンスのストレージ使用量が増加します。

使用上の注意

  • DELETE文を実行して大量のテーブルデータを削除していない場合、OPTIMIZE table文ではテーブルが占有するストレージを削減できません。
    説明 RDSインスタンスの使用可能なストレージが不十分で、大量のテーブルデータを削除する操作を実行しない場合は、次のトピックに基づいてストレージ容量を拡張できます。
  • OPTIMIZE TABLEステートメントは、オンラインDDLを使用してMySQL 5.7またはMySQL 8.0を実行するRDSインスタンスで実行され、同時DML操作が許可されます。 大きなテーブルでOPTIMIZE TABLEステートメントを実行すると、I/Oバーストとバッファバーストが発生します。 その結果、テーブルがロックされ、リソースのプリエンプションが発生する可能性がある。 ピーク時にステートメントを実行すると、RDSインスタンスが使用できなくなり、モニタリングブレークポイントが存在する可能性があります。 このステートメントは、オフピーク時に実行することを推奨します。

CLIを使用してテーブルスペースを解放する

  1. RDSインスタンスに接続します。 詳細については、「データベースクライアントまたはCLIを使用したApsaraDB RDS For MySQLインスタンスへの接続」をご参照ください。
  2. 次のSQL文を実行して、テーブルスペースを解放します。
    optimize table [$Database1].[Table1],[$Database2].[Table2]
    説明
    • [$Database1] と [$Database2] はデータベース名です。 [Table1] と [Table2] はテーブル名です。
    • InnoDBストレージエンジンを実行するRDSインスタンスでOPTIMIZE TABLEステートメントを実行すると、次の情報が返されます。 情報は無視できます。 出力にOKが含まれている場合、実行は成功です。 詳細については、「OPTIMIZE TABLEステートメント」をご参照ください。
      テーブルは最適化をサポートしていません、再作成 + 代わりに分析します

DMSを使用してテーブルスペースを解放する

  1. RDSインスタンスにログインします。 詳細については、「DMSを使用したApsaraDB RDS For MySQLインスタンスへのログイン」をご参照ください。
  2. 左側のナビゲーションウィンドウで、RDSインスタンスのIDをクリックし、必要なデータベースをダブルクリックして、テーブル名を右クリックし、[バッチ操作テーブル] を選択します。
  3. テーブルスペースをリリースするテーブルの名前を選択し、[テーブルメンテナンス] > [テーブルの最適化] を選択します。 优化表
  4. 表示されるダイアログボックスで、情報を確認して [OK] をクリックします。