Abstract

Before a variable length row can be inserted into an Informix table, a page with sufficient space must first be located. That can be slow, particularly with large volatile tables with configuration parameter MAX_FILL_DATA_PAGES enabled to reduce its size. This article describes how the problem can be eliminated on 14.10.xC2 or later versions.

Content

Examples in this article were produced using the provided “stores_demo” database in a Docker container from informix-dockerhub with Informix Dynamic Server (IDS) updated to 14.10.FC11.

The new feature is documented here: Boosted Partition Free Space Caches (PFSC)

There are two relevant configuration parameters which are both enabled by default on later IDS versions:


What is not obvious is that you must specify tables that should have a boosted cache using SQL statements as in this example:

Copy to Clipboard


To list which tables have a boosted cache:


An actual case history follows which illustrates why doing this can be a good idea.

Whenever a production Informix server was restarted for patching, the first transaction afterwards involving such tables was taking longer than 20 seconds, causing a public Web application to fail with a timeout. We devised a procedure to be run after a restart to perform a sequential scan and dummy insert before any real ones, forcing the table to be loaded into the buffer pool and the default light PFSC to be populated (table names have been changed to examples in the “stores_demo” database):

Copy to Clipboard


It was then set to run via a “cron” job shortly after the patching window with:


In our example, that produces the following output (“warehouses” is not listed as it does not have a *SERIAL* column):

date_timetabnamenrowsactionrun_time
24/07/2025 14:25catalog74Started sequential scan0:00:00
24/07/2025 14:25catalog74Started dummy insert0:00:01
24/07/2025 14:25All tasks completed0:00:01

In the real case, the sequential scan of the most problematic table took 1 second whereas the dummy insert took over 20 seconds, proving the main problem was loading PFSC.

We have since declared each table to have a boosted PFSC cache (see SQL already described). We still execute the “sp_load_caches” function shortly after a restart just in case it also helps, but no step now takes more than 2 seconds according to actual output. The Informix message log contains output like this for each of those tables starting around 6 seconds after the instance comes on-line:


Here is a function to list tables containing any kind of VARCHAR column that have boosted PFSC enabled or disabled, or to generate scripts to change that:

Copy to Clipboard

Caveats

PFSC_BOOST is only available from IDS 14.10.xC2 and there were initially related defects, but you can use it with confidence in more recent versions.

Conclusion

Setting MAX_FILL_DATA_PAGES can substantially reduce the size of tables with large variable length columns. However, to improve insert performance, particularly after a restart, make sure you have PFSC (undocumented) and PFSC_BOOST enabled, and declared those tables with table pfsc_boost enable.

Disclaimer

Suggestions above are provided “as is” without warranty of any kind, either express or implied, including without limitation any implied warranties of condition, uninterrupted use, merchantability, fitness for a particular purpose, or non-infringement.

Contact Us

If you have any questions or would like to find out more about this topic, please contact us.

Author