現在位置: ホーム / ドキュメント / ノウハウ集 / データベースをパックするにはどうしたらいいですか?

データベースをパックするにはどうしたらいいですか?

だって放っておくとデータベースのファイルサイズがどんどん大きくなっていきますよね。

理由

PloneはZODBというオブジェクトデータベースを使っており、コンテンツが更新されると、それまでのデータがあったディスクの場所には手をつけずに、更新したオブジェクトを新しい場所に書くようになっています。なので、放っておくとコンテンツ編集や削除によって、データベースはどんどん大きくなります。Ploneではコンテンツを過去の状態に戻すこともできますが、そのバージョン管理機能はこのZODBの機構を使って実現しています。

パックというのは、最新以外の情報をすべてディスク上から消して、最新のデータだけをディスク上のデータベースファイル上で再配置する処理です。これによって最新のもの、あるいはパックの時に指定する期間のデータしか残らないので、データベースのサイズが小さくなります。

方法

Plone3以降では、

  1. 管理者アカウントでPloneサイトにログインします。
  2. サイト設定を選び、さらにメンテナンスを選びます。
  3. コントロールパネルのメンテナンス画面の下半分に、Zopeデータベースのパックがあります。
  4. パック後に残すオブジェクト履歴の日数を入れる枠があり、そこに初期値として "7" が入っています。これを自分の希望する値に変えて、すぐ下の「データベースを今すぐパックする」ボタンを押します。
  5. パックの処理時間は、データベースのサイズや、オブジェクトの粒度、個数、サーバーやディスクの性能によりますが、小さければ瞬時に終わります。通常は数秒から数分かかります。

古いパージョンのPloneでは、サイト設定の中にメンテナンスの項目がありません。その場合は、ZMIに直接アクセスします。

  1. そのPloneサイトを擁するZopeルートのURLの右側に "/manage" を付加してアクセスします。たとえば、 http://localhost:8080/manage とかです。
  2. 青いZMI画面が表示されたら、左にある幅の狭い枠から Control Panel を選びます。もし Control Panel が見つからなければ、アクセスした先がZopeルートでないかもしれません。
  3. Control Panel を選ぶと、右側のフレームの下のほうに、Database Management という項目があるので、これをクリックします。
  4. Databasesとして、main と temporary の二つが見えます。  main をクリックします。
  5. 下のほうに、残すべき日数を入れるフィールドがあり、初期値として "0" が設定されているはずです。これを自分の希望する数字に変更して、すぐ隣の Pack ボタンをクリックします。
  6. 通常は main だけで十分ですが、temporary のほうの Database Size が大きくて、なおかつサーバーをリスタートする予定がないような場合は、main と同様にパック作業をします。temporary はメモリー上に格納されており、サーバーリスタートによってゼロから再構築されます。

注意点

Plone3以降でも古いバージョンでも、データベースのパックは Zope 上で権限を持つユーザ のみがこの操作可能です。Plone サイトの管理者権限を持っているだけでは操作できないこ とがあるのでご注意ください。