默认情况下,StarRocks 会缓存 Hive 、Hudi的元数据、并以异步模式自动更新缓存的元数据,从而提高查询性能。此外,表结构变更或更新后,您也可以使用 REFRESH EXTERNAL TABLE 手动更新元数据,从而确保 StarRocks 第一时间生成合理的查询计划。
本文介绍如何手动更新缓存的元数据。
REFRESH EXTERNAL TABLE [external_catalog.][db_name.]<table_name> [PARTITION ('partition_name', ...)]
| 参数 | 必选 | 说明 |
|---|---|---|
| external_catalog | 否 | Hive catalog 或 Hudi catalog 名称。 |
| db_name | 否 | Hive 表或 Hudi 表所在的数据库名。 |
| table_name | 是 | Hive 表或 Hudi 表名。 |
| partition_name | 否 | Hive 表或 Hudi 表中的分区名。如指定,则更新缓存的 Hive 表或 Hudi 表指定分区的元数据。 |
说明
只有拥有 ALTER_PRIV 权限的用户才可以执行该语句更新缓存的元数据。
示例一:更新缓存的 Hive 表 hive_table 的元数据。
REFRESH EXTERNAL TABLE hive_catalog.hive_db.hive_table;
或
USE hive_catalog.hive_db; REFRESH EXTERNAL TABLE hive_table;
示例二:更新缓存的 Hudi 表 hudi_table 中分区 p1 和 p2 的元数据。
REFRESH EXTERNAL TABLE hudi_catalog.hudi_db.hudi_table PARTITION ('p1', 'p2');