我想知道 SQL Server 是否支持对整个表的一种字典压缩,而不仅仅是一个页面。
我正在开发的系统最初并不是为它今天处理的大量数据而创建的。我目前遇到的问题如下:
该应用程序允许用户创建法律合同。这些合同是标准化的,但允许用户根据需要调整合同的内容(文本)。
为方便起见,每份合同都会制作一份标准化合同文本的副本。实际上,我们发现用户几乎从不编辑合同文本,因此我们最终得到了一个包含大量重复数据的表格。
通常我会更改数据库模型以适应用例,但这是一个遗留系统,这样的更改非常昂贵。正在研究它的替代品,所以像这样的投资并不容易。
是否可以对整个表进行列字典压缩,而不仅仅是 1 页?
我们在内部部署的 SQL 集群中使用 SQL Server 2012。
问题是表大小为 80GB,整个 DB 大小为 180GB。这个表占用了很多空间,我们没有足够的内存,所以 SQL Server 不断卸载数据。
该表的数据用于生成代表合同的 PDF。每次用户修改合同状态时,都会生成一个新的 PDF 并存储用于审计目的,这会在此表上生成大量读取。
读取到磁盘(因为 SQL 服务器不断从内存中卸载表)。这给我们的 SAN 造成了巨大的 IO 压力。
正在解决内存问题,但这需要几周时间。现在可以说,简单地插入更多内存目前不是一种选择。
我的想法是:对于短期解决方案 - 压缩数据,这将大大减少表的大小,从而使 SQL Server 可以将表保存在内存中,从而减轻我们对 SAN 的 IO 压力。