[pgsql-jp: 26324] Re: 一定期間になったらレコードを削除

松嶋祥文 mats @ itboost.co.jp
2002年 6月 8日 (土) 09:31:05 JST


松嶋@ITBoost です。

PHP側での対策ですが

| ログの保存期間を3年とした場合、
| test1のレコードを削除するような機能をつけたいのですがサーバの
| crontab等でバッチをつくり削除するという事くらいしか浮びません・・・。
| あまりスマートなアイディアじゃないですよね。。。

掲示板の表示画面のプログラム内や、ユーザ定義のデータベース
接続用関数など、どこでもいいですが、一定の確率でその処理が
行われるようにするというのはいかがでしょうか?

例えば、

function MyDbConnect() {
  $con = pg_connect( ... );

  SRand( (double) MicroTime() * 123456 );
  if( Rand(0, 1000) <= 20 ) {
    pg_exec($con, "delete from log where regist_date + '3 years' < now() " );
  }

}

みたいな感じですれば、DB 接続毎に 2% の確率で削除が行われます。

DELETEに非常に時間がかかるようであれば、バックグラウンドで
上記処理が行われるようにするのが良いかとおもいます。詳細は
  http://www.itboost.co.jp/phptips/view.php?fCID=21
のあたりを。

| 今のところこれくらいしか浮かんでこないのですが
| PostgreSQL側でそのような事が実装出来たらよいのですが・・・。

すみません、こちらは思いつきません。

-- 
                                               ,-------------+
+---------------------------------------------'              |
| システム開発&エンジニアスクール アイティーブースト       |
| 取締役副社長   松嶋 祥文 [ mats @ itboost.co.jp ] ,--------------+
| +----------------------------------------------'               |
| | ★ Linux 関連の技術情報満載!      http://www.itboost.co.jp/ |
+-|■秀和システムより「JSP&サーブレットプログラミング」発売中!■|
  +--------------------------------------------------------------+




pgsql-jp メーリングリストの案内