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优化模式。