📣新登場!TiDB Cloud BYOC、TiDB Cloud Filesystem、PostgreSQL-compatible TiDB Cloud Starter がパブリックプレビュー中。このページは自動翻訳されたものです。原文はこちらからご覧ください。

クエリ結果キャッシュ



TiDB Cloud Lake は、有効化されている場合、実行された各クエリの結果をキャッシュして永続化します。これにより、回答を得るまでの時間を大幅に短縮できます。

キャッシュの使用条件

クエリ結果は、すべての条件を満たした場合にのみキャッシュから再利用されます。

条件要件
キャッシュ有効現在のセッションで enable_query_result_cache = 1
同一クエリクエリテキストが完全に一致している必要があります(大文字と小文字を区別)
実行時間元のクエリ実行時間 ≥ query_result_cache_min_execute_secs
結果サイズキャッシュされる結果 ≤ query_result_cache_max_bytes
TTL 有効キャッシュの経過時間 < query_result_cache_ttl_secs
データ整合性キャッシュ作成以降にテーブルデータが変更されていないこと(query_result_cache_allow_inconsistent = 1 の場合を除く)
セッションスコープキャッシュはセッション固有です

クイックスタート

セッションでクエリ結果キャッシュを有効にします。

-- Enable query result cache SET enable_query_result_cache = 1; -- Optional: Cache all queries (including fast ones) SET query_result_cache_min_execute_secs = 0;

設定

設定デフォルト説明
enable_query_result_cache0クエリ結果キャッシュを有効化/無効化します
query_result_cache_allow_inconsistent0基になるデータが変更されていてもキャッシュ結果を許可します
query_result_cache_max_bytes1048576単一のキャッシュ結果に対する最大サイズ(バイト)
query_result_cache_min_execute_secs1キャッシュ対象となるまでの最小実行時間
query_result_cache_ttl_secs300キャッシュの有効期限(5 分)

パフォーマンス例

この例では、TPC-H Q1 クエリをキャッシュする方法を示します。

1. キャッシュを有効化する

SET enable_query_result_cache = 1; SET query_result_cache_min_execute_secs = 0;

2. 1 回目の実行(キャッシュなし)

SELECT l_returnflag, l_linestatus, sum(l_quantity) as sum_qty, sum(l_extendedprice) as sum_base_price, sum(l_extendedprice * (1 - l_discount)) as sum_disc_price, sum(l_extendedprice * (1 - l_discount) * (1 + l_tax)) as sum_charge, avg(l_quantity) as avg_qty, avg(l_extendedprice) as avg_price, avg(l_discount) as avg_disc, count(*) as count_order FROM lineitem WHERE l_shipdate <= add_days(to_date('1998-12-01'), -90) GROUP BY l_returnflag, l_linestatus ORDER BY l_returnflag, l_linestatus;

結果: 4 行、21.492 秒(6 億行を処理)

3. キャッシュエントリを確認する

SELECT sql, query_id, result_size, num_rows FROM system.query_cache;

4. 2 回目の実行(キャッシュから)

同じクエリを再度実行します。

結果: 4 行、0.164 秒(処理行数 0)

キャッシュ管理

キャッシュ使用状況を監視する

SELECT * FROM system.query_cache;

キャッシュされた結果にアクセスする

SELECT * FROM RESULT_SCAN(LAST_QUERY_ID());

キャッシュのライフサイクル

キャッシュされた結果は、次の場合に自動的に削除されます。

  • TTL の期限切れ(デフォルト: 5 分)
  • 結果サイズが上限を超過(デフォルト: 1MB)
  • セッション終了(キャッシュはセッションスコープ)
  • 基になるデータの変更(整合性のため自動的に無効化)
  • テーブル構造の変更(スキーマ変更によりキャッシュが無効化)

このページは役に立ちましたか?