PolarDB-X では、SQL タイムアウト期間を変更するためのカスタム HINT 文が提供されています。
PolarDB-X は、コンピュートノードからストレージノードへ送信される SQL ステートメントに対して、デフォルトで 900 秒のタイムアウトを適用します。実行に長い時間が必要な正当なスロー SQL ステートメントについては、SOCKET_TIMEOUT HINT を使用して、ステートメント単位でタイムアウト値を設定してください。
注意事項
- PolarDB-X の HINT は、
/*+TDDL:hint_command*/および/!+TDDL:hint_command*/の 2 つのフォーマットをサポートしています。 - 公式 MySQL コマンドラインクライアントで
/*+TDDL:*/フォーマットを使用する場合、ログイン時に-cフラグを指定する必要があります。-cを指定しないと、クライアントがサーバーへステートメントを送信する前に PolarDB-X の HINT を削除してしまいます。詳細については、「MySQL のコメント」および「mysql クライアントのオプション」をご参照ください。
構文
/*+TDDL:SOCKET_TIMEOUT(time)*/
time にはミリ秒単位の値を指定します。
例
SELECT ステートメントのタイムアウトを 40 秒に設定します:
/*+TDDL:SOCKET_TIMEOUT(40000)*/SELECT * FROM t_item;
重要 タイムアウト値を長く設定すると、データベースリソースがステートメントの全実行期間中占有されたままになります。多数の長時間実行中の SQL ステートメントが同時に実行されると、リソース枯渇により PolarDB-X の可用性が低下する可能性があります。延長されたタイムアウトに依存するのではなく、長時間実行中の SQL ステートメント自体の最適化を推奨します。