使用 TDE (SQL Server) 進行備份壓縮的內部結構
有沒有人知道備份壓縮如何在 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) on 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