暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

openGauss的AI能力——SQLdiag

MTL 2022-09-27
705

SQLdiag 概述 

⚫ SQLdiag是一个SQL语句执行时间预测工具,通过模板化方法,实现在不获取SQL语句执 行计划的前提下,依据语句逻辑相似度与历史执行记录,预测SQL语句的执行时间。 

⚫ 现有的预测技术主要基于执行计划的预测方法,但这些预测方案仅适用于OLAP场景且可 以获取执行计划的任务,对于OLTP或者HTAP这样的快速、简单查询是没有太多使用价 值的。与上述方案不同,SQLdiag着眼于数据库的历史SQL语句,通过对历史SQL语句的 执行表现进行总结归纳,将之再用于推断新的未知业务上。由于短时间内数据库SQL语 句执行时长不会有太大的差距,SQLdiag可以从历史数据中检测出与已执行SQL语句相似 的语句结果集,并基于SQL向量化技术和模板化方法预测SQL语句执行时长。

SQLdiag 优点及使用条件 

⚫ SQLdiag工具具有以下优点: 

 不需要SQL语句的执行计划,对数据库性能不会有任何的影响。 

 使用场景广泛,目前业内的很多算法局限性比较高,比如只适用于OLTP或者OLAP,而 SQLdiag使用场景广泛。 

 该框架鲁棒性强,容易理解,只需要简单的操作,就可以训练出自己的预测模型。

⚫ 使用SQLdiag工具需要满足以下前提条件: 

 需要保证用户提供的历史日志及待预测负载的格式符合要求,可以使用数据库GUC参数开启收 集,也可以通过监控工具采集。 

 为保证预测准确率,用户提供的历史语句日志应尽可能全面并具有代表性。 

 按照要求配置python环境。

SQLdiag 使用 

⚫ SQLdiag文件结构如下:


⚫ SQL流水采集方法,使用GUC参数 log_statement 与 log_statement_stats 即可开启日志收集,参数配置为: 

 log_statement = all 

 log_statement_stats=on 

⚫ 操作步骤 

 提供历史日志以供模型训练; 

 进行训练与预测操作。

SQLdiag 使用示例 

⚫ 使用提供的训练数据进行训练:

python main.py -m train -f data/train.csv

⚫ 使用提供的测试数据进行预测: 

python main.py -m predict -f data/predict.csv

⚫ 预测结果分析:

status: 预测状态 

data: 

time: sql执行时间 

point: sql空间点坐标 

cluster: sql类别id 

background: 模板化模型总结 

stmts: 对应类别的sql样例 

center: 对应类别的sql的中心点坐标 

points: 样例sql的空间点坐标 

avg_time: 对应类别的平均执行时间

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论