SuperAPI AI 工具集

analyzing-schema-change-storage-risk

智能体与模型

查看项目

更新于 10-15 19:50

技能介绍

用途:在执行 CockroachDB 在线 schema 变更前,估算回填所需的存储余量,避免因磁盘不足导致作业暂停。官方建议为受影响表或索引预留最多 3 倍大小的空闲空间,这是安全上限而非精确预测。

适用操作:CREATE INDEX、ADD COLUMN 带 INDEX 或 UNIQUE、ALTER PRIMARY KEY、CREATE MATERIALIZED VIEW、CREATE TABLE AS、REFRESH MATERIALIZED VIEW、ALTER TABLE ... SET LOCALITY(会重写数据时)。索引较小(KB 到几 MB)的表风险可忽略,无需估算。

主要能力:按索引聚合各 range 大小,得到每个索引的总量,再与各 store 的最小空闲空间比较。CREATE INDEX 通常只需约 1 倍新索引大小;ALTER PRIMARY KEY 可能接近表大小。

使用方式:先用 DB Console 的 Storage 页面或抓取 Prometheus 端点查看每 store 最小 capacity_available: curl -ks https://<node>:8080/_status/vars | grep -E '^capacity( |_used|_available)' 再用文档推荐形式估算表或索引大小: SHOW RANGES FROM TABLE <table> WITH DETAILS, KEYS, INDEXES; 可按 index_name 聚合 range_size_mb 得到每索引总量。若最小空闲空间远高于目标即可执行;接近时先释放空间。

限制:SHOW RANGES ... WITH DETAILS 开销大,须指定具体表,避免全集群运行,range 多时宜在维护窗口执行。range_size_mb 为近似值且可能滞后。若回填因 InsufficientSpaceError 暂停,需释放磁盘后恢复作业,可用 SHOW JOBS 查询暂停的 SCHEMA CHANGE 作业。优先删除 crdb_internal.index_usage_statistics 显示未使用的索引以释放空间。