Existe alguma maneira de reduzir o tamanho arquivo de despejo de um banco de dados Sybase?

StackOverflow https://stackoverflow.com/questions/206787

  •  03-07-2019
  •  | 
  •  

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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top