Sql-Server

使用 TDE (SQL Server) 進行備份壓縮的內部結構

  • October 23, 2019

有沒有人知道備份壓縮如何在 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-bit) o​​n Windows 10 Enterprise 10.0 (Build 17763:) (Hypervisor)'

TSQL 腳本

將數據庫 TestTDE 備份到磁碟 = ‘c:\Test\TestTDE_Compressed.bak’ 壓縮,MAXTRANSFESIZE = 65537

還是以不同的方式節省空間?

這讓我們想知道備份過程是否會解密數據、壓縮數據、加密結果,然後將其備份到磁碟。

這正是節省空間的方式。當備份程序執行頁面被解密並載入到記憶體中,然後壓縮然後加密並保存到磁碟上。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

引用自:https://dba.stackexchange.com/questions/251783