本页介绍了如何在容器中维护 AlloyDB Omni 列式引擎列存储区中数据的新鲜度。
添加、删除或更新表行时,列式引擎不会立即更新列存储中的数据。而是将列存储区中受影响的内容标记为无效,并使用列存储区中的列式数据以及行缓存和数据库存储区中的行式数据来规划和执行查询。
随着越来越多的数据块失效,列式引擎提供的查询性能提升效果会降低到需要刷新列式数据才能恢复查询性能提升效果的程度。达到此刷新阈值后,列式引擎会使用后台作业刷新列存储区中的无效数据。默认情况下,列式引擎使用 50 的刷新阈值,表示当列存储区中的 50% 内容变为无效时,系统会将指定内容标记为要刷新。您可以更改此刷新阈值,以调整自动刷新的开销,并可能为应用工作负载获得更好的持续查询性能。
此外,您还可以随时在列存储中手动刷新表的数据。通常,如果您希望对表所做的更改在进行更改后尽快反映在列存储中,则需要执行手动刷新。
更改列式引擎的刷新阈值
修改 google_columnar_engine.refresh_threshold_percentage
数据库标志的值,以更改列式引擎的刷新阈值。
ALTER SYSTEM SET google_columnar_engine.refresh_threshold_percentage=THRESHOLD;
THRESHOLD
:一个介于 1
到 100
之间的整数值。此值指定内容中必须失效的数据块所占的百分比,如果该百分比达到或超过该值,系统就会将内容标记为需要刷新。
在列存储区中手动刷新表中的数据
执行 google_columnar_engine_refresh
SQL 函数,以在内存列存储区中手动刷新表的数据。
SELECT google_columnar_engine_refresh(TABLE_NAME);
TABLE_NAME
:包含表或具体化视图名称的字符串。如果表或视图位于 public
以外的架构中,请使用 SCHEMA_NAME.TABLE_NAME
格式指定架构的名称,例如 myschema.mytable
。