On 10/05/10 08:54, Yan Cheng CHEOK wrote:
I realize that, when I have 1 threads perform frequent read, and another 3 
threads to perform frequent write. I will get the following error log 
*sometimes*

2010-05-07 17:16:10 MYT LOG checkpoints are occurring too frequently (22 
seconds apart)
2010-05-07 17:16:10 MYT HINT Consider increasing the configuration parameter 
"checkpoint_segments".
2010-05-07 17:31:37 MYT LOG checkpoints are occurring too frequently (29 
seconds apart)
2010-05-07 17:31:37 MYT HINT Consider increasing the configuration parameter 
"checkpoint_segments".

This is a performance warning.

My observation is, even the above logging happen, "write" operation is success 
when I exam the content of database.

What happen is that, the read operation fail.

Er, what?

read thread is spawned after 3 write threads, and read thread will only be considered as 
"success", only when its read result is same as what is being written by the 3 
threads. The read threads will perform retry for every 200ms, lasted for 4 seconds.

OOOoooh, the readers aren't failing at all, they're just not returning the results you expect.

At a guess, your code has a race condition, where readers are not synchronizing themselves properly with writers. Remember that readers cannot see what writers have written until the writer commits that work.

I was thinking, what is the consequent of increasing "checkpoint_segments", 
say, from 3 to 6. Any bad thing might happen?

No, nothing bad. It can increase the size of the WAL stored on disk, but that's about it.

--
Craig Ringer

--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

Reply via email to