AI优化模块设计

AI查询优化器

传统查询优化器依赖统计信息和基于规则的代价估算,而Mycat3的AI优化器在此基础上利用机器学习技术实现更智能的优化决策。

工作原理

1. SQL输入
       │
2. 特征提取 (SQL文本向量化, 表结构特征, 数据分布)
       │
3. 规则优化器生成候选执行计划
       │
4. AI模型预测每个候选计划的执行成本
       │
5. 选择最优执行计划
       │
6. 执行监控与反馈 (实际执行时间反馈到训练数据)

配置示例

ai_optimizer:
  enabled: true
  model_type: neural_network
  model_path: /models/query_optimizer/
  training:
    mode: online            # online / offline
    sample_interval: 100    # 每100条SQL采样
    min_samples: 10000      # 最少训练样本
  features:
    - query_text_embedding
    - table_cardinality
    - join_graph
    - filter_selectivity
    - system_cpu_load
    - disk_io_load

智能缓存策略

AI模型预测数据访问模式,提前将热点数据加载到缓存中。

cache_ai:
  enabled: true
  layers:
    - level: L1
      type: in_memory
      max_size: 1GB
      eviction_policy: ai_predicted
    - level: L2
      type: redis
      connection: redis://localhost:6379
      max_size: 10GB
  prediction:
    model: lstm
    forecast_window: 300   # 预测未来5分钟
    update_interval: 60     # 每60秒更新预测

智能分片优化

AI分析数据增长模式和查询热点,自动建议最优的分片方案:

  • 自动分片键推荐: 分析SQL WHERE条件中出现频率最高的列
  • 数据倾斜预测: 预测分片数据量增长趋势,提前预警数据倾斜
  • 自动重分片: 在低峰期自动执行数据重新分布
auto_sharding:
  enabled: true
  analysis:
    enabled: true
    period: 3600          # 每小时分析一次
    thresholds:
      skew_alert: 0.3     # 数据倾斜超过30%告警
      growth_alert: 0.5   # 单节点数据增长超过50%告警

异常检测

监控以下指标并自动检测异常:

检测项AI方法说明
慢SQL检测LSTM时序预测预测SQL执行时间,提前告警
资源异常Isolation Forest检测CPU/内存/磁盘IO异常
流量异常ARIMA模型检测QPS突增/突降
连接异常规则+ML检测连接池泄漏和异常连接
说明: AI模块为可选组件。禁用AI能力时,Mycat3.0回退到传统Cost-Based + Rule-Based优化模式。