Predictor: AI查询时间预测

可获得性

本特性自openGauss 1.0.0版本开始引入。

特性简介

Predictor是基于机器学习且具有在线学习能力的查询时间预测工具。在数据库内核中,通过不断学习数据库内收集的历史执行信息,实现计划的执行时间预测功能。

客户价值

在SQL语句执行之前,根据AI模型预测SQL执行时间。用户基于推测的SQL时间信息,可以发现可能的异常SQL语句,提前进行调优或者调度,以免影响系统运行。

特性描述

AI查询时间预测,依赖于本地查询计划收集。用户需要根据需求在查询执行时,收集实际查询计划(包括计划结构、算子类型、相关数据源、过滤条件等)、各算子节点实际执行时间、优化器估算代价、实际返回行数、优化器估算行数、并行数等信息。这些记录将保存在数据表中,并进行持久化管理包括定期进行数据失效清理。

数据库内核在自动收集历史数据后,由管理员进行编码,然后通过CURL接口向python端发送请求以配置模型、发送数据、触发训练。训练过程中可以通过调用tensorboard接口监控训练过程。模型最终返回各项目预测准确率,并保存最终模型。数据库根据aiEngine端返回结果更新模型信息相关系统表。

执行explain (analyze on, predictor <model_name>) SELECT …”时且模型收敛时触发,数据库根据Plan进行编码判断是否符合当前模型。如果符合模型,先向python端发送加载模型请求(模型训练完成后只需加载一次),模型加载后对计划编码文件进行推理并返回各节点预测结果。

特性增强

无。

特性约束

  • 数据库系统处于正常状态,用户通过身份验证成功登陆数据库访问拥有权限的数据。
  • 用户执行的SQL语法正确无报错。
  • 用户执行的SQL不会导致数据库异常等。
  • 历史性能数据窗口内集群并发量稳定,集群规模、表结构、表数量不变,数据量无突变,涉及查询性能的guc参数不变。如果上述条件被破坏,模型失效,需要对所有历史性能数据进行失效并重新进行数据收集和重新训练模型。
  • 加载模型时,原模型的结构、参数和训练信息等保存完整。若原模型信息丢失,模型无法正常加载,需要重新训练。
  • 历史性能数据正常收集和编码,正常解析编码数据不报错。
  • 用户通过预提供的安装脚本或者自行安装Python=3.6.4,configparser==3.8.1,Flask==0.12.2,Keras==2.2.4,numpy==1.16.4,scikit-learn==0.19.1,pandas==0.25.1, tensorboard==1.14.0,tensorflow-gpu==1.14.0或tensorflow==1.14.0。
  • 用户环境中已经安装了OpenSSL,使用脚本或者按照使用说明生成了证书。
  • 目前跨database namespace的模型同步需要管理员用户手动执行,不支持自动同步。

依赖关系

无。