Hi,
It seems you only have databases without logging and you only rely on checkpoints in order to prevent
data loss.
As I described yesterday, normally databases are set up with logging, in order to not lose a single transaction.
Your setup is quite insecure to prevent data loss. This does not depend on which type of disks you have,
but how the database is setup.
We have databases with several hundred gigabytes running, of course with unbuffered logging, replication
to a second (or third) instance (in a different location) and applications which take care about transaction handling.
It seems that the installation in your environment has been done without respecting any recommended
procedures.
When your goal is to not lose any data due to an unclean shutdown, modify the databases to be at least
buffered (better unbuffered) logging. (that can be done with ontape, look up the -b option, even with a fake backup).
In case the application has no idea of transactions, each single statement will be handled as a separate transaction
by the server.
I would not expect the database to run significantly slower because of the logging, since your data is not that huge.
In order to do this, allocate some logical logs (check the number of logs you have and see how they fill between regular checkpoints
(onstat -l is your friend). The logs are the storage where transactional data is stored, which is used for recovery.
The server is able to start from the latest checkpoint and applies the logs which are still on disk in order to get to the latest
healthy (consistent) state.
You might want to backup the logs to a separate machine to allow a recovery in case of fatally losing the machine
(mostly because of human errors, Murphy is everywhere).
If this is not your primary concern to be able to restore up to the latest transaction in case of a machine loss,
but the (virtualized) machines should just not lose data in case of a unclean shutdown,
it might be sufficient to set LTAPEDEV to NUL (on Windows, or /dev/null on Linux, which is our setup for test systems).
Then you do not need to bother with logical log backup and only rely on a full backup.
Note that this is not a recommended setup, but better than the actual one, if I understand correctly what your current situation is.
By the way, the RTO_SERVER_RESTART would work in this setup and generate checkpoints which are happening depending on the load.
But anyway, in case of an unclean shutdown, the database would recover the transactions since the last checkpoint,
which should give yourself (and your boss...) a better sleep.
This should work with any server version (I understand you have an older 11.70, but the same applies to newer versions).
14.10 would be the recommended version for now, unless you are encountering issues with your current applications,
which seem to be running with an old client sdk (however, 14.10 should be able to communicate with an old client
without real issues.).
Best,
Original Message:
Sent: 11/7/2025 4:53:00 PM
From: Joel Schumacher
Subject: Checkpoints in the days of SSD drives
I'm wondering about recommendations for checkpoints in today's era of SSD drives.
Online (as opposed to sqlturbo) dates back to when was it? '93? '94? And I'm assuming that's when the whole cache started and checkpoints.
Disk I/O with a traditional HDD was very costly. You had to engage the drive, get it to spin up to speed, the read/write head had to be physically moved to the right point to read or write data. With all of these mechanical operations, this was going to take a while. And, Informix had 5 minute check points.
I just installed 14.10.12.5 and it is still setting the same default parameters of 5 minute check points.
I just wrote about a client that wasn't doing regular checkpoints (RTO_SERVER_RESTART was set to 60). My boss/owner was shocked that data wasn't being written to disk immediately. Even 5 minutes of potential loss was shocking. Per his request, (and before I figured out the cause), I created a job to do a manual checkpoint (onmode -c) every 60 seconds. Back in the day, you might say that's too often. It could still be doing one checkpoint when the next one starts.
But what about today with solid state drives?
Back in the day, I was on a Unix system and you had raw and cooked spaces and we used raw. So you had a contiguous section of disk and Informix took control of it. Sun Solaris (unix) didn't know anything about that area of disk, didn't control it. Informix had full control.
With the current system, it's Windows. So Informix goes through Windows for disk access.
And it's a windows file, not raw space carved out on the disk. So I'm not guaranteed my dbspaces files are contiguous. Plus, these are operating system files so you have to start with the root directory, navigate trough entries, find the sub directory, navigate to it, then look through it, to find out where the dbspace file starts on disk and all of it's segments. So it's SSD, but also has all of these complications. And if I recall, to get to the 75% point of a file that's not contiguous, you have to navigate serially through each piece of file to get to specific piece you need. So there's all of that.
AND, on top of that, we're on virtual servers. So the underlying files that are the actual storage for the virtual drives could be all over the physical disk drive too. Even if it looks contiguous on Windows, it could be spread all over the disk of the machine providing the VM.
So, even though they're SSD drives, there could be several slow downs.
I'd also like to state that our database at most has about 3 gb of data. And I don't think any of our clients have the memory allocated to Informix above 1gb. Most probably have the install default, which might be 128mb.
If my boss wants to stick with the 1 minute checkpoint intervals, is this something we should be able to do with SSD drives? if not, what is safe? Or what do I have to look at? I assume memory for cached pages - the more, the longer a checkpoint can take. Probably speeds of the drives. CPU on the VM.
------------------------------
Joel Schumacher
------------------------------