CALENDAR_HIERARCHY_DAY
指定将 DATE
分区键分成年、月和日的层次结构。Vertica
Tuple Mover 会定期根据当前日期评估分区键,并根据需要将分区合并到相应的年份和月份分区组中。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
CALENDAR_HIERARCHY_DAY( partition‑expression[, active‑months[, active‑years] ] )
参数
- partition‑expression
- 用于对分区键分组的 DATE 表达式,必须与表的
PARTITION BY
表达式相同。 - active‑months
- 一个 ≥ 0 的整数,指定将
MONTH(CURRENT_DATE)
前多少个月的唯一分区键存储在单独的分区中。如果指定为 1,则只将当月的分区键存储在单独的分区中。
如果指定为 0,则将当月的所有分区键合并到该月的分区组中。
有关详细信息,请参阅分层分区。
默认值: 2
- active‑years
- 一个 ≥ 0 的整数,指定将
YEAR(CURRENT_DATE)
前多少年的分区键按月份分组到单独的分区中。如果指定为 1,则只将当年的分区键存储在月份分区组中。
如果指定为 0,则将当前和以前年份的所有分区键合并到年份分区组中。
有关详细信息,请参阅分层分区。
默认值: 2
重要
CALENDAR_HIERARCHY_DAY
算法假设大多数表活动都集中在最近的日期。通过将 active‑years 和 active‑months 设置为 ≥ 2 的小数字,可将合并活动隔离到特定日期的容器中,并将开销降至最低。Vertica 建议您对 active‑years 和 active‑months 使用默认设置 2。对于大多数用户来说,这些设置在 ROS 存储和性能之间实现了最佳平衡。
使用
在表分区子句中指定此函数,作为其 GROUP BY
表达式:
PARTITION BY partition‑expression
GROUP BY CALENDAR_HIERARCHY_DAY(
group‑expression
[, active‑months[, active‑years] ] )
例如:
=> CREATE TABLE public.store_orders
(
order_no int,
order_date timestamp NOT NULL,
shipper varchar(20),
ship_date date
);
...
=> ALTER TABLE public.store_orders
PARTITION BY order_date::DATE
GROUP BY CALENDAR_HIERARCHY_DAY(order_date::DATE, 3, 2) REORGANIZE;
有关用法的详细信息,请参阅分层分区。