如何使用 Gemini AI 自动推荐索引?
解读
在国内一线互联网/金融/政企面试中,面试官问“怎么用 Gemini AI 给 Cloud SQL 自动推荐索引”,并不是想听你背官方文档,而是考察三件事:
- 你是否真的在生产环境把 Gemini AI 集成进 DevOps 闭环,而不是停留在控制台点按钮;
- 你是否理解 Gemini AI 推荐索引的边界条件(只支持 PostgreSQL 与 MySQL 9.6+、需要 query plan 采样、对长事务与批处理 SQL 不敏感);
- 你是否能把“推荐”变成“可灰度、可回滚、可审计”的企业级流程,满足国内合规(等保、数据出境、审计留痕)。
回答思路要“端到端”:从开启 API → 采集 workload → 拿到 Recommendations → 自动评审 → 生成 DDL → 灰度执行 → 效果回检 → 知识库沉淀,全程用中文说明落地细节。
知识点
- Gemini in Databases 是 Google Cloud 统一的 AI 辅助层,Cloud SQL 的索引推荐其实调用的是 Recommender API 里的
google.cloudsql.index.Recommender,与 BigQuery 的google.bigquery.table.Recommender同门。 - 推荐来源:Cloud SQL 的 pg_stat_statements(MySQL 对应 performance_schema.events_statements_summary_by_digest)+ 自动捕获的慢查询 + 执行计划,采样周期默认 24 h,可改。
- 推荐粒度:每个 DatabaseId 返回一组
CREATE INDEX / DROP INDEX建议,附带 impact 预估(CPU、IO、内存节省百分比) 与 风险等级(LOW/MEDIUM/HIGH)。 - 国内网络下,Gemini API 只走 vpc-sc 管控的 googleapis.cn 域名,数据不出境;若组织策略设了 VPC Service Controls,需要在 perimeter 里显式加入
recommender.googleapis.com。 - 触发方式:
- 控制台“AI 建议”页(面试时别说这个,显得小白);
gcloud recommender recommendations list命令;- Terraform 调用
google_cloud_asset_search_all_resources把结果写回 Git; - Cloud Composer / Workflows 定时拉建议并自动提 Merge Request。
- 灰度执行:用 Cloud SQL 的在线 DDL(MySQL 8.0 的 inplace DDL、PostgreSQL 的
CREATE INDEX CONCURRENTLY)+ pt-online-schema-change 做双写校验;回滚靠 gh-ost 的--test-on-replica先测延迟。 - 审计:把 recommendations 的 ETag 与执行后的 Cloud AuditLogs 一起存到 Cloud Logging Bucket,保存 180 天,满足等保 2.0 三级审计要求。
答案
我在上一家公司把 Gemini AI 索引推荐做到了“零人工”闭环,核心分六步:
- 开启数据收集
在 Terraform 模块里统一打开cloudsql.googleapis.com与recommender.googleapis.com,并为每个实例打上gemini-index=enabled标签;同时把pg_stat_statements.track = 'all'写进 PostgreSQL 参数,MySQL 则打开performance_schema = ON,保证采样源完整。 - 定时获取推荐
用 Cloud Workflows 每天 02:30 触发,调用recommender.googleapis.com/v1/projects/{project}/locations/{region}/recommenders/google.cloudsql.index.Recommender/recommendations;返回的 JSON 直接存进 Cloud Storage 的gs://{project}-ai-records/桶,文件名带日期,方便后续对比。 - 自动评审过滤
把推荐结果扔进 Cloud Run 里的评审服务:- 过滤掉 risk = HIGH 或 estimated_cpu_gain < 5 % 的建议;
- 再用自研规则跑一遍“业务黑名单”,例如订单库禁止对
order_id建冗余索引; - 通过后在 GitLab 自动创建 MR,MR 描述里带上原始 ETag 与 impact 值,方便 DBA 二次确认。
- 灰度执行
合并 MR 后,Cloud Build 调用gcloud sql connect执行CREATE INDEX CONCURRENTLY(PostgreSQL)或pt-online-schema-change(MySQL),并实时拉 Cloud Monitoring 的database/cpu/utilization指标;若实例 CPU 上涨超 10 % 或复制延迟 > 3 s,立即Ctrl-C中断,工单自动转给值班 DBA。 - 效果回检
索引上线 24 h 后,再用同一 Workflows 跑recommender.googleapis.com的insightTypes接口,对比 pg_stat_user_indexes.idx_tup_read 变化;如果命中率提升 < 5 %,自动回滚并记录失败原因到 BigQuery 的aiops_index_log表,作为下次模型训练样本。 - 合规与审计
全程 API 调用都落在 vpc-sc 内,日志集中存 Log Bucket 并设置 CMK 加密;敏感字段(如 SQL 文本)先脱敏再落盘,确保通过国内数据出境评估。上线三个月,我们共采纳 312 条索引建议,平均查询延迟下降 28 %,DBA 人工评审时长从 2 h/周降到 10 min/周,真正做到了“AI 推荐、研发自助、DBA 兜底”。
拓展思考
- 如果企业用的是 多云架构(部分实例在阿里云 RDS),可以把 Gemini 的推荐算法 export 成 YAML 规则,通过 DBmaestro 或 flyway 在阿里云侧复用,实现“同一套 AI 逻辑,多云统一治理”。
- 对于 TP+AP 混合场景,Gemini 推荐的是 OLTP 索引;当夜跑 Spark on Cloud SQL 的大宽表分析时,反而可能拖慢写入。此时可在 Cloud Composer 里加一层“时序开关”:白天自动创建,夜里 00:00 先评估 AP 任务计划,再决定是否
DROP INDEX IF EXISTS,实现“昼夜索引翻转”。 - 国内金融公司常要求“索引变更必须双人复核”,可以把 Gemini 的推荐结果先写进 Cloud SQL 的审计表,再用 Cloud Functions 调用企业微信机器人@双人,等两人在 ITSM 系统里点“同意”后,才触发真正的 DDL;这样既满足监管,又把 AI 效率与人工风控结合。