[pgsql-jp: 41129] Re: DBファイルの書込み回数の制限について

花田 茂 hanada @ metrosystems.co.jp
2012年 6月 13日 (水) 21:27:40 JST


花田です。

(2012/06/13 19:23), S.Watanabe wrote:
> 組込み機器にPostgre(バージョンは8.3.1)を実装しようとしています。
> 機器のディスクに書き込み回数の制限あるため、Postgreの
> ディスク書込み回数を1時間に1回に抑えられないか検討しています。

本題とは関係ありませんが、8.3.x は来年2月でコミュニティサポートが終了す
るので、新し目のリリースを使ったほうがよいと思います。もし環境面などの理
由で 8.3 が必須の場合でも、各種バグフィックスの入った最新の 8.3.19 にす
ることをお勧めします。

> 上記設定でint型5つからなるレコードを100レコード追加すると
> 1)SDカードのDBファイルが即時に更新されてしまいます。
> これを1時間に1回だけ更新するようにしたいのですが、
> どなたかご存じの方いらっしゃらないでしょうか?
> 運用ログからはチェックポイントやバキューム等が動いた形跡はありません。

checkpoint_segments = 3 なので、これが契機になってチェックポイントが発生
している可能性があります。log_checkpoints のデフォルトは off ですが、こ
れを on に設定してもチェックポイント発生が記録されないでしょうか?

チェックポイントは別にしても、共有バッファがあふれるケースや DBクラスタ
内の pg_stat_tmp/* や pg_clog/*、global/pg_control といったファイルへの
書き込みもあるので、設定での書き込み頻度制御は難しいのではないかと思います。
# もし可能ならばぜひ知りたいです

組み込み機器とのことですが、RAM に余裕があり DB サイズがそれほど大きくな
らない(データファイルが肥大化する前に VACUUM できる)のであれえば、システ
ム起動時にDBクラスタ全体を SD カードから RAM ディスクにコピーして、そこ
から PostgreSQL を起動してしまう、という手は使えないでしょうか?これなら
ば書き込みはRAMディスクに対してだけ発生するので、書き出し頻度を気にする
必要はなくなるかと。ただし、この手では PostgreSQL シャットダウン後に DB
クラスタ全体を RAM ディスクから SD カードに書き戻す必要があるのに加え
て、DB クラッシュ時のデータ損失がかなり大きくなりますので、それらが許容
できるか?という別の課題が出てきますが…

-- 
株式会社メトロシステムズ
  花田 茂
Mail : hanada @ metrosystems.co.jp
 Tel : 03-5951-1219
 Fax : 03-5951-2929


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