問題の説明
DMSの [SQLコンソール] ページでSQLステートメントを実行すると、実行タイムアウトが発生します。 実行結果には、次の情報が表示されます。
[Statement 1]:
select count(*) from table_name where gmt_create>='2020-01-01';
Failed, details: Operation terminated (user interrupted or execution timed out)
[Solution]:
1. Add an indexed column in the query condition to improve the query performance.
2. Narrow the query scope as much as possible.
3. If the instance needs security collaboration, you can submit a schema design ticket to add indexes to the query columns.
4. Click edit instance to reset the query timeout value.
TraceId : 0bc059b716002426281173397e58b3
解決策
注: この記事のSQL文は例として使用されます。 詳細は実際の環境に依存します。
問題が発生した後、次の方法で解決できます。
クエリ条件にインデックス付き列を追加して、クエリのパフォーマンスを向上させることができます。 user_idフィールドにインデックスがある場合は、クエリ条件を追加して、クエリ時間が短いことを確認できます。
select count(*) from table_name where gmt_create>='2020-01-01' and user_id = '1000';
クエリの範囲をできるだけ狭くします。 WHERE句を使用してクエリ条件を追加できます。 クエリの範囲を絞り込むには、gmt_createを次
select count(*) from table_name where gmt_create>='2020-01-01' and gmt_create<'2020-04-01';
セキュリティインスタンスでは、スキーマの設計またはデータの変更により、照会された列のインデックスを有効にできます。 インデックスを追加した後、クエリにインデックスフィールドの条件を追加できます。
Structural design: スキーマデザインを通じてgmt_createフィールドを設定できます。 詳細は、「スキーマデザイン」をご参照ください。
データ変更: 次のSQL文を使用して、gmt_createフィールドにインデックスを追加します。
alter table table_name add index idx_gmt(gmt_create);
インスタンスを編集して、クエリタイムアウト期間を変更できます。
[DMS] ページで、対象のインスタンスを見つけます。 インスタンスIDを右クリックし、ショートカットメニューから [インスタンスの編集] を選択します。
実際の状況に応じて [詳細情報] をクリックして値のクエリタイムアウト時間を調整し、[送信済み] をクリックします。
説明注: このトピックでは、例として、クエリのタイムアウトは60秒です。
スコープ
Data Management