データベースデータが削除または更新されると、ディスク上のデータストレージが断片化され、テーブルスペースの断片が生成されます。 これは、ディスク容量の浪費およびデータベース性能の低下につながる。 Database Autonomy Service (DAS) は、テーブルのテーブルスペースサイズや断片化率などのメトリックが指定されたしきい値に達すると、MySQLテーブル内のテーブルスペース断片を自動的にリサイクルする機能を提供します。 ビジネスへの影響を最小限に抑えるために、データベースインスタンスのワークロードを調査した後、データベースインスタンスのメンテナンスウィンドウでフラグメントリサイクルが実行されます。
前提条件
管理するデータベースインスタンスに対して、DAS Cost-efficient EditionまたはEnterprise Editionが有効化されます。 詳細については、「DAS Cost-efficient EditionおよびDAS Enterprise Editionの有効化と管理」をご参照ください。
管理するデータベースインスタンスは、次のいずれかのタイプです。
ApsaraDB RDS for MySQL High-availability Edition、Enterprise Edition、またはCluster Edition
ApsaraDB MyBase for MySQL高可用性エディション
データベースインスタンスは少なくとも14日間利用可能です。
データベースインスタンスには、少なくとも4つのCPUコアがあります。
背景情報
Tablespaceフラグメントは、次の理由で生成されます。
レコードは削除され、元のテーブルスペースは再利用できません。
レコードが更新され、元のテーブルスペースは再利用できません。 ほとんどの場合、レコードは可変長フィールドに対して更新されます。
挿入されたレコードは、ページ分割を引き起こし、ページの充填率を低下させる。
制限事項
テーブルスペースのフラグメントの自動リサイクルは、ストレージエンジンがInnoDBであるテーブルに対してのみサポートされます。
説明管理するテーブルのストレージエンジンを表示するには、
SHOW table STATUS
またはSHOW TABLE STATUS LIKE 'table_name';
ステートメントを実行します。 出力のEngineの値は、テーブルのストレージエンジンです。表領域フラグメントの自動リサイクルは、表領域サイズが5 GB〜100 GBの範囲の表でのみサポートされます。
説明表領域サイズが5 GB未満または100 GBを超える場合、自動表領域フラグメントのリサイクルはトリガーされません。
システムがテーブルスペースフラグメントをリサイクルする前にチェックするアイテム
DASは、プライマリインスタンスに対してOPTIMIZE TABLEまたはALTER TABLEステートメントを実行して、テーブルスペースのフラグメントをリサイクルします。 データベースのパフォーマンスとテーブルスペースへの悪影響を軽減するために、DASはデータベースインスタンスとデータベースインスタンス内のテーブルを自動的にチェックしてから、テーブルスペースのフラグメントの自動リサイクルを実行します。 DASは、チェックに合格した後にのみ、自動表領域フラグメントのリサイクルを実行します。
次の要件の1つ以上が満たされない場合、テーブルに対して自動テーブルスペースフラグメントのリサイクルを実行できません。
データベースインスタンスの使用可能なストレージスペースは、リサイクルするテーブルスペースフラグメントを持つテーブルの物理スペースの少なくとも3倍である必要があります。
説明たとえば、物理スペースが30 GBのTable_1のテーブルスペースフラグメントをリサイクルする場合、データベースインスタンスの使用可能なストレージスペースは90 GB以上である必要があります。
テーブルにフルテキストインデックスは作成されません。
次の要件の1つ以上が満たされない場合、DASは1〜5分間待機してから、再度チェックを実行します。 メンテナンス期間全体でチェックが失敗した場合、DASはチェックに合格するまで、次のメンテナンス期間中にテーブルをチェックします。 チェックに合格すると、DASはテーブルスペースのフラグメントの自動リサイクルを実行します。
データベースインスタンスでバックアップタスクが実行されていません。
スキーマ変更タスクは実行されていません。
前日と先週の同じ日の同じ期間のCPU使用率は70% 未満であり、リサイクルタスクが開始される予定前のCPU使用率は80% 未満です。
説明たとえば、テーブルスペースのフラグメントのリサイクルは、物理スペースが90 GBのテーブルで2020 12月10日の03:00に開始される予定であり、操作が完了するまでに30分かかると予想されます。 この場合、次の要件が満たされていることを確認してください。
CPU使用率は2020年12月9日の03:00から03:30まで70% 未満です。
CPU使用率は2020年12月3日の03:00から03:30まで70% 未満です。
CPU使用率は2020年12月10日の03:00に80% 未満です。
SQL文の実行に3秒以上かかることはありません。
保留中のトランザクションは存在しません。 保留中のトランザクションは、ロックを保持するが15秒以内にコミットされないトランザクションです。
データベースインスタンスのアクティブなセッションの数が64未満です。
テーブルがチェックに合格しない場合、テーブルのテーブルスペースフラグメントの自動リサイクルはトリガーできません。 この場合、OPTIMIZE TABLEステートメントを手動で実行して、tablespaceフラグメントをリサイクルできます。 詳細については、「」をご参照ください。OPTIMIZE TABLEステートメントを使用して、ApsaraDB RDS for MySQLインスタンスのテーブルスペースをリリースするにはどうすればよいですか。
手順
DASコンソールにログインします。
左側のナビゲーションウィンドウで、インスタンスモニターをクリックします。
表示されるページで、管理するデータベースインスタンスを見つけ、インスタンスIDをクリックします。 インスタンス詳細ページが表示されます。
インスタンスの詳細ページで、自律型センター左側のナビゲーションウィンドウに表示されます。
自律型センタータブでAutonomy Service Settingsをクリックします。
パネルの
タブで、自律サービスを有効にします。最適化とスロットリング タブで、断片化したスペースの自動再利用 を選択し、次の表に示すパラメーターを設定します。
重要データベースインスタンス内のテーブルのストレージ使用率が指定されたしきい値に達すると、DASは、データベースインスタンスの指定されたメンテナンス期間中にテーブルスペースのフラグメントを自動的にリサイクルします。
パラメーター
説明
テーブルスペース
単一の物理テーブルのストレージ使用量のしきい値。 (単位:GB) 有効な値: 5 ~ 100 デフォルト値は 10 です。
このパラメーターを大きな値に設定すると、多数のフラグメントが蓄積されるまで、テーブルスペースのフラグメントの自動リサイクルがトリガーされない場合があります。 その結果、リサイクルプロセスに時間がかかる可能性があります。 ビジネス要件に基づいて適切な値を指定します。
説明データベースインスタンス内のすべてのテーブルのストレージ使用量が5 GB未満または100 GBを超える場合、DASはテーブルスペースフラグメントをリサイクルできません。
断片化率
物理テーブルのストレージ使用量の合計に対するテーブルスペースフラグメントのストレージ使用量の割合。 単位: % 。 有効な値: 10 ~ 99。 デフォルト値は 20 です。
このパラメーターを大きな値に設定すると、テーブルスペースのフラグメントのリサイクルの実行頻度が低くなります。 ビジネス要件に基づいて適切な値を指定します。
説明データベースインスタンス内のすべてのテーブルの断片化率が10% 未満の場合、DASはテーブルスペースフラグメントをリサイクルできません。
説明たとえば、Tablespaceパラメーターの値が5 GBで、Fragmentation Percentageパラメーターの値が10% の場合、テーブルスペースの範囲が5 GB〜100 GBで、フラグメント化率が10% 以上のすべてのテーブルに対して、テーブルスペースのフラグメントのリサイクルがトリガーされます。
[OK] をクリックします。
オプション: Event Subscription Settings タブをクリックし、テーブルスペースフラグメントがリサイクルされたときに通知を送信するようにイベントサブスクリプションパラメーターを設定します。 詳細については、「イベントサブスクリプション」をご参照ください。
[アラート設定] セクションで、アラートテンプレートを設定し、アラート通知をサブスクライブします。 これにより、できるだけ早い機会に自動テーブルスペースフラグメントのリサイクルタスクのステータスを理解することができます。
システムはアラートテンプレートを推奨し、アラートテンプレートに必要な自律性イベントのアラートルールを追加します。 プロンプトに従ってアラートテンプレートを設定できます。
説明データベースインスタンスにアラートテンプレートを設定した場合は、プロンプトに従って、必要な自律性イベントのアラートルールをアラートテンプレートに追加する必要があります。
データベースインスタンスのアラートテンプレートとアラートルールを設定する方法の詳細については、「アラートテンプレートの設定」および「アラートルールの設定」をご参照ください。
[連絡先グループの選択] セクションで、アラート連絡先グループを選択します。
[連絡先の追加] をクリックしてアラート連絡先を追加します。
[連絡先グループの作成] をクリックして、アラート連絡先グループを作成します。
管理するアラート連絡先を見つけ、[操作] 列の [編集] または [削除] をクリックして、アラート連絡先に関する情報を変更または削除します。
詳細は、「アラート連絡先の管理」をご参照ください。
[設定の送信] をクリックします。 表示されるダイアログボックスで、設定を確認します。
関連ドキュメント
データベースインスタンスのストレージ容量が不足している場合は、次の操作を実行できます。
関連する API 操作
API 操作 | 説明 |
一度に複数のデータベースインスタンスの自動表領域フラグメントのリサイクル機能に関連するパラメーターを非同期的に構成します。 | |
特定のデータベースインスタンスの自動テーブルスペースフラグメントリサイクルルールを照会します。 | |
複数のデータベースインスタンスの自動表領域フラグメントのリサイクル機能を一度に無効にします。 |