在資料庫的備份過程中有很多引數,前幾日發現公司的備份資料庫job執行的很慢,就去研究了一下,發現在備份程式中都沒有啟用壓縮,加上壓縮以後有發現效率提高了不少,本篇就幾個壓縮相關的引數來看一下備份資料庫的過程中如何提高備份的效率。
為了更好地了解資料庫備份,我們首先要知道**以及引數的含義。
普通**:
backup database 『備份資料庫名稱』加快備份進度的幾個關鍵引數:to disk = '
位址+bak檔名稱
' ;
1.buffercount--指定用於備份操作的 i/o 緩衝區總數。可以指定任何正整數
2.maxtransfersize--指定要在 sql server 和備份介質之間使用的最大傳輸單位。可能的值是 64 kb的倍數,最大 4 mb。
3.compression--壓縮備份選項。
4.checksum--驗證資料選項。
5.啟用多個備份集。
這四個中checksum是用來保證資料安全的這裡我們不做討論,由於一般備份也不會用到多個備份集,這裡我們主要討論前三個帶來的影響,當然對於資料量級比較大的可以採用多備份集,尤其不同磁碟的備份集將會大大提高效率。
首先是常規沒有壓縮的情況下的備份如圖1:
圖1 資料頁數282295,總共花費了32.147秒。接下來我們看一下當加了壓縮等引數後的表現。
增加壓縮引數的情況如圖2:
圖2頁數接近,花費的時間是19.524秒,單位備份速度大幅提公升到112.957/s。
新增了compression、maxtransfersize、buffercount三個引數的:
圖3這個就快了不少,花費了17.6秒,寫入速度為125.228m/s。
適當縮小maxtransfersize、buffercount,如圖4:
圖4如圖所示,縮小maxtransfersize、buffercount後相應的寫入速度略微下降。時間也略微提高。
大幅提公升buffercount的數值,能夠提公升寫入速度。
圖5緩衝區使用的總計空間由下面公式確定:buffercount*maxtransfersize,這裡需要知道該公式結果不能大於分配記憶體,所以要注意伺服器的最大記憶體以免記憶體溢位。
除了以上幾個條件,我也做了幾個相關的其他條件的修改來適應不同的備份資料,例如資料驗證checksum等都會增大備份資料的時間。
1> 通過壓縮前後檔案的大小對比可知道到壓縮比率。
2> 對已啟用壓縮的資料庫進行壓縮備份,cpu消耗會變得更高
壓縮主要因素包括:
1.資料型別。字元資料的壓縮率要高於其他型別的資料。
2.資料重複的比例越高壓縮越好,類似於資料庫壓縮(頁壓縮)。
通常,如果某頁包含多個行,而其中的某個字段包含相同的值,則該值可獲得較大的壓縮。相反,對於包含隨機資料或者每頁只有乙個很大的行的資料庫,壓縮備份的大小幾乎與未壓縮的備份相同。
不難發現,以上主要測試三個資料,在合理外圍內越大越能提高效率。同時經過研究還發現,備份壓縮後,還原的效率也會提高。
compression、maxtransfersize、buffercount配合伺服器的效能就能大幅提高備份效率。優點是顯而易見的對於備份時間,備份檔案大小都有提高。
2壓縮備份資料庫 MySQL資料庫備份
前端監控 www.webfunny.cn 只需要簡單幾步,就可以搭建一套屬於自己的前端監控系統,快來試試吧。github webfunny monitor mysqldump 是 mysql 自帶的邏輯備份工具。它的備份原理是通過協議連線到 mysql 資料庫,將需要備份的資料查詢出來,將查詢出的資...
備份,還原,壓縮資料庫
壓縮access資料庫 region 壓縮access資料庫 壓縮access資料庫 public static void compactaccess string dbpath 宣告臨時資料庫名稱 string temp datetime.now.year.tostring temp dateti...
Mysql資料庫備份 資料庫備份和表備份
mysql中資料備份使用的命令是 mysqldump命令將資料庫中的資料備份成乙個文字檔案。表的結構和表中的資料將儲存在生成的文字檔案中。mysqldump命令的 工作原理很簡單。它先查出需要備份的表的結構,再在文字檔案中生成乙個create語句。然後,將表中的所有記錄轉換成一條insert語句。然...