ablog

不器用で落着きのない技術者のメモ

Redshift のリザルトキャッシュを無効化する方法

性能試験などで敢えてリザルトキャッシュを使わずにクエリ性能を計測したい場合は以下の手順で無効化できる。

手順

  • セッションレベルで無効化する方法
set enable_result_cache_for_session=off;
  • ユーザーレベルで無効化する方法
ALTER USER awsuser SET enable_result_cache_for_session = off;

設定変更例

% psql "host=dc18xl4.*********.ap-northeast-1.redshift.amazonaws.com user=****** dbname=****** port=5439"
Password:
Timing is on.
psql (9.6.2, server 8.0.2)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: on)
Type "help" for help.

# show enable_result_cache_for_session;
 enable_result_cache_for_session
---------------------------------
 on
(1 row)

# set enable_result_cache_for_session=off;
SET

# show enable_result_cache_for_session;
 enable_result_cache_for_session
---------------------------------
 off
(1 row)

参考

Amazon Redshift で結果をキャッシュして繰り返しクエリに一秒未満で応答
投稿日: Nov 21, 2017

Amazon Redshift で、結果をキャッシュしてクエリの再実行時にキャッシュ済みの結果を返すことで、繰り返しクエリのパフォーマンスを向上させました。

繰り返しクエリを実行するダッシュボード、可視化、およびビジネスインテリジェンス (BI) の各ツールでは、結果のキャッシュによりパフォーマンスが大幅に向上します。さらに、結果のキャッシュで解放されるリソースにより、他のすべてのクエリのパフォーマンスが向上します。

クエリを実行すると、Amazon Redshift はキャッシュを検索し、以前の実行でキャッシュされた結果がないか確認します。キャッシュ済みの結果が見つかり、データが変更されていないことがわかると、クエリを再実行せずに、キャッシュ済みの結果を即座に返します。キャッシュ済みの結果がないか、データが変更されている場合は、クエリを再実行して、今後の実行に備えて新しい結果をキャッシュします。キャッシュ済みの結果が返されると、処理リソースが節約されて他のクエリに振り向けられます。

今回のリリースでは、新しい ‘source_query’ 列を SVL_QLOG ビューに追加しています。クエリで結果のキャッシュを使用すると、この列が表示されます。結果のキャッシュは、デフォルトで、すべての Amazon Redshift クラスターで有効になっています。詳細については、関連ドキュメントを参照してください。

最新リリースでは、Amazon Redshift の結果のキャッシュをすべての AWS パブリックリージョンで使用できます。

Amazon Redshift で結果をキャッシュして繰り返しクエリに一秒未満で応答

enable_result_cache_for_session
値 (デフォルトは太字)
on (true)、off (false)

説明
クエリ結果のキャッシュを使用するかどうかを指定します。enable_result_cache_for_session が on の場合、Amazon Redshift は、クエリ結果の有効なキャッシュ済みコピーを、クエリが送信された際に確認します。結果のキャッシュに一致が見つかった場合、Amazon Redshift はキャッシュ済みの結果を使用しクエリを実行しません。enable_result_cache_for_session が off の場合、Amazon Redshift は結果のキャッシュを無視し、送信されたクエリをすべて実行します。

enable_result_cache_for_session - Amazon Redshift

Announcement: Amazon Redshift Maintenance (November 16th – December 14th, 2017)

We will be patching your Amazon Redshift clusters during your system maintenance window in the coming weeks. The timing of the patch will depend on your region and maintenance window settings. You can view or change your maintenance window settings from the AWS Management Console. After your cluster has been patched, the new cluster version will be Build 1.0.1535. Please contact us at redshift-feedback@amazon.com if you have any questions.

This version includes the following new features and improvements:

Result-set caching. Repetitive queries can now be served directly from the memory of the leader node of your Amazon Redshift cluster, significantly enhancing query performance

https://forums.aws.amazon.com/thread.jspa?threadID=132076&start=75&tstart=0

SVL_QLOG ビューにはデータベースに対して実行されたすべてのクエリのログが含まれます。
(中略)
source_query: integer: クエリで結果のキャッシュが使用された場合、キャッシュされた結果のソースとなったクエリのクエリ ID。結果のキャッシュが使用されていない場合、このフィールドの値は NULL です。

https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/r_SVL_QLOG.html