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

PolarDB:注意事項と制限事項

最終更新日:Mar 29, 2026

PolarDB-X 1.0 の DDL 実行エンジンは、DDL 操作のタスク管理を導入しています。これにより、DDL 文の動作が以前のバージョンと比較して変更されています。このトピックでは、DDL タスクの実行時に想定される動作と、遵守する必要があるハードリミットについて説明します。

注意事項

  • 完了した DDL タスクは、タスクキューから自動的に削除されます。DDL 文の実行が完了すると、タスクはなくなるため、タスクステータスは無視してください。

  • DDL タスクが完了したら、すぐに CHECK TABLE を実行して、対応する論理テーブルに一貫性があることを確認してください。

  • タスク管理文を使用して DDL タスクを再開、ロールバック、または削除した後は、CHECK TABLE を実行して論理テーブルの一貫性を確認してください。

  • DDL 文が失敗すると、エラーコードとエラーメッセージが返されます。SHOW DDL を実行して、保留中のタスクの REMARK フィールドで失敗の原因を確認してください。

    重要

    失敗した DDL タスクを再開、ロールバック、または削除する前に、根本原因を特定し、正しい回復操作を確認してください。失敗の原因を理解せずにタスク管理文を実行すると、その文自体が失敗する可能性があります。

  • DDL タスクが失敗して保留状態になると、セキュリティ上の理由から、影響を受けるテーブルはアクセス不可になります。SHOW TABLES などの文は結果を返さず、DML ステートメントは the table is unknowndoes not exist のようなエラーを返すことがあります。保留中の DDL タスクが再開またはロールバックされ、一貫性のある状態に復元された後にのみ、テーブルは再びアクセス可能になります。

  • CREATE TABLE 文で IF NOT EXISTS を使用したり、DROP TABLE 文で IF EXISTS を使用したりすると、実行中の特定のエラーは文の失敗を引き起こさず、代わりに警告として記録されます。このような文を実行した後は、出力に警告数 (例: 1 warning) が含まれているかどうかを確認してください。SHOW WARNINGS を実行して詳細を確認し、重要な情報を見逃さないようにしてください。

  • Data Management (DMS) などのクライアントでは、PURE_ASYNC_DDL_MODE を設定して DDL 文を非同期で実行します。これにより、クライアント側のタイムアウトによって長時間実行される DDL 操作が中断されるのを防ぎます。DDL 文の実行時間が見積もれず、クライアントに PolarDB-X 1.0 の接続タイムアウトが設定されている場合に使用します。文が送信された後、SHOW DDL を実行してタスクのステータスを確認してください。

制限事項

  • CREATE TABLERENAME TABLE 操作のみロールバックできます。

  • RECOVER DDLROLLBACK DDL は、同じ保留中の DDL タスクに対して組み合わせたり、繰り返したりすることはできません。たとえば、ROLLBACK DDL でタスクをロールバックした後、ロールバックが失敗した後に RECOVER DDL を試みると、論理テーブルの不整合が発生する可能性があります。シナリオ上、これらの操作を組み合わせる必要がある場合は、テクニカルサポートにご連絡ください。

  • REMOVE DDL は、データベースのセキュリティが確保されている場合にのみ実行してください。REMOVE DDL を不確かな状態のデータベースで実行すると、DDL タスクの中間状態が公開され、論理テーブルに不整合が生じる可能性があります。REMOVE DDL の誤用によりデータ整合性の問題が発生した場合は、テクニカルサポートにご連絡ください。

  • デフォルトでは、各物理データベースは最大 128 個のテーブルシャードをサポートします。この制限を超えると、次のエラーが返されます:

    mysql> CREATE TABLE test_mdb_mtb (c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY, c2 VARCHAR(10), c3 DATE)
        ->   DBPARTITION BY HASH(c1) TBPARTITION BY HASH(c1) TBPARTITIONS 129;
    ERROR 4647 (HY000): [f5bd90594800000][30.25.86.55:8527][JICHEN_LOCAL_APP]ERR-CODE: [TDDL-4647][ERR_TABLE_PARTITIONS_EXCEED_LIMIT] The number of table partitions '129' exceeds the upper limit '128'. Please specify less table partitions or adjust the value of the parameter MAX_TABLE_PARTITIONS_PER_DB.

    この制限を引き上げるには、MAX_TABLE_PARTITIONS_PER_DB をヒントとして渡します:

    mysql> /*+TDDL:cmd_extra(MAX_TABLE_PARTITIONS_PER_DB=400)*/CREATE TABLE test_mdb_mtb (c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY, c2 VARCHAR(10), c3 DATE)
        ->   DBPARTITION BY HASH(c1) TBPARTITION BY HASH(c1) TBPARTITIONS 129;
    Query OK, 0 rows affected (2.64 sec)
  • DDL 実行エンジンのタスクキューには、最大 65,535 個の保留中の DDL タスクを保持できます。この制限に達すると、新しい DDL 文は実行できません。スペースを解放するには、まず保留中のタスクをリストして削除するタスクを特定し、次にそれらを削除します:

    SHOW DDL;
    REMOVE DDL <task_id>;

    この制限は、パラメーターを変更しても変更できません。