SOCKET_TIMEOUT ヒントワードを使用して、特定の SQL ステートメントに対するデフォルトのタイムアウト値をオーバーライドします。これは、バルク書き込みやフルテーブルスキャンなど、デフォルト制限を超える実行時間が見込まれる長時間実行操作に有効です。
本トピックは、PolarDB-X 1.0 V5.3 以降に適用されます。
背景情報
PolarDB-X 1.0 では、PolarDB-X 1.0 インスタンスおよび ApsaraDB RDS インスタンス上で実行される SQL ステートメントに対して、デフォルトで 900 秒のタイムアウトが適用されます。実行に実際により長い時間がかかるステートメントについては、グローバル構成を変更することなく、SOCKET_TIMEOUT ヒントワードを用いてステートメント単位のタイムアウト値を設定してください。
構文
/*+TDDL:SOCKET_TIMEOUT(time)*/time の値は ミリ秒単位です。
注意事項
PolarDB-X 1.0 のヒントワードは、以下の 2 つのフォーマットをサポートしています:
| フォーマット | -c フラグが mysql クライアントで必要です |
|---|---|
/*+TDDL:hint_command*/ | はい |
/!+TDDL:hint_command*/ | いいえ |
/*+TDDL:hint_command*/ フォーマットを MySQL コマンドラインクライアント (mysql) で使用する場合、ログインコマンドに -c フラグを追加してください。-c を指定しないと、クライアントはステートメントをサーバーに送信する前にコメントを削除します。このフォーマットの PolarDB-X 1.0 ヒントワードはMySQL コメントとして定義されているため、削除されると有効になりません。利用可能なすべての mysql クライアントオプションについては、「mysql クライアントオプション」をご参照ください。
例
単一の SELECT ステートメントのタイムアウトを 40 秒(40,000 ミリ秒)に設定します:
/*+TDDL:SOCKET_TIMEOUT(40000)*/SELECT * FROM t_item;タイムアウト値を長く設定すると、データベース接続がより長時間オープンされたままになります。多数の長時間実行ステートメントが同時に実行された場合、データベースリソースが枯渇し、PolarDB-X 1.0 サービスが利用不可になる可能性があります。可能な限り、タイムアウト値の増加に頼らず、スロー SQL ステートメントの最適化を実施してください。