使用指导

前提条件

  • 需要保证用户提供的历史日志及待预测负载的格式符合要求,可以使用数据库GUC参数开启收集,也可以通过监控工具采集。
  • 为保证预测准确率,用户提供的历史语句日志应尽可能全面并具有代表性。
  • 按照要求配置python环境。

文件结构

  1. Sqldiag
  2. ├── data --测试数据集
  3. ├── src --源码文件
  4. ├── README.html --说明文档
  5. └── main.py --程序入口

环境配置

  1. python 3.6+
  2. sqlparse
  3. sklearn
  4. gensim

SQL流水采集方法

使用GUC参数 log_statement 与 log_statement_stats 即可开启日志收集,参数配置为:

  • log_statement = all
  • log_statement_stats=on

参数开启后,可能占用一定的系统资源,但一般不大。持续的高并发场景可能产生5%以内的损耗,数据库并发较低的场景,性能损耗可忽略。开启参数后,会向数据库日志文件中记录具体的执行语句以及其开销。

操作步骤

  1. 提供历史日志以供模型训练:

    训练数据格式为:

    1. SQL语句执行耗时,SQL语句文本

    使用指导 - 图1 说明: - 列之间的分隔符为’,’

    测试数据格式为:

    1. SQL语句文本
  2. 进行训练与预测操作:

    1. python main.py -m {train, predict} -f FILE
    • train: 训练模式。

    • predict: 预测模式

    • FILE: 文件路径

使用方法示例

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

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

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

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

预测结果分析:

  1. status: 预测状态
  2. data:
  3. time: sql执行时间
  4. point: sql空间点坐标
  5. clister: sql类别id
  6. background: 模板化模型总结
  7. stmts: 对应类别的sql样例
  8. center: 对应类别的sql的中心点坐标
  9. points: 样例sql的空间点坐标
  10. avg_time: 对应类别的平均执行时间