FAQ по Data Cache
В этой теме описаны часто задаваемые вопросы (FAQ) и распространенные проблемы, связанные с Data Cache, а также предоставлены шаги по устранению неполадок и решения этих проблем.
Включение Data Cache
Как убедиться, что Data Cache успешно включен?
В большинстве случаев вы можете проверить, успешно ли включен Data Cache, любым из следующих способов:
- Выполните
SHOW BACKENDS(илиSHOW COMPUTE NODES) из вашего SQL-клиента и проверьте значениеDataCacheMetrics. Вы можете убедиться, что Data Cache включен, если квота дискового или оперативного кэша больше 0.
mysql> show backends \G
*************************** 1. row ***************************
BackendId: 89041
IP: X.X.X.X
HeartbeatPort: 9050
BePort: 9060
HttpPort: 8040
BrpcPort: 8060
LastStartTime: 2025-05-29 14:45:37
LastHeartbeat: 2025-05-29 19:20:32
Alive: true
SystemDecommissioned: false
ClusterDecommissioned: false
TabletNum: 10
DataUsedCapacity: 0.000 B
AvailCapacity: 1.438 TB
TotalCapacity: 1.718 TB
UsedPct: 16.27 %
MaxDiskUsedPct: 16.27 %
ErrMsg:
Version: main-c15b412
Status: {"lastSuccessReportTabletsTime":"2025-05-29 19:20:30"}
DataTotalCapacity: 1.438 TB
DataUsedPct: 0.00 %
CpuCores: 8
MemLimit: 50.559GB
NumRunningQueries: 0
MemUsedPct: 0.50 %
CpuUsedPct: 0.2 %
DataCacheMetrics: Status: Normal, DiskUsage: 44MB/1TB, MemUsage: 0B/0B
Location:
StatusCode: OK
1 row in set (0.00 sec)
В приведенном выше примере квота дискового кэша Data Cache составляет 1TB, и в настоящее время используется 44MB; в то время как квота кэша памяти составляет 0B, поэтому кэш памяти не включен.
- Вы можете получить д оступ к веб-консоли BE (
http://${BE_HOST}:${BE_HTTP_PORT}/api/datacache/stat), чтобы проверить текущую квоту Data Cache, коэффициент попаданий и другие метрики. Вы можете убедиться, что Data Cache включен, еслиdisk_quota_bytesилиmem_quota_bytesбольше 0.

Почему Data Cache не включен по умолчанию?
Начиная с версии 1.5.0, BE будет пытаться включить Data Cache при запуске. Однако, если на текущем диске недостаточно свободного места, Data Cache не будет включен автоматически.
Это может быть вызвано следующими ситуациями:
-
Процентное соотношение: Текущее использование диска высокое.
-
Оставшееся место: Размер оставшегося дискового пространства относительно мал.
Поэтому, если Data Cache не включен по умолчанию, вы можете сначала проверить т екущее использование диска и при необходимости увеличить емкость диска.
Альтернативно, вы можете вручную включить Data Cache, настроив квоту кэша на основе текущего доступного дискового пространства.
# отключить автоматическую настройку Data Cache
datacache_auto_adjust_enable = false
# Установить квоту дискового кэша Data Cache вручную
datacache_disk_size = 1T
Использование Data Cache
Какие типы catalog поддерживает Data Cache?
Data Cache в настоящее время поддерживает типы external catalog, которые используют Selena Native File Reader (такие как Parquet/ORC/CSV Reader), включая Hive, Iceberg, Hudi, Delta Lake и Paimon. Каталоги, которые получают доступ к данным на основе JNI (такие как JDBC Catalog), пока не поддерживаются.
Некоторые каталоги могут использовать различные методы доступа к данным в зависимости от определенных условий (таких как тип файла и статус данных). Например, для catalog Paimon, Selena может автоматически выбирать, использовать ли Native File Reader или JNI для доступа к данным на основе статуса компактирования текущих данных. Когда JNI используется для до ступа к данным Paimon, ускорение Data Cache не поддерживается.
Как узнать, что запрос попал в кэш?
Вы можете проверить метрики, связанные с Data Cache, в соответствующем профиле запроса. Метрики DataCacheReadBytes и DataCacheReadCounter указывают на статус попадания в локальный кэш.
- DataCacheReadBytes: 518.73 MB
- __MAX_OF_DataCacheReadBytes: 4.73 MB
- __MIN_OF_DataCacheReadBytes: 16.00 KB
- DataCacheReadCounter: 684
- __MAX_OF_DataCacheReadCounter: 4
- __MIN_OF_DataCacheReadCounter: 0
- DataCacheReadTimer: 737.357us
- DataCacheWriteBytes: 7.65 GB
- __MAX_OF_DataCacheWriteBytes: 64.39 MB
- __MIN_OF_DataCacheWriteBytes: 0.00
- DataCacheWriteCounter: 7.887K (7887)
- __MAX_OF_DataCacheWriteCounter: 65
- __MIN_OF_DataCacheWriteCounter: 0
- DataCacheWriteTimer: 23.467ms
- __MAX_OF_DataCacheWriteTimer: 62.280ms
- __MIN_OF_DataCacheWriteTimer: 0ns
Почему запрос промахивается мимо кэша, когда Data Cache включен?
Выполните следующие шаги для устранения неполадок:
- Проверьте, поддерживает ли Data Cache текущий тип catalog.
- Убедитесь, соответствует ли оператор запроса условиям заполнения кэша. В определенных случаях Data Cache будет отклонять заполнение кэша для некоторых запросов. Подробности см. в разделе Правила заполнения Data Cache.
Команда EXPLAIN VERBOSE может использоваться для проверки того, запускает ли запрос заполнение кэша.
Пример:
mysql> EXPLAIN VERBOSE SELECT col1 FROM hudi_table;
| 0:HudiScanNode |
| TABLE: hudi_table |
| partitions=3/3 |
| cardinality=9084 |
| avgRowSize=2.0 |
| dataCacheOptions={populate: false} |
| cardinality: 9084 |
+-----------------------------------------+
В приведенном выше примере поле populate в разделе dataCacheOptions имеет значение false, что указывает на то, что кэш не будет заполнен для запроса.
Чтобы включить Data Cache для таких запросов, вы можете изменить поведение заполнения по умолчанию, установив системную переменную populate_datacache_mode в always.