2017-11-23 9 views
0

フィルタ(車両年、モデル、メイク、ドライバ名など)がたくさんあります。選択されたすべてのフィルタは5〜10秒のSQLクエリーを生成し、5〜15秒の時間間隔で実行されます。私たちのユーザーがフィルターを非常に高速にマークしたとしましょう:何人かのドライバーを選んで、次にいくつかの車両、いくつかのデータ範囲など15秒以内に、ユーザーはサーバーに到達してSQLクエリを実行する数ダースのAJAX要求を送信し、より多くのクエリを取得し、各実行に時間がかかります。AJAXリクエストが中止されたときにRedshiftでSQLクエリを停止する代わりに

AJAXリクエストが中止されたときにクエリを停止するソリューションについて考えましたが、これは簡単な解決策ではありません。 AJAXリクエストが中止されたときにクエリを停止するよりも優れたソリューションですか?

解析データにはRedshiftを使用し、ユーザーデータにはPostgreSQLなどを使用します。 Googleには、結果をキャッシュする高水準のキャッシュがあります。 Redshiftには、dc2.largeインスタンスのノード数が16 であり、WLM構成では15個の同時クエリ も設定されています(クエリはキューに入れられません)。 テーブル、ソートキー、ディスティーズすべてをエンコードしています。私たちは数十のテーブルを持っていますが、約300Mのレコードと〜70 の列を持つすべてのトランザクションで大きな数字の があります。 AWSコンソールのRedshift Performanceタブでは、リーダ・ノードが高負荷時に99-100%、他のノードが約10-30%で動作することがわかります。

+1

Redshiftクラスタとそのクエリ方法を最適化する必要があります。私は質問がstackoverflowの範囲外であると思う。詳細な分析が必要で、有能で経験豊富なredshiftエキスパートと1週間の作業が必要になるからだ。 「すべての選択されたフィルタはすべて、5〜15秒の時間間隔で実行されている5〜10個のSQLクエリを生成します」と言うと、間違った方法で赤方偏移に近づいた可能性があります。あなたがそれらのクエリをどのように見ているか、どのくらいのテーブルのデータなど、我々が手助けすることができる可能性がありますそれらのクエリを詳述したいと思っている場合。 –

+0

ありがとうございます。私はちょうどポストを編集し、より多くの情報を追加しました。 – opax

+0

opax、長い時間がかかるクエリの例を教えてください。どのくらいの時間がかかりますか? –

答えて

3

まず、redshiftはトランザクション型DBの分析DBを意味するものではありません。第2に、膨大な数のクエリがある場合は、クエリをグループ化するか、結果をキャッシュすることを検討する必要があります。また、work load managementを使用することを検討してください。

元の問題に戻って、タイムアウトしたAJAX呼び出しによって開始されたクエリを把握する必要があります。 svv_transactionsstv_recentsに依存する必要があるこれらのテーブルは、実行中のプロセスとクエリを返します。次に、クエリを取り消すにはPG_CANCEL_BACKEND、最悪の場合はPG_TERMINATE_BACKENDを使用して実行中のプロセスを終了させる必要があります。自動化した場合には、これを簡単に自動化する方法はありませんが、経験を共有してください。

+0

これは答えではありません、コメントにする必要があります –

+0

これは質問への答えを提供しません。批評をしたり、著者の説明を求めるには、投稿の下にコメントを残してください。 - [レビューから](/レビュー/低品質の投稿/ 18048860) – philantrovert

関連する問題