使用指导

前提条件

  • 需要保证用户提供的历史日志及待预测负载的格式符合要求,可以使用数据库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%以内的损耗,数据库并发较低的场景,性能损耗可忽略。开启参数后,会向数据库日志文件中记录具体的执行语句以及其开销。

操作步骤

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

    训练数据格式为:

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

    说明:

    • 列之间的分隔符为','

    测试数据格式为:

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

    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: 对应类别的平均执行时间
意见反馈
编组 3备份
openGauss 2024-03-19 00:45:43
取消