Predictor: AI查询时间预测
特性简介
Predictor是基于机器学习且具有在线学习能力的查询时间预测工具。在数据库内核中,通过不断学习数据库内收集的历史执行信息,实现计划的执行时间预测功能。
特性描述
AI查询时间预测,依赖于本地查询计划收集。用户需要根据需求在查询执行时,收集实际查询计划(包括计划结构、算子类型、相关数据源、过滤条件等)、各算子节点实际执行时间、优化器估算代价、实际返回行数、优化器估算行数、并行数等信息。这些记录将保存在数据表中,并进行持久化管理包括定期进行数据失效清理。
执行explain (analyze on, predictor <model_name>) SELECT …”时且模型收敛时触发,数据库根据Plan进行编码判断是否符合当前模型。如果符合模型,先向python端发送加载模型请求(模型训练完成后只需加载一次),模型加载后对计划编码文件进行推理并返回各节点预测结果。
特性约束
- 数据库系统处于正常状态,用户通过身份验证成功登陆数据库访问拥有权限的数据。
- 用户执行的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。
- 目前跨database namespace的模型同步需要管理员用户手动执行,不支持自动同步。
无。