2008-10-15 65 views
0

當我轉儲一個Sybase數據庫時,表中是否有數據並不重要,文件大小是一樣的。我被告知這是由於我的轉儲文件是二進制文件而不是邏輯文件,因此轉儲文件的文件基於數據庫的分配大小。我知道Oracle可以使用邏輯轉儲文件,但是我可以讓Sybase執行類似的操作,還是有其他一些偷偷取得轉儲文件大小的方法?有沒有辦法減少Sybase數據庫的轉儲文件大小?

回答

1

由於在版本12的某個位置,您可以在ASE中執行壓縮轉儲。

The syntax is:轉儲數據庫DATABASE_NAME到file_name [與壓縮= compress_level]

compress_level是0-9。 0沒有壓縮,9是最多的。壓縮得越多,運行轉儲時的CPU使用率就越高。您只需進行一些測試即可找到尺寸與性能之間的適當平衡。

加載轉儲時不需要特殊命令。

+0

這個效果很好,其中的好處是截斷表,我不需要作爲轉儲的一部分現在有一個效果,因爲壓縮轉儲的過程擠出以前佔用的空表的任何空間!感謝Adam! – ninesided 2008-10-18 22:08:01

2

如果您已經在使用compress_level 9並且仍想要更多壓縮,可以使用bzip2重新壓縮該文件。

如果您只是簡單地使用bzip2壓縮文件,您將獲得〜10%的提升。如果你解壓並重新壓縮,你可能會看到30%範圍內的改進。但請記住,您必須再次解壓縮和/或gzip文件,以便Sybase加載它。

gunzip -c pubs_1.dmp | bzip2 > pubs.dmp.bz2 
0

雖然上面的鏈接(語法是)顯然是正確的,因爲它指向的是sybase文檔,但註釋有誤導性。

簡單格式的語法是:

轉儲數據庫{}數據庫名稱爲 「壓縮:: {#compression_level} {::} stripe_device」 去

如:轉儲mydb數據庫「壓縮: :1 ::/sybase_dumps/mydb_17022009「

在加載數據庫轉儲:: compress;方面需要再次給出。

例如。從「compresss ::/sybase_dumps/mydb_17022009」加載數據庫mydb

注意壓縮級別不是必需的,也不需要後面的額外分隔冒號。

測試以找到您的平衡是一個很好的觀點,記住你越高期望轉儲花費相當長的時間。我發現1-3比較充足,我從未超過6,收益遞減是不值得的。

如果我絕望,我會bzip2文件如上所述{點賺}。如果這是一個生產主機,我會將該文件運送到另一個主機並執行此操作。資源衝擊可能會相當大。

+0

這兩種方法都有效。該文檔指出「with compression = compress_level」是更新和首選的語法。「 」較舊的compress ::選項僅適用於本地存檔;不能使用servername選項。要壓縮到遠程計算機,必須使用首選的compress = compress_level選項。 – AdamH 2009-11-17 15:03:54

相關問題