当我转储Sybase数据库时,表中是否有数据似乎并不重要,文件大小是相同的。我被告知这是因为我的转储文件是二进制文件而不是逻辑文件,因此转储文件的文件基于分配的数据库大小。我知道Oracle可以使用逻辑转储文件,但是我可以让Sybase做类似的事情,还是有其他偷偷摸摸的方法来降低转储文件的大小?
答案 0 :(得分:2)
如果您已经在使用compress_level 9但仍需要更多压缩,则可以使用bzip2重新压缩文件。
如果您只是bzip2压缩文件,您将获得约10%的改进。如果您解压缩并重新压缩,您可能会看到30%范围内的改进。但请记住,您必须再次解压缩和/或重新压缩文件,以便Sybase加载它。
gunzip -c pubs_1.dmp | bzip2 > pubs.dmp.bz2
答案 1 :(得分:1)
从版本12的某个地方开始,您就可以在ASE中执行压缩转储。
The syntax is:将database database_name转储到file_name [with compression = compress_level]
compress_level是0-9。 0表示无压缩,9表示最多。压缩得越多,运行转储时的CPU使用率就越高。您只需进行一些测试即可找到尺寸与性能之间的适当平衡。
加载转储不需要特殊命令。
答案 2 :(得分:0)
虽然上面的链接(语法是)显然是正确的,因为它指向sybase文档,但这些注释具有误导性。
简单格式的语法是:
将database database {database_name}转储为“compress :: {#compress_level} :: {stripe_device}” 去
例如:将数据库mydb转储到“compress :: 1 :: / sybase_dumps / mydb_17022009”
在加载数据库转储方面,需要再次给出:: compress;选项。
例如。从“compresss :: / sybase_dumps / mydb_17022009”加载数据库mydb
请注意,压缩级别不是必需的,也不是后面的额外分隔冒号。
找到平衡点的测试是一个很好的观点,请记住,您希望转储需要更长的时间。我发现1-3比较充足,我从未超过6,收益递减是不值得的。
如果我是绝望的,我会按照上述的说法bzip2 {point earn}。如果这是一个生产主机,我会将文件发送到另一台主机并执行此操作。资源损失可能相当大。