このトピックでは、カスタムヒントの使用方法と構文について説明します。
このトピックで提供される情報は、PolarDB-X 1.0 V5.3以降に適用されます。
概要
ヒントはSQL構文の補足であり、リレーショナルデータベースで重要な役割を果たします。 ヒントを使用すると、対応する構文を使用してSQL文の実行方法を選択できます。 これにより、SQL文の実行を最適化できます。
PolarDB-X 1.0は、特別なヒント構文を提供します。 たとえば、特定のデータベースシャードの一部のテーブルシャードにデータが格納されていることがすでにわかっており、実行のためにSQLステートメントをデータベースシャードにルーティングする必要がある場合は、PolarDB-X 1.0カスタムヒントを使用できます。
PolarDB-X 1.0カスタムヒントの構文
構文
/* + TDDL: hint_command [hint_command ...]* /
/!+ TDDL: hint_command [hint_command ...]*/
注
- PolarDB-X 1.0カスタムヒントは、
/* + TDDL:hint_command */
形式または/!+ TDDL:hint_command */
形式で指定できます。 - ヒントは、
/*
と*/
の間、または/!
と*/
の間に配置される文字列です。 文字列は+ TDDL:
で始まります。hint_command
パラメーターは、特定の操作に影響を与えるために使用される1つ以上のPolarDB-X 1.0カスタムヒントコマンドを指定します。hint_command
パラメーターに複数のヒントコマンドを指定する場合は、それらをスペースで区切ります。 - カスタムヒントを
/* + TDDL:hint_command */
形式で指定した場合、PolarDB-X 1.0はMySQLコマンドラインクライアントへのログインに使用するコマンドに-c
パラメーターを追加します: mysql。 これにより、クライアントでカスタムヒントを含むSQLステートメントを実行できます。 -cパラメーターPolarDB-X 1.0を追加しない場合、クライアントはSQLステートメントをサーバーに送信して実行する前に、SQLステートメントのコメントを削除します。 この形式のカスタムヒントは、MySQLコメントとして定義されます。 したがって、PolarDB-X 1.0カスタムヒントは有効になりません。 詳細については、「mysql client options」をご参照ください。
例
# 各データベースシャードの物理テーブルの名前を照会します。
/* + TDDL:scan()*/SHOW TABLES;
# 読み取り専用ApsaraDB RDSインスタンスのデータベースシャード0000にクエリをルーティングします。
/* + TDDL: ノード (0) スレーブ ()*/SELECT * FROM t1;
例では、/* + TDDL:scan()*/
および /* + TDDL:node(0) slave()*/
は、
+ TDDL:
で始まります。 scan()
、node(0)
、slave()
は PolarDB-X 1.0ヒントコマンドで、スペースで区切られています。 SQL文でのヒントの使用
PolarDB-X 1.0では、DML、DDL、およびデータアクセス言語 (DAL) ステートメントでヒントを使用できます。 次のリストでは、構文について説明します。- DMLステートメントの場合、次の例に示すように、ステートメントの最初のキーワードの末尾にヒントを指定できます。
/* + TDDL: ... */ SELECT... /* + TDDL: ... * /挿入... /* + TDDL: ... */ REPLACE... /* + TDDL: ... */ UPDATE... /* + TDDL: ... */ DELETE... /* + TDDL: ... */ CREATE TABLE... /* + TDDL: ... */ ALTER TABLE... /* + TDDL: ... */ DROP TABLE... /* + TDDL: ... */ SHOW... ...
- DMLステートメントの場合、次の例
に示すように、ステートメントの最初のキーワードの末尾にヒントを指定できます。 INSERT /* + TDDL: ... */ ... REPLACE /* + TDDL: ... */ ... UPDATE /* + TDDL: ... */ ... DELETE /* + TDDL: ... */ ... ...
説明 異なるヒントは、異なるステートメントに適用可能であり得る。 適用可能なステートメントの詳細については、ヒントコマンドについて説明しているトピックを参照してください。
SQL文で複数のヒントを使用する
PolarDB-X 1.0では、SQL文で複数のヒントコマンドを含むヒントを使用できます。SELECT /* + TDDL: ノード (0) スレーブ ()*/ ...;
PolarDB-X 1.0には、複数のヒントコマンドを含むヒントの使用に次の制限があります。# 単一のSQL文に複数のヒントを含めることはできません。
SELECT /* + TDDL:node(0)*/ /* + TDDL:slave()*/ ...;
# ヒントに重複するヒントコマンドを含めることはできません。
SELECT /* + TDDL: ノード (0) ノード (1)*/ ...;