2023.03.18/技術メモ
Redashのクエリーキャッシュの肥大対策
概要
redashは、クエリーを実行させるとキャッシュが残ります。
しかし、日次で見るようなクエリーであれば、昨日のクエリーは意味がありません。
このためキャッシュは基本的には積極的に消して行くべきだと考えます。
キャッシュ自動削除の仕組み
キャッシュ削除はデフォルトで下記の通りの設定値で制御されます。
https://redash.io/help/open-source/admin-guide/env-vars-settings
環境変数名 | 意味 | デフォルト値 |
---|---|---|
REDASH_QUERY_RESULTS_CLEANUP_ENABLED | 自動キャッシュ削除機能を有効にするかどうか | true |
REDASH_QUERY_RESULTS_CLEANUP_COUNT | 自動キャッシュ削除1回あたり何レコードを消すか | 100 |
REDASH_QUERY_RESULTS_CLEANUP_MAX_AGE | キャッシュが作られてから何日後に消すか | 7 |
キャッシュ削除は5分に一回実行され、その1回あたりの最大削除レコード数が上記の通り制限されています。
この数値が小さいと、利用方法によっては、キャッシュがたまるスピードの方が早くなり、ディスク残量がなくなってしまいます。
弊社が導入したクライアントでは、REDASH_QUERY_RESULTS_CLEANUP_COUNTは1500に設定しています。
設定の仕方
envファイルは、/opt/redash/.env
または、/opt/redash/env
あるいは、docker-compose.yml
でも設定できます。
設定したら docker-compose
で再起動します。
$ docker-compose down
$ docker-compose up -d
なお、PostgreSQLはキャッシュを消しても基本的にディスク容量は開放されません。
適宜vacuumなどを行う必要があります。