白杨商业智能工作室
#技术分享#Azure SQL

别再半夜起来重建索引了!Azure SQL 自动索引压缩来了,性能直接飙升98%

· 白杨BI工作室

做 DBA 的朋友们,问你们一个灵魂拷问——你上一次半夜被告警叫起来重建索引是什么时候? 别不好意思,这几乎是每个 SQL Server 管理员的共同记忆。索引碎片化是个慢性病,不治的话查询越来越慢,治的话就得定期跑维护脚本,还要操心资源争用、窗口期够不够……

别再半夜起来重建索引了!Azure SQL 自动索引压缩来了,性能直接飙升98%

做 DBA 的朋友们,问你们一个灵魂拷问——你上一次半夜被告警叫起来重建索引是什么时候?

别不好意思,这几乎是每个 SQL Server 管理员的共同记忆。索引碎片化是个慢性病,不治的话查询越来越慢,治的话就得定期跑维护脚本,还要操心资源争用、窗口期够不够……

好消息是,微软终于出手了。Azure SQL 现在推出了 自动索引压缩(Automatic Index Compaction) 功能的公开预览版。一句话总结:以后索引碎片化这事儿,数据库自己搞定,你不用管了。 🎉

📌 这东西到底干了什么?

传统索引维护方式有两种:REBUILD(重建)和 REORGANIZE(重组)。它们都能解决碎片化问题,但都有代价——要么锁表、要么吃资源,而且你得自己写脚本、自己调度、自己监控。

自动索引压缩走了一条完全不同的路:

  • 它是一个 后台持续运行的进程,不会像维护作业那样一次性大扫除
  • 它只处理 最近被修改过的页面,而不是扫描整个索引
  • 它会自动把半空的数据页合并、回收空闲空间
  • 开销极低,对在线业务几乎没有感知

简单说,就像给数据库配了一个自动保洁员,不用你操心,它自己就把碎片收拾了。

🚀 开启方式:一条 SQL 就够了

不用装补丁,不用改配置文件,不用写 Agent Job:

ALTER DATABASE [你的数据库名] SET AUTOMATIC_INDEX_COMPACTION = ON;

就这一句,完事儿。

📊 效果有多猛?看数据说话

微软官方用 OLTP 压测场景做了对比测试,数据很能说明问题:

| 指标 | 工作负载前 | 工作负载后 | 自动压缩后 | |------|-----------|-----------|-----------| | 逻辑读次数 | 25 ✅ | 1,610 ❌(暴增60倍) | 35 ✅(降低98%) | | 页面密度 | 99.51% ✅ | 52.71% ❌ | 96.11% ✅ | | 数据页数 | 962 ✅ | 4,394 ❌(膨胀4.5倍) | 1,065 ✅ |

翻译成人话就是:

  1. 工作负载跑完后,因为大量 UPDATE/DELETE 操作和页分裂,索引膨胀严重,查询性能断崖式下降
  2. 自动压缩介入后,几分钟内就把页面密度从 52% 恢复到 96%,逻辑读降低了 98%,性能基本恢复到初始状态
  3. 全程零人工干预

对于持续运行的在线业务,这个功能是持续工作的——不是跑一次就完,而是一直在后台默默维护索引健康度。

🔍 哪些平台支持?

目前公开预览支持以下平台:

  • ✅ Azure SQL Database
  • ✅ Azure SQL Managed Instance(需开启 always-up-to-date 更新策略)
  • ✅ Fabric 中的 SQL 数据库

💡 国内用户关心的问题

Q: 自建 SQL Server 能不能用?

目前这个功能是 Azure SQL 和 Fabric 专属的,自建 SQL Server 暂不支持。如果你还在用本地 SQL Server,还是得老老实实维护索引……或者考虑上云?😏

Q: 跟阿里云 RDS / 腾讯云 CDB 的自动优化比怎么样?

阿里云 RDS SQL Server 版和腾讯云 CDB 也有类似的自动空间回收和碎片整理能力。不过微软这次的做法更底层——直接在数据库引擎层面实现了持续压缩,而不是定时任务式的。具体效果差异还需要实测对比。

Q: 开了之后会不会影响业务?

根据官方描述,后台压缩进程只作用于最近修改的页面,资源开销远低于传统维护作业。但毕竟是预览版,建议先在非生产环境验证。

Q: 要不要马上开?

如果你用的是 Azure SQL Database 或 MI,且 workloads 写操作频繁导致索引碎片化严重——强烈建议开。一条命令的事,关掉也方便。预览期间免费体验,还有专门反馈渠道(sqlaicpreview@microsoft.com),有问题直接跟产品组沟通。

📝 小结

自动索引压缩可能是今年 Azure SQL 最实用的 DBA 友好功能。它解决的不是什么高大上的架构问题,而是每个 DBA 日常最烦琐的体力活——索引维护。

如果你正在管理 Azure SQL 实例,这条命令值得试试:

ALTER DATABASE CURRENT SET AUTOMATIC_INDEX_COMPACTION = ON;

原文链接:https://techcommunity.microsoft.com/t5/azure-sql-blog/stop-defragmenting-and-start-living-introducing-auto-index/ba-p/4500089 发布日期:2026-03-18

相关文章

微软重磅调整:Azure SQL弃用SGX加密意味着什么

微软重磅调整:Azure SQL弃用SGX加密意味着什么

微软 Azure SQL 数据库近日宣布,将正式停用基于英特尔 SGX 安全区域的 Always Encrypted 加密方案,这一变化标志着云端机密计算在数据库加密领域的一次重要技术路线调整。

#技术分享#Azure SQL
Azure SQL数据库中心性能监控来了,你的数据库终于有救了

Azure SQL数据库中心性能监控来了,你的数据库终于有救了

微软近日宣布,Azure SQL 数据库中心(Database Hub)的性能监控功能正式进入公共预览阶段,用户现可在统一门户中直接查看数据库运行指标,无需在多套工具间来回切换。

#技术分享#Azure SQL
微软Fabric数据库中心公共预览开放,数据开发迎来巨变

微软Fabric数据库中心公共预览开放,数据开发迎来巨变

数据库管理正在从被动运维走向主动洞察。微软近日宣布,Fabric 中的数据库中心(Database Hub)正式进入公共预览阶段,这项新能力将数据库运行信号转化为可执行的引导式操作,让数据资产的管理者第一次拥有了驾驶舱式的全局视野。

#技术分享#Azure SQL
SQL Server Always On终于支持多数据库MI链接了

SQL Server Always On终于支持多数据库MI链接了

微软近日宣布,Azure SQL 托管实例(MI Link)现已支持在 SQL Server 的 Always On 可用性组中同时连接多个数据库,该功能目前处于预览阶段。这意味着企业可以在混合云架构下,更灵活地实现多数据库的云端灾备与只读分流。

#技术分享#Azure SQL
Azure SQL数据库无服务器也能自动暂停?省钱大招来了

Azure SQL数据库无服务器也能自动暂停?省钱大招来了

微软近日宣布,Azure SQL 数据库的超大规模无服务器版本正式进入自动暂停与自动恢复功能的公开预览阶段。这意味着企业可以在业务低谷期让数据库自动休眠,在请求到来时秒级唤醒,从根本上重构云数据库的成本模型。

#技术分享#Azure SQL
SQL数据同步退役倒计时,你的数据库迁移方案准备好了吗

SQL数据同步退役倒计时,你的数据库迁移方案准备好了吗

微软近日宣布,Azure SQL 数据同步服务(SQL Data Sync)正式进入退役的最后阶段,该服务将不再支持新的同步组创建,现有用户需尽快迁移至替代方案。 - 停止新建同步组:用户已无法通过门户或 API 创建新的数据同步组,现有同步组仍可运行,但不再获得功能更新。

#技术分享#Azure SQL
有问题?加企业微信 1 对 1 交流 👇
➕ 添加企业微信
备注「白杨」优先通过 · 数据洞察与智能决策
企业微信
企业微信
备注「白杨」优先通过