リンク
インターシステムズ(日) └日本語ドキュメント インターシステムズ(US) (有)エムブイビイ ダイナシステム(株) Googleグループ(英語) Googleグループ(日本語) George James Software cache'infoアーカイブ 【広告】
|
データベースのクリーンアップ その2Global Compress.
前回、Cache' 2009.1の新機能のデータベースクリーンアップ機能を試してみました。1GBまで肥大化したCache.Datを1MBまで縮小できることを確認しましたが、実は前回はクリーンアップとしては理想的なパターンだったので、今回は少し実際に近いパターンで確認してみます。 大量にデータを登録するプログラムを以下のように用意します。 for i=1:1 { //第一階層 for j=1:1:100 { //第二階層 Set ^TEST(i,j)="むかしむかし、あるところにお爺さんとお婆さんがおりました。お爺さんは山へ芝刈りに、お婆さんは川に洗濯に行きました。お婆さんが川で洗濯していると、大きな桃がドンブラコ、ドンブラコと、流れてきます" } } Quit このとき、^TESTは以下のようになっています。 ^TEST(1,1)="むかしむかし、あるところに…"
前回は第一階層のキーのみ使用しましたが、今回は第二階層まで(配列でいうと2次元配列)使用しています。第二階層は1から100までの値が存在します。^TEST(1,2)="むかしむかし、あるところに…" ^TEST(1,3)="むかしむかし、あるところに…" : ^TEST(1,99)="むかしむかし、あるところに…" ^TEST(1,100)="むかしむかし、あるところに…" ^TEST(2,1)="むかしむかし、あるところに…" ^TEST(2,2)="むかしむかし、あるところに…" : ^TEST(2,100)="むかしむかし、あるところに…" ^TEST(3,1)="むかしむかし、あるところに…" : ^TEST(3,100)="むかしむかし、あるところに…" ^TEST(4,1)="むかしむかし、あるところに…" この状態で、第二階層のキーが1の物を残して削除します。 for i=1:1 { if '$D(^TEST(i)) Quit for j=2:1:100 { //第二階層のキーが2から100までを削除 Kill ^TEST(i,j) } } Quit ではデータベースクリーンアップを試してみましょう。 システム管理ポータル → データベース → 空き容量 → (対象データベース行の)クリーンアップ を選択します。 ターゲットサイズは0のまま、OKを押すとバックグラウンドで処理が開始されます。 処理が完了すると、データーベースは941MBまでしか縮小されません。 前回は1MBまで小さくなりましたが、今回はデータベースがほとんど小さくなっていません。なぜでしょうか。 ここまでの流れを簡単に図にしてみました データベースクリーンアップでは末尾の空き領域分だけデータベースを縮小するだけですので、途中の空き領域はそのままとなっています。 実データ領域前方に集中させ、空き領域を空き領域を後方に持ってくることで、クリーンアップを効率的に実行することが出来そうですが、現時点ではその機能は提供されておらず、バックアップ・データベースクリア・リストアといった手順を踏むことでしか実現できません。 機能としては「空き容量」画面の、圧縮リンクから OK押して圧縮を行うのだと思うのですが、 version2013.1では「サポートされていません」エラーが発生します。 将来のバージョンアップに期待したいと思います。 |