当我转储Sybase数据库时,表中是否有数据似乎并不重要,文件大小是相同的。我被告知这是因为我的转储文件是二进制文件而不是逻辑文件,因此转储文件的文件基于分配的数据库大小。我知道Oracle可以使用逻辑转储文件,但是我可以让Sybase做类似的事情,还是有其他偷偷摸摸的方法来降低转储文件的大小?

有帮助吗?

解决方案

从版本12的某个地方开始,您就可以在ASE中执行压缩转储。

语法为: dump database database_name to file_name [with compression = compress_level]

compress_level是0-9。 0表示无压缩,9表示最多。压缩得越多,运行转储时的CPU使用率就越高。您只需进行一些测试即可找到尺寸与性能之间的适当平衡。

加载转储不需要特殊命令。

其他提示

如果您已经在使用compress_level 9但仍需要更多压缩,则可以使用bzip2重新压缩文件。

如果您只是bzip2压缩文件,您将获得约10%的改进。如果您解压缩并重新压缩,您可能会看到30%范围内的改进。但请记住,您必须再次解压缩和/或重新压缩文件,以便Sybase加载它。

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

虽然上面的链接(语法是)显然是正确的,因为它指向sybase文档,但这些注释具有误导性。

简单格式的语法是:

将database database {database_name}转储为“compress :: {#compress_level} :: {stripe_device}" 去

例如:dump database mydb to“compress :: 1 :: / sybase_dumps / mydb_17022009”

在加载数据库转储方面,需要再次给出:: compress;选项。

例如。从“compresss :: / sybase_dumps / mydb_17022009”加载数据库mydb

请注意,压缩级别不是必需的,也不是后面的额外分隔冒号。

找到平衡点的测试是一个很好的观点,请记住,您希望转储需要更长的时间。我发现1-3比较充足,我从未超过6,收益递减是不值得的。

如果我是绝望的,我会按照上述的说法bzip2 {point earn}。如果这是一个生产主机,我会将文件发送到另一台主机并执行此操作。资源损失可能相当大。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top