壓縮技術給SQL Server備份文件瘦身
更新時間:2009年03月11日 23:39:11 作者:
眾所周知,隨著數(shù)據(jù)庫體積的日益龐大,其備份文件的大小也水漲船高。雖然說通過差異備份與完全備份配套策略,可以大大的減小SQL Server數(shù)據(jù)庫備份文件的容量。
可是,其體積仍然很龐大。所以,在日常工作中,如何給SQL Server的備份文件瘦身,就是很多數(shù)據(jù)庫管理員所關心的問題了。
也許微軟的數(shù)據(jù)庫產(chǎn)品設計專家聽到了眾多數(shù)據(jù)庫管理員的呼聲了吧。在最新的2008版本的SQLServer數(shù)據(jù)庫中,提出了備份壓縮的概念。其基本原理跟利用RAR等壓縮工具壓縮文件一樣,可以讓原有的備份文件體積更小。這直接帶來的好處,就是可以節(jié)省服務器的備份空間。另外,若SQLServer數(shù)據(jù)庫配置了異地備份的話,那么也可以節(jié)省網(wǎng)絡帶寬,縮短異地備份的時間,等等。
筆者前不久剛把數(shù)據(jù)庫升級到了2008,并重新更改了備份配置,讓數(shù)據(jù)庫支持備份壓縮。下面筆者就把備份壓縮的管理心得跟大家分享一下。希望筆者這些經(jīng)驗能夠幫助大家做好SQL Server數(shù)據(jù)庫備份壓縮的管理。簡單的來說,如果要采用備份壓縮技術,那么數(shù)據(jù)庫管理員要弄明白幾個問題。
問題一:備份壓縮技術的限制條件。
由于備份壓縮技術是2008版本中才提出來的,所以其兼容性可能就會收到一些限制。根據(jù)官方的說法是,從2008以后的數(shù)據(jù)庫版本,都會支持這個備份壓縮技術。故向后兼容應該問題不大。數(shù)據(jù)庫管理員關心的應該是,從低版本升級到高版本的數(shù)據(jù)庫時的一些限制條件。掌握這些限制條件,可能會讓數(shù)據(jù)庫升級少遇到一些問題。根據(jù)筆者的了解,這里至少有二個限制條件。
一是壓縮的備份和未壓縮的備份不能夠共存于一個媒體集中。在SQL Server數(shù)據(jù)庫中,如果要對數(shù)據(jù)集進行備份,則首先需要建立一個媒體集。筆者升級完成之后,先對數(shù)據(jù)庫進行了一個完全備份,這個備份沒有采用壓縮技術。后來筆者在測試壓縮備份的時候,卻發(fā)現(xiàn)怎么都不成功。后來根據(jù)錯誤提示查詢了相關資料并進行親自測試,才發(fā)現(xiàn)壓縮的備份和未壓縮的備份不能夠共存于一個媒體集中。筆者后來重新建立了一個媒體集后,備份壓縮技術就可以起作用了。
二是早期版本的SQL Server數(shù)據(jù)庫無法讀取壓縮的備份。為了測試備份壓縮技術的向前兼容性,筆者特意利用備份壓縮后的數(shù)據(jù)庫文件,去恢復2005版本的數(shù)據(jù)庫。注意,這個數(shù)據(jù)庫文件是升級到2008后馬上備份的,也就是說,除了這個壓縮技術外,沒有采用2008的新技術與新對象。但是,卻發(fā)現(xiàn)2005版本的數(shù)據(jù)庫根本不認賬,不認識這個壓縮后的備份文件??梢姡缙诎姹镜腟QL Server數(shù)據(jù)根本無法讀取壓縮后的備份文件。
這是筆者測試后發(fā)現(xiàn)的兩個限制條件。不過筆者查詢了一些官方資料后發(fā)現(xiàn),還有一個重要的限制。如NTBACKUP工具無法共享含壓縮的數(shù)據(jù)庫備份磁帶。不過由于筆者用不到這方面的內(nèi)容,所以也沒有測試是否如此。
問題二:壓縮的效果到底如何?
如果采用了壓縮備份技術,那么備份文件到底可以瘦下來多少呢?這主要跟數(shù)據(jù)庫有關。根據(jù)筆者的了解,如下一些因素會直接影響到最終的壓縮效果。
首先是跟數(shù)據(jù)類型有關。如果數(shù)據(jù)庫中大部分是字符型的數(shù)據(jù),則其壓縮效果會比較好。而如果數(shù)字類型比較多的話,那么采用壓縮備份技術后,備份文件并不能夠小多少。這也給數(shù)據(jù)庫管理元是否要采用壓縮備份技術提供了一個判斷的標準。
其次是數(shù)據(jù)是否加密。正常情況下,如果數(shù)據(jù)庫中的數(shù)據(jù)未加密,則其壓縮的效果會比較明顯。相反如果數(shù)據(jù)庫的數(shù)據(jù)加密了,則其壓縮的程度就會小很多。如數(shù)據(jù)庫管理員利用透明數(shù)據(jù)加密方法來加密整個數(shù)據(jù)庫,則采用壓縮備份技術之后,壓縮備份并不會將數(shù)據(jù)庫減小多少,甚至根本不會減小。
再者,跟數(shù)據(jù)表設計也有關系。一般情況下,如果表設計比較合理,則其壓縮的效果就會好許多。如某頁中包含多個行,而其中的某個字段包含相同的值,則該值就可以獲得比較大的壓縮率。與之相反,如果字段中的數(shù)據(jù)大部分是隨機數(shù)據(jù)(即使只有稍微的差別),則其壓縮備份的大小幾乎與未壓縮的備份相同。這也就是說,要想取得比較好的壓縮效果,則在數(shù)據(jù)庫設計時,就需要考慮。如可以采用一些列表字段供用戶選擇,就可以提高最終備份文件的壓縮效果。
問題三:壓縮備份對于性能的影響如何?
數(shù)據(jù)庫采用壓縮備份之后,對于數(shù)據(jù)庫的影響是雙方面的,即有利也有害。
利是直接跟上面所說的數(shù)據(jù)庫壓縮效果相關。因為同一個數(shù)據(jù)庫的壓縮備份文件要比原來的備份文件要小,所以壓縮備份所需要的設備輸入輸出通常比較少,所以可以大大提高備份速度。而且,數(shù)據(jù)庫進行異地備份的話,還可以大大縮短網(wǎng)路傳輸?shù)臅r間。所以,當數(shù)據(jù)庫的壓縮效果越好,則對于數(shù)據(jù)庫的性能,也會有很大的改善。
不利之處就在于資源的消耗方面。如果采用了壓縮備份技術,則壓縮會顯著增加CPU的使用率。而壓縮進程所占用的額外CPU可能會對兵法操作產(chǎn)生消極的影響。為了盡量減少這個不利影響,可以采取的措施就是調(diào)整SQL Server數(shù)據(jù)庫的備份策略。如把備份時間放在午夜時分。那時候,基本上沒有用戶使用數(shù)據(jù)庫,或者數(shù)據(jù)庫的使用幾率會大大降低。此時,就是多一些額外的CPU消耗,用戶也很難察覺到。
另外在數(shù)據(jù)庫中,也可以通過降低優(yōu)先級的方式,來降低壓縮備份對數(shù)據(jù)庫的不利影響。如當發(fā)生CPU爭用時,此備份的CPU使用就會受到資源控制其的限制。通過將特定的用戶會話映射到限制CPU使用的資源調(diào)控器工作負荷來實現(xiàn)。不過這個實現(xiàn)起來比較復雜,以后若有機會,筆者將會專題講述。對于大部分企業(yè)來說,數(shù)據(jù)庫的使用都有很明顯的高發(fā)期與低潮期。只需要稍微調(diào)整一下備份策略,在數(shù)據(jù)庫使用低潮期進行壓縮備份,就可以很輕松的避免壓縮備份所帶來的負面影響。而完全不需要吃力不討好,采用這么復雜的解決方案。即使像銀行類這些金融機構,在晚上12點之后用戶也會大量的減少。此時他們釋放出來的CPU給壓縮備份使用已經(jīng)足夠了。
還好筆者以前采取的備份策略,就是在晚上12點之后讓數(shù)據(jù)庫進行自動備份。所以這次采用了壓縮備份之后,對于性能的影響可以忽略。
問題四:如何啟用壓縮備份?
默認情況下,數(shù)據(jù)庫在執(zhí)行備份的時候,是不采用壓縮備份的。如果數(shù)據(jù)庫管理員出于特定的需要要啟用壓縮備份的話,就需要管理員去手工啟動。壓縮備份的默認行為是數(shù)據(jù)庫系統(tǒng)中的備份壓縮默認選項服務器級配置來決定的。
如需要啟用壓縮備份策略,只需要經(jīng)過簡單的三個步驟即可。
第一步:打開數(shù)據(jù)庫對象資源管理器,右鍵單擊需要啟用壓縮備份策略的那個服務器,然后打開屬性對話框。
第二步:單擊數(shù)據(jù)庫設置節(jié)點。找到備份和還原選項卡。在壓縮備份頁簽中顯示了備份壓縮默認設置的當前配置。這個“壓縮備份”選項決定了數(shù)據(jù)庫在備份的時候是否要才用壓縮備份策略。如果選中的話,默認情況下數(shù)據(jù)庫將啟用壓縮備份。
第三步:建立新備份媒體。筆者在上面提到過,壓縮備份與未壓縮備份不能夠存儲在同一個媒體集中。如果數(shù)據(jù)庫管理員是中途啟用這個壓縮備份策略的。即在原先的備份媒體中已經(jīng)有未壓縮的備份文件,那么數(shù)據(jù)庫管理員要么需要刪除原有的備份文件,要么就是重新建一個備份媒體。筆者的意見是重新建立別分媒體,而保留原有的備份文件。這主要是出于安全的考慮。萬一壓縮備份因為某些原因不成功,則仍然可以有補救措施。
壓縮備份是SQLServer數(shù)據(jù)庫推出的一個新技術。筆者以為,如果企業(yè)數(shù)據(jù)庫容量比較小的話,沒有必要采用這個壓縮備份。只有數(shù)據(jù)庫容量比較大,或者要進行異地備份的情況下,采用壓縮備份的效果才會顯現(xiàn)出來。由于壓縮備份有比較大的限制條件和管理難點,數(shù)據(jù)庫管理員還是需要在性能、壓縮效果等方面評估壓縮備份可能會給企業(yè)帶來的效果。評估之后再進行取舍,是否要采用壓縮備份。
也許微軟的數(shù)據(jù)庫產(chǎn)品設計專家聽到了眾多數(shù)據(jù)庫管理員的呼聲了吧。在最新的2008版本的SQLServer數(shù)據(jù)庫中,提出了備份壓縮的概念。其基本原理跟利用RAR等壓縮工具壓縮文件一樣,可以讓原有的備份文件體積更小。這直接帶來的好處,就是可以節(jié)省服務器的備份空間。另外,若SQLServer數(shù)據(jù)庫配置了異地備份的話,那么也可以節(jié)省網(wǎng)絡帶寬,縮短異地備份的時間,等等。
筆者前不久剛把數(shù)據(jù)庫升級到了2008,并重新更改了備份配置,讓數(shù)據(jù)庫支持備份壓縮。下面筆者就把備份壓縮的管理心得跟大家分享一下。希望筆者這些經(jīng)驗能夠幫助大家做好SQL Server數(shù)據(jù)庫備份壓縮的管理。簡單的來說,如果要采用備份壓縮技術,那么數(shù)據(jù)庫管理員要弄明白幾個問題。
問題一:備份壓縮技術的限制條件。
由于備份壓縮技術是2008版本中才提出來的,所以其兼容性可能就會收到一些限制。根據(jù)官方的說法是,從2008以后的數(shù)據(jù)庫版本,都會支持這個備份壓縮技術。故向后兼容應該問題不大。數(shù)據(jù)庫管理員關心的應該是,從低版本升級到高版本的數(shù)據(jù)庫時的一些限制條件。掌握這些限制條件,可能會讓數(shù)據(jù)庫升級少遇到一些問題。根據(jù)筆者的了解,這里至少有二個限制條件。
一是壓縮的備份和未壓縮的備份不能夠共存于一個媒體集中。在SQL Server數(shù)據(jù)庫中,如果要對數(shù)據(jù)集進行備份,則首先需要建立一個媒體集。筆者升級完成之后,先對數(shù)據(jù)庫進行了一個完全備份,這個備份沒有采用壓縮技術。后來筆者在測試壓縮備份的時候,卻發(fā)現(xiàn)怎么都不成功。后來根據(jù)錯誤提示查詢了相關資料并進行親自測試,才發(fā)現(xiàn)壓縮的備份和未壓縮的備份不能夠共存于一個媒體集中。筆者后來重新建立了一個媒體集后,備份壓縮技術就可以起作用了。
二是早期版本的SQL Server數(shù)據(jù)庫無法讀取壓縮的備份。為了測試備份壓縮技術的向前兼容性,筆者特意利用備份壓縮后的數(shù)據(jù)庫文件,去恢復2005版本的數(shù)據(jù)庫。注意,這個數(shù)據(jù)庫文件是升級到2008后馬上備份的,也就是說,除了這個壓縮技術外,沒有采用2008的新技術與新對象。但是,卻發(fā)現(xiàn)2005版本的數(shù)據(jù)庫根本不認賬,不認識這個壓縮后的備份文件??梢姡缙诎姹镜腟QL Server數(shù)據(jù)根本無法讀取壓縮后的備份文件。
這是筆者測試后發(fā)現(xiàn)的兩個限制條件。不過筆者查詢了一些官方資料后發(fā)現(xiàn),還有一個重要的限制。如NTBACKUP工具無法共享含壓縮的數(shù)據(jù)庫備份磁帶。不過由于筆者用不到這方面的內(nèi)容,所以也沒有測試是否如此。
問題二:壓縮的效果到底如何?
如果采用了壓縮備份技術,那么備份文件到底可以瘦下來多少呢?這主要跟數(shù)據(jù)庫有關。根據(jù)筆者的了解,如下一些因素會直接影響到最終的壓縮效果。
首先是跟數(shù)據(jù)類型有關。如果數(shù)據(jù)庫中大部分是字符型的數(shù)據(jù),則其壓縮效果會比較好。而如果數(shù)字類型比較多的話,那么采用壓縮備份技術后,備份文件并不能夠小多少。這也給數(shù)據(jù)庫管理元是否要采用壓縮備份技術提供了一個判斷的標準。
其次是數(shù)據(jù)是否加密。正常情況下,如果數(shù)據(jù)庫中的數(shù)據(jù)未加密,則其壓縮的效果會比較明顯。相反如果數(shù)據(jù)庫的數(shù)據(jù)加密了,則其壓縮的程度就會小很多。如數(shù)據(jù)庫管理員利用透明數(shù)據(jù)加密方法來加密整個數(shù)據(jù)庫,則采用壓縮備份技術之后,壓縮備份并不會將數(shù)據(jù)庫減小多少,甚至根本不會減小。
再者,跟數(shù)據(jù)表設計也有關系。一般情況下,如果表設計比較合理,則其壓縮的效果就會好許多。如某頁中包含多個行,而其中的某個字段包含相同的值,則該值就可以獲得比較大的壓縮率。與之相反,如果字段中的數(shù)據(jù)大部分是隨機數(shù)據(jù)(即使只有稍微的差別),則其壓縮備份的大小幾乎與未壓縮的備份相同。這也就是說,要想取得比較好的壓縮效果,則在數(shù)據(jù)庫設計時,就需要考慮。如可以采用一些列表字段供用戶選擇,就可以提高最終備份文件的壓縮效果。
問題三:壓縮備份對于性能的影響如何?
數(shù)據(jù)庫采用壓縮備份之后,對于數(shù)據(jù)庫的影響是雙方面的,即有利也有害。
利是直接跟上面所說的數(shù)據(jù)庫壓縮效果相關。因為同一個數(shù)據(jù)庫的壓縮備份文件要比原來的備份文件要小,所以壓縮備份所需要的設備輸入輸出通常比較少,所以可以大大提高備份速度。而且,數(shù)據(jù)庫進行異地備份的話,還可以大大縮短網(wǎng)路傳輸?shù)臅r間。所以,當數(shù)據(jù)庫的壓縮效果越好,則對于數(shù)據(jù)庫的性能,也會有很大的改善。
不利之處就在于資源的消耗方面。如果采用了壓縮備份技術,則壓縮會顯著增加CPU的使用率。而壓縮進程所占用的額外CPU可能會對兵法操作產(chǎn)生消極的影響。為了盡量減少這個不利影響,可以采取的措施就是調(diào)整SQL Server數(shù)據(jù)庫的備份策略。如把備份時間放在午夜時分。那時候,基本上沒有用戶使用數(shù)據(jù)庫,或者數(shù)據(jù)庫的使用幾率會大大降低。此時,就是多一些額外的CPU消耗,用戶也很難察覺到。
另外在數(shù)據(jù)庫中,也可以通過降低優(yōu)先級的方式,來降低壓縮備份對數(shù)據(jù)庫的不利影響。如當發(fā)生CPU爭用時,此備份的CPU使用就會受到資源控制其的限制。通過將特定的用戶會話映射到限制CPU使用的資源調(diào)控器工作負荷來實現(xiàn)。不過這個實現(xiàn)起來比較復雜,以后若有機會,筆者將會專題講述。對于大部分企業(yè)來說,數(shù)據(jù)庫的使用都有很明顯的高發(fā)期與低潮期。只需要稍微調(diào)整一下備份策略,在數(shù)據(jù)庫使用低潮期進行壓縮備份,就可以很輕松的避免壓縮備份所帶來的負面影響。而完全不需要吃力不討好,采用這么復雜的解決方案。即使像銀行類這些金融機構,在晚上12點之后用戶也會大量的減少。此時他們釋放出來的CPU給壓縮備份使用已經(jīng)足夠了。
還好筆者以前采取的備份策略,就是在晚上12點之后讓數(shù)據(jù)庫進行自動備份。所以這次采用了壓縮備份之后,對于性能的影響可以忽略。
問題四:如何啟用壓縮備份?
默認情況下,數(shù)據(jù)庫在執(zhí)行備份的時候,是不采用壓縮備份的。如果數(shù)據(jù)庫管理員出于特定的需要要啟用壓縮備份的話,就需要管理員去手工啟動。壓縮備份的默認行為是數(shù)據(jù)庫系統(tǒng)中的備份壓縮默認選項服務器級配置來決定的。
如需要啟用壓縮備份策略,只需要經(jīng)過簡單的三個步驟即可。
第一步:打開數(shù)據(jù)庫對象資源管理器,右鍵單擊需要啟用壓縮備份策略的那個服務器,然后打開屬性對話框。
第二步:單擊數(shù)據(jù)庫設置節(jié)點。找到備份和還原選項卡。在壓縮備份頁簽中顯示了備份壓縮默認設置的當前配置。這個“壓縮備份”選項決定了數(shù)據(jù)庫在備份的時候是否要才用壓縮備份策略。如果選中的話,默認情況下數(shù)據(jù)庫將啟用壓縮備份。
第三步:建立新備份媒體。筆者在上面提到過,壓縮備份與未壓縮備份不能夠存儲在同一個媒體集中。如果數(shù)據(jù)庫管理員是中途啟用這個壓縮備份策略的。即在原先的備份媒體中已經(jīng)有未壓縮的備份文件,那么數(shù)據(jù)庫管理員要么需要刪除原有的備份文件,要么就是重新建一個備份媒體。筆者的意見是重新建立別分媒體,而保留原有的備份文件。這主要是出于安全的考慮。萬一壓縮備份因為某些原因不成功,則仍然可以有補救措施。
壓縮備份是SQLServer數(shù)據(jù)庫推出的一個新技術。筆者以為,如果企業(yè)數(shù)據(jù)庫容量比較小的話,沒有必要采用這個壓縮備份。只有數(shù)據(jù)庫容量比較大,或者要進行異地備份的情況下,采用壓縮備份的效果才會顯現(xiàn)出來。由于壓縮備份有比較大的限制條件和管理難點,數(shù)據(jù)庫管理員還是需要在性能、壓縮效果等方面評估壓縮備份可能會給企業(yè)帶來的效果。評估之后再進行取舍,是否要采用壓縮備份。
相關文章
一個刪選數(shù)據(jù)的例子,使用GROUP、DISTINCT實例解析
今天遇到的問題,糾結(jié)了一上午,終于解決了。在此記錄下來,自我認為還有很多類似的問題都可以套用這段代碼2013-09-09SQL?Server?DATEDIFF()?函數(shù)用法
這篇文章主要介紹了SQL?Server?DATEDIFF()?函數(shù)的定義和用法,通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-12-12SQL Server 中查看SQL句子執(zhí)行所用的時間
在MSSQL Server中通過查看SQL語句執(zhí)行所用的時間,來衡量SQL語句的性能。2009-07-07SQL SERVER使用REPLACE將某一列字段中的某個值替換為其他的值
本節(jié)主要介紹了SQL SERVER使用REPLACE將某一列字段中的某個值替換為其他的值,需要的朋友可以參考下2014-08-08數(shù)據(jù)庫性能優(yōu)化二:數(shù)據(jù)庫表優(yōu)化提升性能
數(shù)據(jù)庫表優(yōu)化包括:設計規(guī)范化表、消除數(shù)據(jù)冗余、適當?shù)娜哂?、增加計算列、索引、主鍵和外鍵的必要性等等,需要了解的朋友可以參考下2013-01-01