[pgsql-jp: 38667] Re: Sigres vs. PG8.3 asynchronous_commit

Hideyuki Kawashima kawasima @ cs.tsukuba.ac.jp
2007年 8月 21日 (火) 11:23:47 JST


板垣様

こんにちは。川島です。ご質問ありがとうございます。
synchronous_commit = off
詳細をわかっていないのですが、おそらく殆ど同様な性能になるのではないかと
思います。
ただし、下記点で違いがあるかもしれません。

1: WALWriteLock
現状のPostgreSQLではWALバッファをwriteするにあたりWALWriteLockを取得する
と理解していますが、Sigresはこのロックを取得しませんので、Sigresのほうが
若干(10〜20%程度)高速になるかもしれません。また、SigresではXLogWrite
関数が一行マクロに変更されていますので、そこでも本当に若干の性能差がある
かもしれません。

2: AdvanceWALInsertBuffer
SigresのWALバッファのディスクへの書き込みはAdvanceWALInsertBuffer関数に
おいてのみ行われます。 synchronous_commit=offにより、同関数におけるディ
スクへの書き込みがなくなるならば、Sigresよりも速くなるかもしれません。

DBMSへの書き込み処理が高速化されるのは大変嬉しいことです。
PostgreSQLにおいて一層の高速化が実現されることを願っています。
次の課題はWALInsertLockを取得せずに並列的にログを書き込む手段を実装する
ことだと思い、現在設計をしているところです。
今後ともよろしく御願い申し上げます。


川島英之

ITAGAKI Takahiro wrote:
> 板垣です。
> Sigres と PostgreSQL 8.3 の新機能について、以前から疑問を持っていました。
> ちょうど お話が挙がったので、質問させてください。
>
> Hideyuki Kawashima <kawasima @ cs.tsukuba.ac.jp> wrote:
>
>   
>> 私はPostgreSQLにおける書き込み処理を高速化したシステムであるSigresという
>> ソフトウェアを開発しています。
>>     
>
> PostgreSQL 8.3 には、新しく「wal writer process」が追加され、
> コミットとは別の契機で、定期的に WAL がフラッシュされるようになります。
> 特に、設定パラメータで「synchronous_commit = off」とすると、コミットの契機では
> WAL をフラッシュしなくなり、常に wal writer が書くようになります。
> そのため、WAL の同期書き出しで待たされず、更新処理がかなり速くなります。
> (クラッシュしたときに直近のコミット結果を失うトレードオフもありますが。)
>
> この新機能と、Sigres での変更とは、動作に違いがありますでしょうか?
> 違いがあれば、用途に応じて 8.3 と Sigres を使い分けることを考えています。
> どうぞよろしくお願いします。
>
>
>
>
>   

-- 
Hideyuki Kawashima (Ph.D.), University of Tsukuba,
Graduate School of Systems and Information Engineering
Assistant Professor, TEL: +81-29-853-5322





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