openGauss源码解析(184)

openGauss源码解析:AI技术(31)

8.6.5 使用示例

AI查询时间预测功能使用示例如下。

① 定义性能预测模型,代码如下:

INSERT INTO gs_opt_model VALUES(‘rlstm’, ‘model_name’, ‘host_ip’, ‘port’);

② 通过GUC参数开启数据收集,配置的参数列表,代码如下:

enable_resource_track = on;

enable_resource_record = on;

③ 编码训练数据,代码如下:

SELECT gather_encoding_info('db_name');

④ 校准模型,代码如下:

SELECT model_train_opt('template_name', 'model_name');

⑤ 监控训练状态,代码如下:

SELECT track_train_process('host_ip', 'port');

⑥ 通过explain + SQL语句来预测SQL查询的性能,代码如下:

EXPLAIN (..., predictor 'model_name') SELECT ...

获得结果,其中,“p-time”列为标签预测值。

Row Adapter (cost=110481.35..110481.35 rows=100 p-time=99..182 width=100) (actual time=375.158..375.160 rows=2 loops=1)

8.6.6 演进路线

目前模型的泛化能力不足,依赖外置的AI Engine组件,且深度学习网络比较重,这会为部署造成困难;模型需要数据进行训练,冷启动阶段的衔接不够顺畅,后续从以下几个方面演进。

(1) 加入不同复杂度模型,并支持多模型融合分析,提供更健壮的模型预测结果和置信度。
(2) AI Engine考虑加入任务队列,目前仅支持单并发预测/训练,可以考虑建立多个服务端进行并发业务。
(3) 基于在线学习/迁移学习的增强,考虑对损失函数加入锚定惩罚代价来避免灾难遗忘问题,同时优化数据管理模式,考虑data score机制,根据数据时效性赋权。
(4) 将本功能与优化器深度结合,探索基于AI的路径选择方法。
posted @ 2024-05-06 10:35  openGauss-bot  阅读(4)  评论(0编辑  收藏  举报