使用指导
前提条件
- 需要保证用户提供的历史日志及待预测负载的格式符合要求,可以使用数据库GUC参数开启收集,也可以通过监控工具采集。
- 为保证预测准确率,用户提供的历史语句日志应尽可能全面并具有代表性。
- 按照要求配置python环境。
文件结构
Sqldiag
├── data --测试数据集
├── src --源码文件
├── README.md --说明文档
└── main.py --程序入口
环境配置
python 3.6+
sqlparse
sklearn
gensim
SQL流水采集方法
使用GUC参数 log_statement 与 log_statement_stats 即可开启日志收集,参数配置为:
- log_statement = all
- log_statement_stats=on
参数开启后,可能占用一定的系统资源,但一般不大。持续的高并发场景可能产生5%以内的损耗,数据库并发较低的场景,性能损耗可忽略。开启参数后,会向数据库日志文件中记录具体的执行语句以及其开销。
操作步骤
提供历史日志以供模型训练:
训练数据格式为:
SQL语句执行耗时,SQL语句文本
说明:
- 列之间的分隔符为’,’
测试数据格式为:
SQL语句文本
进行训练与预测操作:
python main.py -m {train, predict} -f FILE
train: 训练模式。
predict: 预测模式
FILE: 文件路径
使用方法示例
使用提供的训练数据进行训练:
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: 对应类别的平均执行时间