データベース内のデータを削除または更新すると、ディスクに保存されているデータが不連続になることがあります。これにより、領域の断片が発生し、ディスク領域を浪費し、データベースのパフォーマンスを低下させます。Database Autonomy Service (DAS) は、テーブルスペースサイズや断片化率などの指定されたしきい値を満たす MySQL テーブルの自動断片再利用をサポートしています。再利用はインスタンスのメンテナンスウィンドウ中に実行されます。DAS はまた、インスタンスのワークロードをチェックして、サービスへの影響を最小限に抑えます。
前提条件
インスタンスに対して Alibaba Cloud Managed Services が有効化されていること。
インスタンスが次のいずれかのタイプであること:
RDS for MySQL High-availability Edition、RDS Enterprise Edition、または Cluster Edition。
MyBase for MySQL High-availability Edition。
インスタンスが 14 日以上実行されていること。
インスタンスに少なくとも 4 つの CPU コアがあること。
背景情報
テーブルスペースの断片は、通常、次の理由で作成されます:
レコードが削除され、元の領域が再利用できない。
レコードが更新され、元の領域が再利用できない。これは通常、可変長フィールドで発生します。
レコードの挿入によりページ分割が発生し、ページの充填率が低下する。
制限事項
自動断片再利用は、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 はデータベースのパフォーマンスと領域への影響を最小限に抑えるために、データベースに対して以下のチェックを自動的に実行します。断片化したスペースの自動再利用 操作は、すべてのチェックに合格した後にのみ開始されます。
次のいずれかのチェックに失敗した場合、対応するテーブルでの 断片化したスペースの自動再利用 操作は直ちに停止します。
インスタンスの利用可能な領域が、再利用対象のテーブルの物理空間の少なくとも 3 倍であること。
説明たとえば、30 GB の物理空間を占有する Table_1 の断片を再利用するには、データベースに少なくとも 90 GB の空き領域が必要です。
テーブルにフルテキストインデックス (FULLTEXT) がないこと。
チェックに失敗した場合、DAS は 1〜5 分待機してから再実行します。メンテナンスウィンドウ内にチェックが合格しない場合、DAS は次のメンテナンスウィンドウ中に再試行します。チェックに合格した後、DAS は 断片化したスペースの自動再利用 を実行します。
インスタンスでバックアップジョブが実行されていないこと。
スキーマ進化操作が進行中でないこと。
DAS はインスタンスの CPU 使用率をチェックし、断片化したスペースの自動再利用 に必要な時間を見積もります。前日および前週の同じ時間帯に CPU 使用率が 70% 未満であったこと、および操作直前に CPU 使用率が 80% 未満であることを確認します。
説明たとえば、テーブルが 90 GB の物理空間を占有し、断片の再利用に 30 分かかると予想され、12 月 10 日の 03:00 に開始するようにスケジュールされている場合、次の条件を満たす必要があります:
2020 年 12 月 9 日の 03:00 から 03:30 までの CPU 使用率が 70% 未満であること。
2020 年 12 月 3 日の 03:00 から 03:30 までの CPU 使用率が 70% 未満であること。
2020 年 12 月 10 日の 03:00 時点の CPU 使用率が 80% 未満であること。
実行に 3 秒以上かかる SQL 文がターゲットテーブルで実行されていないこと。
保留中のトランザクションが存在しないこと。保留中のトランザクションとは、ロックを保持しているが 15 秒以上コミットされていないトランザクションのことです。
インスタンスのアクティブなセッション数が 64 未満であること。
チェックに失敗した場合、断片化したスペースの自動再利用 機能は使用できません。OPTIMIZE TABLE コマンドを手動で実行して、テーブルスペースの断片を再利用できます。詳細については、「OPTIMIZE TABLE コマンドを使用して MySQL インスタンスのテーブルスペースを解放する」をご参照ください。
自動断片再利用を有効にする
DAS コンソールにログインします。
左側のナビゲーションウィンドウで、[オペレーションセンター] > [インスタンスモニタリング] をクリックします。
ターゲットインスタンスを見つけ、インスタンス ID をクリックして、インスタンス詳細ページに移動します。
左側のナビゲーションウィンドウで、自律型センター をクリックします。
自律型センター ページで、右側の Autonomy Service Settings をクリックします。
タブで、自律機能スイッチをオンにします。
最適化とスロットリング タブで、断片化したスペースの自動再利用 を選択し、次のパラメーターを設定します。
重要データベースインスタンスのストレージ使用量が指定されたしきい値を満たすと、DAS はインスタンスの [メンテナンスウィンドウ] 中に領域の断片を自動的に再利用します。
パラメーター
説明
テーブルスペース
自動断片再利用をトリガーする単一の物理テーブルの最小テーブルスペースサイズ。値は 5 GB から 100 GB の範囲である必要があります。デフォルト値は 10 GB です。
単一のテーブルスペースが大きすぎると、再利用に時間がかかる場合があります。必要に応じて値を選択してください。
説明データベースインスタンス内のすべてのテーブルのテーブルスペースが 5 GB 未満または 100 GB を超える場合、システムは領域の断片の再利用を実行しません。
断片化率
自動断片再利用をトリガーする単一の物理テーブルの断片化率。値は 10% から 99% の範囲である必要があります。デフォルト値は 20% です。
断片化率が高いと、領域の最適化の頻度が減少します。必要に応じて値を選択してください。
説明データベースインスタンス内のすべてのテーブルの断片化率が 10% 未満の場合、システムは領域の断片の再利用を実行しません。
説明たとえば、[テーブルスペース] を 5 GB に、[断片化率] を 10% に設定した場合、テーブルスペースサイズが 5 GB から 100 GB で、断片化率が 10% 以上のすべてのテーブルに対して自動断片再利用がトリガーされます。
[OK] をクリックします。
任意: Event Subscription Settings をクリックして、自動断片再利用のイベント通知を設定します。詳細については、「イベントサブスクリプション機能を有効にする」をご参照ください。
[アラートテンプレート] を設定して、データベースインスタンスの自動断片再利用ステータスに関するアラートをサブスクライブします。
システムはアラートテンプレートを推奨し、対応する自律イベントのアラートルールを追加します。プロンプトに従って設定を完了できます。
説明インスタンスにアラートテンプレートをすでに設定している場合は、プロンプトに従って、対応する自律イベントのアラートルールをテンプレートに追加します。
アラートテンプレートとアラートルールを自分で設定するには、「アラートテンプレートの設定」および「アラートルールの設定」をご参照ください。
[アラートグループ] を選択して通知を受信できます。
[連絡先の追加] をクリックしてアラート連絡先を作成します。
[連絡先グループの作成] をクリックしてアラートグループを作成します。
連絡先を見つけて [編集] をクリックして変更するか、[削除] をクリックして削除します。
詳細については、「アラート連絡先の管理」をご参照ください。
[設定の送信] をクリックし、ダイアログボックスでアラート設定を確認します。
参考
データベースインスタンスのストレージ領域が不足している場合は、次の操作を実行できます:
関連 API
API | 説明 |
指定されたデータベースインスタンスの自動断片再利用機能のパラメーターをバッチで非同期に設定します。 | |
指定されたデータベースインスタンスの自動断片再利用ルールを照会します。 | |
指定されたデータベースインスタンスの自動断片再利用機能をバッチで無効にします。 |