使用 TDE (SQL Server) 进行备份压缩的内部结构

Mat*_*fen 8 sql-server backup transparent-data-encryption sql-server-2017

有没有人(内部?)了解备份压缩如何与 SQL Server(2016+ 版)上的 TDE 配合使用。

一般来说,我认为压缩加密数据的好处很小,但是我们注意到,使用 TDE,当我们使用压缩进行完整备份时,我们仍然看到备份文件大小显着减少。这让我们怀疑备份过程是否会解密数据、压缩数据、加密结果,然后将其备份到磁盘。显然,由于需要解密和重新加密数据,这将增加备份过程的 CPU 消耗。

细节

select @@version

Microsoft SQL Server 2017 (RTM) - 14.0.1000.169 (X64) 2017 年 8 月 22 日 17:04:49 版权所有 (C) 2017 Microsoft Corporation Developer Edition(64 位),Windows 10 Enterprise 10.0(内部版本 17763:)(Hypervisor)

TSQL脚本

备份数据库 TestTDE 到磁盘 = 'c:\Test\TestTDE_Compressed.bak' WITH COMPRESSION, MAXTRANSFERSIZE = 65537

还是以不同的方式实现了空间节省?

Sha*_*nky 10

这让我们怀疑备份过程是否会解密数据、压缩数据、加密结果,然后将其备份到磁盘。

这正是节省空间的方式。当备份进程运行页面被解密并加载到内存中,然后压缩,然后加密并保存到磁盘上。Backup TSQL Doc中提到了该过程

从 SQL Server 2016 (13.x) 开始,这将为 TDE 加密数据库启用优化的压缩算法,该算法首先解密页面,对其进行压缩,然后再次对其进行加密。

我在这里假设,由于您在 TDE 数据库上通过备份压缩获得了很好的里程,您必须使用修补到最新 SP 和 CU 的 SQL Server 2016。我强烈建议您阅读启用 TDE 的数据库的备份压缩

由于您正在使用SQL Server 2017和您的 TSQL 脚本使用,MAXTRANSFERSIZE> 65536您将受益于启用 TDE 的数据库的备份压缩。但我强烈建议您将SQL Server 2017修补到最新的 CU