如何使用 Gemini AI 自动推荐索引?

解读

在国内一线互联网/金融/政企面试中,面试官问“怎么用 Gemini AI 给 Cloud SQL 自动推荐索引”,并不是想听你背官方文档,而是考察三件事:

  1. 你是否真的在生产环境把 Gemini AI 集成进 DevOps 闭环,而不是停留在控制台点按钮;
  2. 你是否理解 Gemini AI 推荐索引的边界条件(只支持 PostgreSQL 与 MySQL 9.6+、需要 query plan 采样、对长事务与批处理 SQL 不敏感);
  3. 你是否能把“推荐”变成“可灰度、可回滚、可审计”的企业级流程,满足国内合规(等保、数据出境、审计留痕)。
    回答思路要“端到端”:从开启 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
  • 触发方式:
    1. 控制台“AI 建议”页(面试时别说这个,显得小白);
    2. gcloud recommender recommendations list 命令;
    3. Terraform 调用 google_cloud_asset_search_all_resources 把结果写回 Git;
    4. 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 索引推荐做到了“零人工”闭环,核心分六步:

  1. 开启数据收集
    在 Terraform 模块里统一打开 cloudsql.googleapis.comrecommender.googleapis.com,并为每个实例打上 gemini-index=enabled 标签;同时把 pg_stat_statements.track = 'all' 写进 PostgreSQL 参数,MySQL 则打开 performance_schema = ON,保证采样源完整。
  2. 定时获取推荐
    Cloud Workflows 每天 02:30 触发,调用 recommender.googleapis.com/v1/projects/{project}/locations/{region}/recommenders/google.cloudsql.index.Recommender/recommendations;返回的 JSON 直接存进 Cloud Storagegs://{project}-ai-records/ 桶,文件名带日期,方便后续对比。
  3. 自动评审过滤
    把推荐结果扔进 Cloud Run 里的评审服务:
    • 过滤掉 risk = HIGHestimated_cpu_gain < 5 % 的建议;
    • 再用自研规则跑一遍“业务黑名单”,例如订单库禁止对 order_id 建冗余索引;
    • 通过后在 GitLab 自动创建 MR,MR 描述里带上原始 ETag 与 impact 值,方便 DBA 二次确认。
  4. 灰度执行
    合并 MR 后,Cloud Build 调用 gcloud sql connect 执行 CREATE INDEX CONCURRENTLY(PostgreSQL)或 pt-online-schema-change(MySQL),并实时拉 Cloud Monitoringdatabase/cpu/utilization 指标;若实例 CPU 上涨超 10 % 或复制延迟 > 3 s,立即 Ctrl-C 中断,工单自动转给值班 DBA。
  5. 效果回检
    索引上线 24 h 后,再用同一 Workflows 跑 recommender.googleapis.cominsightTypes 接口,对比 pg_stat_user_indexes.idx_tup_read 变化;如果命中率提升 < 5 %,自动回滚并记录失败原因到 BigQueryaiops_index_log 表,作为下次模型训练样本。
  6. 合规与审计
    全程 API 调用都落在 vpc-sc 内,日志集中存 Log Bucket 并设置 CMK 加密;敏感字段(如 SQL 文本)先脱敏再落盘,确保通过国内数据出境评估。上线三个月,我们共采纳 312 条索引建议,平均查询延迟下降 28 %,DBA 人工评审时长从 2 h/周降到 10 min/周,真正做到了“AI 推荐、研发自助、DBA 兜底”。

拓展思考

  1. 如果企业用的是 多云架构(部分实例在阿里云 RDS),可以把 Gemini 的推荐算法 export 成 YAML 规则,通过 DBmaestroflyway 在阿里云侧复用,实现“同一套 AI 逻辑,多云统一治理”。
  2. 对于 TP+AP 混合场景,Gemini 推荐的是 OLTP 索引;当夜跑 Spark on Cloud SQL 的大宽表分析时,反而可能拖慢写入。此时可在 Cloud Composer 里加一层“时序开关”:白天自动创建,夜里 00:00 先评估 AP 任务计划,再决定是否 DROP INDEX IF EXISTS,实现“昼夜索引翻转”。
  3. 国内金融公司常要求“索引变更必须双人复核”,可以把 Gemini 的推荐结果先写进 Cloud SQL 的审计表,再用 Cloud Functions 调用企业微信机器人@双人,等两人在 ITSM 系统里点“同意”后,才触发真正的 DDL;这样既满足监管,又把 AI 效率与人工风控结合。