PolarDB-Xでは、PolarDB-XノードまたはApsaraDB RDS for MySQLインスタンスでのSQLステートメントの実行に使用された時間がタイムアウト期間を超えると、実行がタイムアウトします。 デフォルトのタイムアウト時間は900秒で、タイムアウト時間を調整できます。 特定のスローSQL文の場合、実行時間は900秒を超えることがあります。 これらの低速SQL文の場合、PolarDB-Xは、タイムアウト期間を調整するために使用できるカスタムのタイムアウトヒントを提供します。 カスタムタイムアウトヒントを使用して、SQL文のタイムアウト期間を指定できます。
追加の考慮事項
- PolarDB-Xでは、
/* + TDDL:hint_command */
および/!+ TDDL:hint_command */
のいずれかの形式を使用してヒントをカスタマイズできます。 - 公式のMySQLコマンドラインクライアントで、
/* + TDDL:hint_command */
形式のPolarDB-Xカスタムヒントを含むSQL文を実行する場合、クライアントへのログインに使用するコマンドに-cパラメーターを追加します。 -cパラメーターを追加しない場合、クライアントはSQL文をサーバーに送信して実行する前に、SQL文のMySQLコメントを削除します。/* + TDDL:hint_command */
形式を使用するPolarDB-Xカスタムヒントは、MySQLコメントとして定義されます。 その結果、PolarDB-Xカスタムヒントは削除され、有効になりません。 詳細については、「mysql client options」をご参照ください。
構文
次の構文を使用して、SQL文のPolarDB-Xカスタムタイムアウトヒントを指定します。
/* + TDDL:SOCKET_TIMEOUT (時間) */
SOCKET_TIMEOUTの値をミリ秒単位で指定します。 このカスタムヒントを使用して、ビジネス要件に基づいてSQL文のタイムアウト期間を変更できます。
例
SQL文のタイムアウト時間を40秒に設定します。
/* + TDDL:SOCKET_TIMEOUT(40000)*/SELECT * FROM t_item;
タイムアウト期間が長くなると、データベースリソースがより長い期間占有されます。 一定期間内に実行時間の長いSQL文が多数存在すると、データベースリソースが大量に消費される可能性があります。 その結果、PolarDB-Xは期待どおりのデータベースサービスを提供できません。 この問題を解決するには、実行時間の長いSQL文を最適化することを推奨します。