このトピックでは、SQL文のタイムアウト期間を指定するためのヒント構文について説明します。
このトピックで提供される情報は、PolarDB-X 1.0 V5.3以降に適用されます。
PolarDB-X 1.0では、PolarDB-X 1.0インスタンスおよびApsaraDB RDSインスタンスのSQL文のデフォルトのタイムアウト期間は900秒です。 要件に基づいてタイムアウト期間を変更できます。 SQL文によっては、完了までに900秒以上かかる場合があります。 これらの低速SQLステートメントの場合、PolarDB-X 1.0には、これらのステートメントのタイムアウト期間を変更するためのカスタムヒントが用意されています。 このカスタムヒントを使用して、SQL文のタイムアウト期間を変更できます。
構文
/* + TDDL:SOCKET_TIMEOUT (時間) */
SOCKET_TIMEOUT
で指定された値はミリ秒単位です。 このカスタムヒントを使用して、ビジネス要件に基づいてSQL文のタイムアウト期間を変更できます。
注意
- PolarDB-X 1.0カスタムヒントは、
/* + TDDL:hint_command */
形式または/!+ TDDL:hint_command */
形式で指定できます。 - カスタムヒントを
/* + TDDL:hint_command */
形式で指定する場合は、MySQLコマンドラインクライアントへのログインに使用するコマンドに-c
パラメーターを追加します: mysql。 これにより、クライアントでPolarDB-X 1.0カスタムヒントを含むSQLステートメントを実行できます。 -cパラメーターを追加しない場合、クライアントはSQL文をサーバーに送信して実行する前に、SQL文のコメントを削除します。 PolarDB-X 1.0この形式のカスタムヒントは、MySQLコメントとして定義されます。 したがって、PolarDB-X 1.0カスタムヒントは有効になりません。 詳細については、「mysql client options」をご参照ください。
例
SQL文のタイムアウト期間を40秒に設定します。
/* + TDDL:SOCKET_TIMEOUT(40000)*/SELECT * FROM t_item;
説明 タイムアウト期間が長くなると、データベースリソースがより長い期間占有されます。 大量のSQL文が同じ期間内に長時間実行されると、データベースリソースが大量に消費され、DRDSデータベースサービスが期待どおりに提供できなくなります。 この問題を解決するには、可能であれば実行に時間がかかるSQL文を最適化する必要があります。