华为云云数据库GaussDB分布列推荐函数_云淘科技

分布列推荐针对的是在分布式数据库下分布列以及分布方式的推荐,目的是在进行业务迁移或业务上线时,减少选择表分布列的人力成本。

sqladvisor.init(char, boolean, boolean, boolean, int, int)

描述:初始化参数。

返回值类型:bool

表1 init参数说明

参数

类型

说明

是否必选

kind

char

推荐类型,目前支持分布列推荐 ‘D’。

isUseCost

boolean

是否使用优化器,有数据的情况选择是。

isUseCollect

boolean

是否从收集的负载中开始分析,默认值为false。

isConstraintPrimaryKey

boolean

是否保持主键约束,默认值为true。

sqlCount

int

收集sql数量,默认值为10000,范围:1 ~ 100000。

maxMemory

int

分布列推荐最大占用内存,默认值为1024,范围:1 ~ 10240,单位MB。

sqladvisor.set_weight_params(real, real, real)

描述:设置启发式规则不同成分的权重,调用init的时候会设置一个默认参数,分析时可以不调用该函数。

返回值类型:bool

表2 set_weight_params参数说明。

参数

类型

说明

是否必选

joinWeight

real

join的权重,范围:0 ~ 1000

goupbyWeight

real

group by的权重,范围:0 ~ 1000

qualWeight

real

predicate的权重,范围:0 ~ 1000

此函数非必须调用,在执行init函数的时候,会预置一个默认权重分别是join: 1.0, group by: 0.1, predicate: 0.05。

sqladvisor.set_cost_params(bigint, boolean, text)

描述:使用Whtif代价模式可以设置的参数。

返回值类型:bool

表3 set_cost_params参数说明

参数

类型

说明

是否必选

maxTime

bigint

推荐的最大时间,小于等于0默认为不限时,单位min。

isTotalSQL

boolean

是否使用全部SQL参与计算,true:全部SQL,false:会按照百分位过滤掉代价过大或者过小的SQL。

compressLevel

text

压缩程度表示推荐算法搜索空间的大小,’low’, ‘med’, ‘high’。

此函数非必须调用,在执行init函数的时候,会预置参数maxTime:-1,isTotalSQL:true, compressLevel :’high’。
用户选择的压缩程度越低,时间越长,越有可能推出更好的结果。

sqladvisor.assign_table_type(text)

描述:指定表为复制表。

参数:表名

返回值类型:bool

指定复制表需要在调用analyze_query和analyze_workload前使用。

sqladvisor.analyze_query(text, int)

描述:导入需要推荐的SQL语句,并对语句的成分进行分析。

返回值类型:bool

表4 analyze_query参数说明

参数

类型

说明

是否必选

query

text

SQL语句。

frequency

int

该语句在负载中的频率,默认值为1,范围:1 ~ 2147483647。

如果参数query中存在如单引号(’)等特殊字符,可以使用单引号(’)进行转义。
半在线模式不支持该函数。

sqladvisor.analyze_workload()

描述:分析在线收集的负载信息。

返回值类型:bool

sqladvisor.get_analyzed_result(text)

描述:获取当前表提取出来的有益成分。

参数:text

返回值类型:record

函数返回字段说明如下。

名称

类型

描述

schema_name

text

模式名

table_name

text

表名

col_name

text

列名

operator

text

算子类型

count

int

统计该操作符的次数

sqladvisor.run()

描述:根据指定的模式和输入的SQL进行计算分析。

返回值类型:bool

sqladvisor.get_distribution_key()

描述:获取推荐结果。

分析结果保存在session中,session断连结果丢失。

返回值类型:record

函数返回字段说明如下。

名称

类型

描述

db_name

text

数据库名

schema_name

text

模式名

table_name

text

表名

distribution_type

text

推荐的分布类型

distribution_key

text

推荐分布列

start_time

timestamp

推荐开始时间

end_time

timestamp

推荐结束时间

cost_improve

text

推荐结果对于代价的提升

comment

text

备注

sqladvisor.clean()

描述:清理session中推荐过程中的全部内存。

返回值类型:bool

sqladvisor.start_collect_workload(int, int)

描述:开启在线收集负载。

返回值类型:bool

表5 start_collect_workload参数说明

参数

类型

说明

是否必选

sqlCount

int

在线收集负载最大sql数量,默认值为10000,范围:1 ~ 100000。

maxMemory

int

在线收集负载最大占用内存,默认值为1024,范围:1 ~ 10240,单位MB。

在线收集功能只能由系统管理员调用。
同一时间只能收集一个数据库的负载。
收集负载目前只支持普通SQL和存储过程中的DML、DQL语句。

sqladvisor.end_collect_workload()

描述:关闭在线收集负载。

返回值类型:bool

关闭在线收集功能只能由系统管理员调用。

sqladvisor.clean_workload()

描述:清理负载中的内存。

返回值类型:bool

清理负载内存功能只能由系统管理员调用。
必须手动执行清理函数。

使用建议

启发式、WhatIf代价推荐模式调用状态机。

半在线推荐模式调用状态机。

父主题: 函数和操作符

同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家