I have an application that is heavy in both reads and writes. This is running on ASE 12.5 in a RHEL AS 4.0 environment. It's connected to a RAID 10 array. Under normal load the server performs spectacular. However during periods of heavy updates/inserts once a minute the checkpoint process wakes up and flushes everything to disk. The checkpoint takes from 1 to 3 seconds according to sp_sysmon.
The application reading this DB has a 3 second time limit, so any IO's that are outstanding after 3 seconds are tossed.
I've tried every tunable I could find or think of and I'm hoping someone here might have a home grown solution.
I've tried increaseing the "housekeeper free write percent" all the way to 100%, however I never get a free checkpoint and the output of a 20 minute sysmon shows the housekeeper wasn't doing much (I should fire her).
What's really killing me is that other reads are blocked during a checkpoint, Is it supposed to work like this? Are checkpoints supposed to block other transactions, or is this just because checkpoint pegs the IO, starving other transactions?
Is there some way to say limit the checkpoint process to writing maybe 1 MB/s to disk and let other stuff continue to work? As it is checkpoint seems to consume everything it possibly can and nobody else gets to play while he's at the table.