Skip to main content
Weave では、繰り返しクエリを実行する場合や、ネットワーク帯域幅が限られている環境で作業する場合のパフォーマンスを向上させるために、サーバー応答のキャッシュを利用できます。この記事では、キャッシュが役立つ場面、有効にする方法、Weave がどのリクエストをキャッシュするか、さらにキャッシュがディスク領域をどのように使用するかを説明します。これにより、有効にするかどうかを判断し、必要なストレージ容量を見積もることができます。この機能はデフォルトで無効化されています。

キャッシュを使用するタイミング

サーバー応答のキャッシュは、次のような場合に役立ちます。
  • 同じクエリを頻繁に実行する場合。
  • 利用できるネットワーク帯域幅が限られている場合。
  • レイテンシの高い環境で作業している場合。
  • オフラインで開発していて、後で使用できるように応答をキャッシュしておきたい場合。
この機能は、データセットに対して繰り返し評価を実行する場合に便利です。Weave は実行間でデータセットをキャッシュできるためです。

キャッシュを有効にする

キャッシュを有効にするには、以下の環境変数を設定します。WEAVE_USE_SERVER_CACHE はキャッシュを有効にし、その他の変数でそのサイズと保存場所を調整できます。
# サーバー応答のキャッシュを有効にする
export WEAVE_USE_SERVER_CACHE=true

# キャッシュサイズの上限を設定する(デフォルトは1GB)
export WEAVE_SERVER_CACHE_SIZE_LIMIT=1000000000

# キャッシュディレクトリを設定する(省略可能。デフォルトは一時ディレクトリ)
export WEAVE_SERVER_CACHE_DIR=/path/to/cache

キャッシュの挙動

このセクションでは、Weave がどのサーバーリクエストをキャッシュするかを説明します。これにより、どの操作がキャッシュの恩恵を受けるかを予測できます。この機能は、サーバーに対する冪等なリクエストをキャッシュします。Weave は次のリクエストをキャッシュします。
  • obj_read
  • table_query
  • table_query_stats
  • refs_read_batch
  • file_content_read

キャッシュサイズとストレージの詳細

このセクションでは、キャッシュに必要なディスク容量を見積もり、環境に応じて WEAVE_SERVER_CACHE_SIZE_LIMIT を適切に設定する方法を説明します。WEAVE_SERVER_CACHE_SIZE_LIMIT (バイト単位) はキャッシュサイズを制御します。実際に使用されるディスク容量は、次の 3 つの要素で構成されます。
  • 固定サイズの 32 KB のチェックサムファイル。
  • 実行中のクライアントごとに最大約 4 MB のライトアヘッドログ (WAL) ファイル。Weave は、プログラムの終了時に WAL ファイルを自動的に削除します。
  • メインのデータベースファイル。最小 32 KB、最大 WEAVE_SERVER_CACHE_SIZE_LIMIT です。
合計のディスク使用量:
  • 実行中 >= 32 KB + 約 4 MB + キャッシュサイズ。
  • 終了後 >= 32 KB + キャッシュサイズ。
たとえば、キャッシュ上限が 5 MB の場合:
  • 実行中: 最大約 9 MB。
  • 終了後: 最大約 5 MB。

パフォーマンス