列存索引参数设置和修改

本文介绍如何在创建列存索引时设置列存参数,以及如何修改已有列存索引的参数,并将详细说明列存索引参数。

版本限制

实例版本需要在5.4.20及以上。

说明

在创建列存时设置参数

您可以在创建列存索引时,使用COLUMNAR_OPTIONS关键字指定列存索引级别的参数,示例如下:

CREATE CLUSTERED COLUMNAR INDEX `cci` 
ON tb (`id`) 
PARTITION BY KEY (`id`)
PARTITIONS 16
COLUMNAR_OPTIONS='{
  "dictionary_columns":"col1,col2",
  "type":"snapshot", 
  "snapshot_retention_days":"7",
  "auto_gen_columnar_snapshot_interval":"30"
}';
说明

其中COLUMNAR_OPTIONS是一个JSON格式的字符串。

参数说明:

参数名称

说明

作用范围

允许动态修改

type

列存索引的类型。取值如下:

  • snapshot:表示会创建列存索引与列存快照。

  • default(默认值):表示只创建列存索引不创建列存快照。

说明

更多信息,请参见创建列存快照

实例级别、列存索引级别

snapshot_retention_days

列存快照的保留时间,单位为天,取值范围如下:

  • 大于等于1且小于等于366。

  • 默认值为7(如果存在全局设置则优先取全局设置),即列存快照保留时间为7天。

说明
  • 超过保留时间,系统不保证该快照一定能被查询到。

  • 该参数与设置时区无关。

  • 示例:

    snapshot_retention_days的值为7时,即在T0时刻生成的快照,会至少保留T0+7天,在T0+7天之后,不保证该快照一定能被查询到。

  • 仅在type的值为snapshot时生效。

  • 更多信息,请参见创建列存快照

实例级别、列存索引级别

auto_gen_columnar_snapshot_interval

自动生成列存快照点的时间间隔,单位为分钟,取值范围如下:

  • 默认值为-1(如果存在全局设置则优先取全局设置),表示不会自动生成快照点。

  • 除默认值-1外,其余取值应大于等于5。

说明
  • 设置后,每过auto_gen_columnar_snapshot_interval分钟,系统将自动调用CALL polardbx.columnar_flush(schema_name, table_name, index_name)生成一个快照点(第一次自动调用可能会有1分钟的延时),您也可以手动调用该指令生成快照。更多信息,请参见生成快照点

  • 仅在type的值为snapshot时生效。

实例级别、列存索引级别

dictionary_columns

字典编码列,默认值为NULL。更多信息,请参见字典编码列

列存索引级别

列存参数修改

对于允许动态修改的参数,您可以执行如下代码:

# 修改实例级别的参数
CALL polardbx.columnar_set_config(param_key, param_val);

# 修改列存索引级别的参数
CALL polardbx.columnar_set_config(cci_id, param_key, param_val);

# 修改列存索引级别的参数,需指定库名、表名、列存索引名
CALL polardbx.columnar_set_config(schema_name, table_name, cci_name, param_key, param_val);
说明
  • 其中cci_id为列存索引的唯一ID。如何获取cci_id,请参见SHOW COLUMNAR STATUS

  • 其中param_key为需要配置的参数名称。

  • 其中param_val为需要配置的参数值。