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

Data Management:テーブルスペースフラグメントの再利用

最終更新日:Jun 23, 2026

MySQL データベースで INSERT、UPDATE、DELETE ステートメントが頻繁に実行されると、データがディスクに連続して保存されなくなり、テーブルスペースフラグメントが生成されます。テーブルスペースフラグメントは、データベースパフォーマンスを低下させます。OPTIMIZE TABLE ステートメントの実行など、一般的な操作でテーブルスペースフラグメントを再利用しようとすると、テーブルがロックされ、ビジネスに影響が及ぶ可能性があります。Data Management (DMS) のロックレス変更機能を使用すると、データベース変更中にテーブルがロックされることによるビジネスへの影響を防ぎながら、テーブルスペースフラグメントを自動的に再利用できます。これにより、データベースのパフォーマンスと効率が向上し、ストレージコストを削減できます。このトピックでは、DMS でロックレススキーマ変更チケットを送信して、テーブルスペースフラグメントを自動的に再利用する方法について説明します。

前提条件

  • 領域のデフラグを実行するデータベース内のテーブルを変更する権限が必要です。詳細については、「権限の表示」および「権限の管理」をご参照ください。

  • MySQL データベースインスタンスに対して、ロックレススキーマ変更機能が有効化されている必要があります。詳細については、「ロックレススキーマ変更の有効化」をご参照ください。

注意事項

大規模なテーブルからテーブルスペースフラグメントを再利用する場合、インスタンスで利用可能なストレージ容量が、対象テーブルのサイズの少なくとも 2〜3 倍あることを確認してください。また、操作中はインスタンスで利用可能なストレージ容量を注意深く監視してください。

重要
  • 大規模なテーブルのテーブルスペースフラグメントを再利用する際、データを一時的に保存するためのコピーが必要になる場合があり、これにより追加のストレージが消費されます。データベースインスタンスの残りのストレージ容量が不足している場合、DMS はテーブルスペースフラグメントの再利用に失敗したり、データベースインスタンスがロックされたりする可能性があります。

  • DMS は、テーブルをロックせずにスキーマを変更する DDL ステートメントを実行することで、テーブルスペースフラグメントを再利用します。ステートメント実行の成功率は 100% ではないことにご注意ください。

テーブルスペースフラグメントサイズの表示

DMS の SQL コンソールで次の SQL ステートメントを実行すると、テーブルスペースフラグメントのサイズを確認できます: SHOW TABLE STATUS LIKE 'table_name';。SQL コンソールの使用方法の詳細については、「SQL コンソール」をご参照ください。

クエリ結果の `Data_free` 列は、テーブル内のフラグメント化された領域の量をバイト単位で示します。

操作手順

  1. DMS 5.0 にログインします。

  2. 上部のナビゲーションバーで、[データベース開発] > [データ変更] > [ロックレス変更] を選択します。

    説明

    DMS コンソールをシンプルモードで使用している場合は、左上隅の 2022-10-21_15-25-22..png アイコンをクリックし、[すべての機能] > [データベース開発] > [データ変更] > [ロックレス変更] を選択します。

  3. ロックレススキーマ変更チケットを設定します。詳細については、「ロックレス変更チケットを使用したロックレススキーマ変更の実行」をご参照ください。

    インスタンスに対してロックレススキーマ変更機能を有効にすると、送信したロックレススキーマ変更チケットは自動的にテーブルスペースフラグメントを再利用します。ただし、より安定した再利用を行い、関連テーブルへの影響を最小限に抑えるために、チケットで次のいずれかの SQL ステートメントを使用してテーブルを明示的に再編成することを推奨します:

    • OPTIMIZE TABLE table_name;

    • ALTER TABLE table_name COMMENT 'The new comment for the table';

    • ALTER TABLE table_name ENGINE=InnoDB;

    • ALTER TABLE table_name MODIFY COLUMN field_name INT COMMENT 'The new comment for the field';

      説明

      これらの SQL ステートメントは領域を解放しますが、DMS でのロックフリー操作 (OPTIMIZE TABLE を含む) は、ネイティブの OPTIMIZE TABLE コマンドほど徹底的ではない可能性があります。