Sybase データベースをダンプすると、テーブルにデータがあるかどうかは問題ではないようです。ファイル サイズは同じです。これは、ダンプ ファイルがバイナリで論理的ではないため、ダンプ ファイルのファイルはデータベースに割り当てられたサイズに基づいていることが原因であると言われています。Oracle が論理ダンプ ファイルを使用できることは知っていますが、Sybase に同様のことをさせることはできますか、またはダンプ ファイルのサイズを小さくするための他の卑劣な方法はありますか?
3 に答える
すでに compress_level 9 を使用していて、さらに圧縮したい場合は、bzip2 でファイルを再圧縮することができます。
圧縮ファイルを単純に bzip2 すると、最大 10% の改善が得られます。解凍して再圧縮すると、30% 程度の改善が見られる場合があります。ただし、Sybase がファイルをロードするには、ファイルを再度圧縮解除または gzip する必要があることに注意してください。
gunzip -c pubs_1.dmp | bzip2 > pubs.dmp.bz2
バージョン 12 あたりから、ASE で圧縮ダンプを実行できるようになりました。
構文は次のとおりです。 dump database database_name to file_name [ with compression=compress_level]
圧縮レベルは 0 ~ 9 です。0 は圧縮なし、9 は最大です。圧縮すればするほど、ダンプの実行中の CPU 使用率が高くなります。サイズとパフォーマンスの適切なバランスを見つけるために、少しテストを実行する必要があります。
ダンプをロードするために特別なコマンドは必要ありません。
上記のリンク(構文は)はsybaseのドキュメントを指しているので明らかに正しいですが、コメントは誤解を招く可能性があります。
単純な形式の構文は次のとおりです。
データベース{database_name}を"compress:: {#compression_level}::{stripe_device}"にダンプします
例:データベースmydbを「compress :: 1 :: / sybase_dumps/mydb_17022009」にダンプします
データベースダンプのロードに関しては、::compress;オプションを再度指定する必要があります。
例えば。「compresss::/ sybase_dumps/mydb_17022009」からデータベースmydbをロードします
圧縮レベルは不要であり、それに続く余分な区切りコロンも不要であることに注意してください。
バランスを見つけるためのテストは良い点です。ダンプがかなり長くかかると予想されるほど、覚えておいてください。1〜3は十分すぎると思いますが、6を超えたことはありません。収穫逓減は、それだけの価値はありません。
もし私が必死だったら、上記のようにファイルをbzip2で圧縮します{獲得ポイント}。これが本番ホストの場合、ファイルを別のホストに送信してこれを実行します。リソースのヒットはかなりのものになる可能性があります。