Existe-t-il un moyen de réduire la taille du fichier de vidage d'une base de données Sybase?

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

  •  03-07-2019
  •  | 
  •  

Question

Lorsque je vide une base de données Sybase, la taille des fichiers est identique, qu'il y ait ou non des données dans les tables. On m'a dit que c'était dû au fait que mon fichier de vidage était binaire et non logique; le fichier du fichier de vidage est donc basé sur la taille allouée de la base de données. Je sais qu'Oracle peut utiliser des fichiers de vidage logiques, mais puis-je demander à Sybase de faire quelque chose de similaire, ou existe-t-il d'autres moyens sournois de réduire la taille du fichier de vidage?

Était-ce utile?

La solution

Depuis quelque part autour de la version 12, vous pouvez effectuer des vidages compressés dans ASE.

La syntaxe est la suivante: dump database nom_base_données vers nom_fichier [avec compression = niveau_compression]

compress_level est compris entre 0 et 9. 0 n'est pas une compression et 9 est le plus. Plus vous compressez, plus l'utilisation du processeur est importante pendant l'exécution du dump. Il vous suffit de faire quelques essais pour trouver le juste équilibre entre taille et performance.

Aucune commande spéciale n'est nécessaire pour charger le dump.

Autres conseils

Si vous utilisez déjà compress_level 9 et souhaitez toujours plus de compression, il est possible de recompresser le fichier avec bzip2.

Si vous bzip2 simplement le fichier compressé, vous obtiendrez une amélioration d'environ 10%. Si vous décompressez et recompressez, des améliorations de l'ordre de 30% peuvent apparaître. Notez toutefois que vous devrez décompresser et / ou gzip le fichier à nouveau pour que Sybase puisse le charger.

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

Alors que le lien (la syntaxe est) ci-dessus est évidemment correct car il pointe vers la documentation de Sybase, les commentaires sont trompeurs.

La syntaxe au format simple est la suivante:

sauvegarde la base de données {nom_base} en " compress :: {# niveau_compression} :: {stripe_device} " aller

Exemple: dump database mydb pour "compresser :: 1 :: / sybase_dumps / mydb_17022009"

En termes de chargement de la base de données, l'option :: compress; doit être donnée à nouveau.

par exemple. charge la base de données mydb à partir de "compresss :: / sybase_dumps / mydb_17022009"

Notez que le niveau de compression n'est pas requis, pas plus que les deux points de séparation supplémentaires.

Les tests visant à trouver votre équilibre sont un bon point. Rappelez-vous que plus vous vous attendez à ce que le vidage prenne beaucoup plus de temps. Je trouve que 1-3 est plus que suffisant, je n’ai jamais dépassé 6, les rendements décroissants ne le valent pas.

Si j'étais désespéré, je bzip2 le fichier comme décrit ci-dessus {point gagné}. S'il s'agissait d'un hôte de production, j'enverrais le fichier à un autre hôte et le ferais. Les ressources affectées peuvent être considérables.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top