Cache Table

云原生数据仓库 AnalyticDB MySQL 版提供了Cache表功能,用于临时存储查询结果,能够实现快速检索和数据管理。本文介绍Cache表的相关功能说明以及使用示例。

前提条件

AnalyticDB for MySQL集群为V3.2.0及以上版本。

说明

如何查看集群内核版本,请参见如何查看实例版本信息。如需升级内核版本,请联系技术支持。

功能介绍

Cache表提供类似传统数据库临时表(Temp Table)的功能。支持将某个查询结果临时存储,为结果集进一步分析和检索提供高效的支撑。不同于数据存储在存储引擎(Worker)的表,Cache表的数据存储在前端接入节点上,AnalyticDB for MySQL会根据淘汰策略自动删除不再被使用的Cache表。

使用方法

创建Cache表

只支持使用CTAS语句来创建Cache表并写入数据,语句中必须指定ENGINE='CACHE',否则会创建为普通的表而不是Cache表。

adb_demo.customer表数据按age字段排序并写入到c1缓存表中,示例如下:

-- 可选:创建名为caches的Database
CREATE DATABASE IF NOT EXISTS caches;

-- 通过CTAS创建Cache Table:
CREATE TABLE caches.c1 ENGINE='CACHE'
	AS SELECT * FROM adb_demo.customer ORDER BY age LIMIT 9999;
说明

建议单独创建一个库(Database)方便管理Cache表,也可使用任意已存在的库来创建Cache表。

查询Cache表

查询名为caches.c1的Cache表,示例如下:

SELECT * FROM caches.c1;

查询已创建的Cache表

获取当前集群中所有的Cache表信息。

SELECT * FROM INFORMATION_SCHEMA.KEPLER_CACHE_TABLE_STATUS_MERGED;

阈值配置

配置Cache表过期时间(TEMP_TABLE_EXPIRATION_TIME)

Cache表的过期时间阈值,默认值为3600,单位为秒(s),即1小时未被访问则会被自动清除。

SET ADB_CONFIG TEMP_TABLE_EXPIRATION_TIME=3600;

配置Cache表的最大行数TEMP_TABLE_MAX_ROW_COUNT)

每个Cache表允许记录的最大行数,默认值为300000,单位为行。

SET ADB_CONFIG TEMP_TABLE_MAX_ROW_COUNT=300000;