Existe alguma maneira de reduzir o tamanho arquivo de despejo de um banco de dados Sybase?
Pergunta
Quando eu despejar um banco de dados Sybase, isso não parece importar se há dados nas tabelas ou não, o tamanho do arquivo é o mesmo. Eu tenho dito que este é baixo para o fato de que meu arquivo de despejo é binário e não lógico, portanto, o arquivo do arquivo de despejo é baseada no tamanho alocado do banco de dados. Eu sei que a Oracle pode usar arquivos de despejo lógicas, mas posso conseguir Sybase para fazer a algo semelhante, ou há outras maneiras sorrateiras de conseguir o baixo tamanho arquivo de despejo?
Solução
Uma vez que algo em torno de versão 12 você tem sido capaz de realizar despejos compactados no ASE.
a sintaxe é: database_name banco de dados despejo para file_name [com compressão = compress_level]
compress_level é 0-9. 0 há compressão e 9 é o mais. Quanto mais você comprimir o maior o uso da CPU, enquanto a execução do despejo. Você só precisa peform um pouco de testes para encontrar um equilíbrio adequado de tamanho versus desempenho.
Não há comandos especiais são necessários para carregar o despejo.
Outras dicas
Se você já está usando compress_level 9 e ainda quer mais compressão, é possível re-comprimir o arquivo com bzip2.
Se você simplesmente bzip2 o arquivo compactado, você vai ter ~ 10% de melhoria. Se você descompactar e re-comprimir você pode ver melhorias na faixa de 30%. Tenha em mente, porém, que você vai ter que un-compressa e / ou gzip o arquivo novamente para que Sybase para carregá-lo.
gunzip -c pubs_1.dmp | bzip2 > pubs.dmp.bz2
Enquanto o link (A sintaxe é) acima é obviamente correta, uma vez que aponta para documentação do Sybase, os comentários são enganosas.
A sintaxe em formato simples é:
banco de dados de despejo {database_name} para "compressa :: {# compression_level} :: {stripe_device}" ir
por exemplo: despejo de banco de dados mydb para "compressa :: 1 :: / sybase_dumps / mydb_17022009"
Em termos de carregar o banco de dados de despejar o :: compressa;. Necessidades de opção a ser dada novamente
por exemplo. mydb banco de dados de carga de "compresss :: / sybase_dumps / mydb_17022009"
Observe o nível de compressão não é necessária nem a adicional separando dois pontos que se seguem.
Os testes para encontrar o seu equilíbrio é um ponto bom, lembre o mais alto você vai esperar o despejo de levar muito mais tempo. Acho 1-3 é mais do que suficiente, eu nunca ter ido acima de 6 dos retornos decrescentes não valem a pena.
Se eu estava desesperada eu bzip2 o arquivo como descrito acima {ponto ganho}. Se este foi um anfitrião de produção eu enviar o arquivo para outro host e fazer isso. hit recurso pode ser considerável.