SQL server 中的大表性能

问题描述

对于我们的一个应用程序,我们有非常大容量的 sql 表,其中有 1 亿行,并且我们正在使用 Azure sql 托管实例。每天,用户要么插入新记录,要么更新非常旧的记录。这是所有其他系统通过 sql 复制引用其他预置服务器的核心表。所以真正的问题是,

  1. 用户每天都会参考此表进行 CRUD 操作。
  2. 其他下游系统也从 Azure 在本地引用此表数据。
  3. 报告和 UI 列表屏幕经常使用此表来通过加入其他表来提取数据。当此表与其他表连接时,性能总是会下降。

ABC 映射表有 1 亿行且少于 10 列。此表具有以下列以及日期和审计列。 ABCID是ABC表的主键

  • A 是 A 表的主键

  • B 是 B 表的主键

  • C 是 C 表的主键

  • 一个表包含少于 20k 条记录和 20 列。

  • B 表有 1500 行和 20 列。

  • C 表有 15 万行和 30 列。

在 UI 中,我们展示了来自所有这 4 个表的近 30 列以及过滤器。我们添加了聚集列存储、非聚集列存储、NC 覆盖所有内容但无法提高性能。来自 UI 的过滤器搜索条件将是所有 4 个提到的表中的任何列值。尤其是在列数较多的 C 表上。

处理这个大表以进行 CRUD 操作、实时报告以及对预置系统的数据引用的最佳方法是什么?

尝试了以下事情

  1. 通过组合所有这些表并添加不同的索引来创建索引视图。查询性能有所改善,但在 CRUD 操作期间会导致基表出现性能问题。
  2. 通过将所有这些表组合为视图并在复制表中添加索引来创建新的非规范化复制表,基表没有性能问题,但在非规范化表中读取性能不佳。

请提出处理所有这些情况的好选项。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)