#openGauss #入门 #安装 #数据库 #开源
知识来源:docs-opengauss.osinfra.cn/zh/
HLL中主要的数据结构,请参见表14。
表 14 HyperLogLog中主要数据结构
数据类型
功能描述
hll
hll头部为27字节长度字段,默认规格下数据段长度0~16KB,可直接计算得到distinct值。
创建HLL数据类型时,可以支持04个参数入参,具体的参数含义与参数规格同函数hll_empty一致。第一个参数为log2m,表示分桶数的对数值,取值范围1016;第二个参数为log2explicit,表示Explicit模式的阈值大小,取值范围012;第三个参数为log2sparse,表示Sparse模式的阈值大小,取值范围014;第四个参数为duplicatecheck,表示是否启用duplicatecheck,取值范围为0~1。当入参输入值为-1时,会采用默认值设定HLL的参数。可以通过\d或\d+查看HLL类型的参数。
说明:
创建HLL数据类型时,根据入参的行为不同,结果不同:
- 创建HLL类型时对应入参不输入或输入-1,采用默认值设定对应的HLL参数。
- 输入合法范围的入参,对应HLL参数采用输入值。
- 输入不合法范围的入参,创建HLL类型报错。
-- 创建hll类型的表,不指定入参
openGauss=# create table t1 (id integer, set hll);
openGauss=# \d t1
Table "public.t1"
Column | Type | Modifiers
--------+---------+-----------
id | integer |
set | hll |
-- 创建hll类型的表,指定前两个入参,后两个采用默认值
openGauss=# create table t2 (id integer, set hll(12,4));
openGauss=# \d t2
Table "public.t2"
Column | Type | Modifiers
--------+----------------+-----------
id | integer |
set | hll(12,4,12,0) |
--创建hll类型的表,指定第三个入参,其余采用默认值
openGauss=# create table t3(id int, set hll(-1,-1,8,-1));
openGauss=# \d t3
Table "public.t3"
Column | Type | Modifiers
--------+----------------+-----------
id | integer |
set | hll(14,10,8,0) |
--创建hll类型的表,指定入参不合法报错
openGauss=# create table t4(id int, set hll(5,-1));
ERROR: log2m = 5 is out of range, it should be in range 10 to 16, or set -1 as default
说明:
对含有HLL类型的表插入HLL对象时,HLL类型的设定参数须同插入对象的设定参数一致,否则报错。
-- 创建带有hll类型的表
openGauss=# create table t1(id integer, set hll(14));
-- 向表中插入hll对象,参数一致,成功
openGauss=# insert into t1 values (1, hll_empty(14,-1));
-- 向表中插入hll对象,参数不一致,失败
openGauss=# insert into t1(id, set) values (1, hll_empty(14,5));
ERROR: log2explicit does not match: source is 5 and dest is 10
#openGauss #入门 #安装 #数据库 #开源