I shortened the time ranges a bit. So counters may differ from my last posts. And the query starts now with "unload to /dev/null". So no more reason for temp dbspace/chunk activity.
With the time ranges, when we run the SQL first time (with empty buffers after engine restart or onmode -B reset) with LARGE it needs ~ 2400 seconds (compared to 60 seconds with TABLE_SIZE SMALL) and there is activity in the temp dbspaces/chunks. But when we run the SQL a second time (with buffers filled) there is no more noticeable temp chunk activity, but it still needs 2000 seconds (~52 seconds with TABLE_SIZE SMALL).
So there is currently no indication, that TABLE_SIZE is influencing the size (SMALL/LARGE) of temporary tables created. My wild guess set me on the wrong track.
Support was not able to reproduce behavior with mock-up data. So i got a script from them to collect stats. These stats are currently under investigation.
So, if someone is affected by performance drops of specific SQLs in 15.0.0.2 after activating Infrastructure Level 1 and onstat -g cfg TABLE_SIZE answers LARGE (as it is the default in onconfig.std), it might be worth to give
- onmode -wm TABLE_SIZE=SMALL
(changes running engine and takes effect in our case immediately)
and eventually
- onmode -wf TABLE_SIZE=SMALL
(changes $ONCONFIG for future engine restarts)
a try for the moment.
I will keep this thread updated.
Original Message:
Sent: Mon January 26, 2026 02:57 AM
From: Emanuel Reisinger
Subject: Informix 15.0.0.2 IL1: Insert from SMALL table into temp LARGE table very slow
Hi jc,
I would like to mention that I've started this post in behalf of my colleague Wilhelm Seyerl because he had troubles to get the initial post online. He also opened the case and works on this issue from our side. So I'm informed all the time.
But of course all other readers will be pleased to be informed of the outcome.
Thank you!
------------------------------
Emanuel Reisinger
Axians ICT Austria GmbH
Original Message:
Sent: Fri January 23, 2026 10:03 AM
From: John Lengyel
Subject: Informix 15.0.0.2 IL1: Insert from SMALL table into temp LARGE table very slow
Just chiming in here to echo Andreas' point that we believe something else is going on here (aside from large vs. small), and are working to get to the bottom of it asap. As far as I know we're still unable to reproduce the problem internally but we're anxious to do so.
As far as we're concerned large tables, whether permanent or temporary, should perform as well as small tables. Indexes on large tables will have a slightly larger footprint, so you can expect some small difference in I/O performance since more I/O will be necessary to store the same key information, but caching should negate most of this. If large rowids are having a real performance impact we'll want to hear about it. Any significant difference between the performance of large and small tables, all else being equal, would be unexpected and considered a defect. Our internal TPC benchmarks (admittedly, fully cached) do not show a noticeable difference.
Note that user-created temp tables (create temp table..., select into temp) already default to small. You have to explicitly use the 'large' keyword when creating them in order to override the default. This is also true of all tables in system databases (sysadmin, sysha, sysuser, sysmaster, sysutils).
Sorry for the problem Emanuel. Once we figure out what's behind your performance problem we'll make sure this thread is updated.
Thanks.
-jc
------------------------------
John Lengyel
Original Message:
Sent: Thu January 22, 2026 06:29 AM
From: Wilhelm Seyerl
Subject: Informix 15.0.0.2 IL1: Insert from SMALL table into temp LARGE table very slow
Hi,
As i wrote yesterday i'm still checking with the experts what is actually going on. And i have to be more precise. With $ONCONFIG:TABLE_SIZE LARGE the temp DBSpaces (not temp tables as i wrote) get heavily utilized in our specific query. Allthough we changed the query to "unload to '/dev/null' select ...".
It was just my first wild guess as switching between SMALL and LARGE in $ONCONFIG had such a huge impact. And in the first version the rows were actually inserted into a user created temp table. But as no user created temp tables are involved in the current test setup and temp DBSpaces are still heavilly utilized my first assumption seems quite wrong.
So user created temp tables might still be SMALL regardless of $ONCONFIG:TABLE_SIZE.
BR
Wilhelm
------------------------------
Wilhelm Seyerl
Original Message:
Sent: Thu January 22, 2026 03:15 AM
From: Sebastien FLAESCH
Subject: Informix 15.0.0.2 IL1: Insert from SMALL table into temp LARGE table very slow
Hi Leo,
About your advice:
As a general practice, use SMALL temp tables whenever possible, even if the source or target tables are LARGE.
It would be nice to avoid application code changes because of this Informix behavior, and force programmers to use
CREATE SMALL TEMP TABLE ...
All over the place.
Would it not be possible to add an ONCONFIG parameter to defined the default size mode for temp tables?
TEMP_TABLE_SIZE = { SMALL | LARGE }
That would overwrite the definition of TABLE_SIZE.
Side note: in the ONCONFIG file created after installation, I can read following comment for the TABLE_SIZE parameter:
# TABLE_SIZE - The default size of newly created permanent tables.
It should read:
# TABLE_SIZE - The default size of newly created permanent and temporary tables.
Seb
------------------------------
Sebastien FLAESCH
Original Message:
Sent: Mon January 19, 2026 06:49 AM
From: Leo Parker
Subject: Informix 15.0.0.2 IL1: Insert from SMALL table into temp LARGE table very slow
What you're observing is consistent with how Informix 15 behaves after IL1, and yes-TABLE_SIZE can have a surprisingly large impact, especially with temp tables. When TABLE_SIZE LARGE is set, temp tables are created as large tables by default, which introduces additional overhead (page structures, extents, logging behavior). Even if the query plan looks identical, the physical work involved in inserting data into a LARGE temp table can dramatically increase execution time, which explains the jump from minutes to hours.
As a general practice, use SMALL temp tables whenever possible, even if the source or target tables are LARGE. Temp tables benefit far more from lightweight structures than from matching the size class of base tables. Only use LARGE temp tables if you truly expect them to exceed SMALL table limits. For mixed joins (LARGE + SMALL), the temp table does not need to match the largest table-what matters is expected row volume and lifespan. Many teams explicitly set TABLE_SIZE SMALL during migrations for this reason, as IL upgrades can expose these performance differences.
Off-topic note: Clear structure and efficiency matter outside databases too. In a different field, https://www.aftermathbailbonds.com/ follows a similar principle by keeping information simple and accessible, helping people in Tampa quickly understand bail bond options during time-sensitive situations.
------------------------------
Leo Parker
ceo
Bail Bonds Tampa
Original Message:
Sent: Mon January 19, 2026 05:58 AM
From: Emanuel Reisinger
Subject: Informix 15.0.0.2 IL1: Insert from SMALL table into temp LARGE table very slow
Hi community,
We are still testing for Migration from 14.FC4W1 and 14.FC11 to 15.0.0.2.
During our tests we recognized, that only after activating Infrastructure Level (IL) 1, a specific script which usually takes about 240 seconds suddenly took over 2 hours.
When setting
TABLE_SIZE SMALL
in onconfig, the script now runs with acceptable 247 seconds.
During my investigation, the query plan (SET EXPLAIN ON), was exactly the same in 14, 15 IL0 and IL1. That's why i finally thought it might have to do something with SMALL/LARGE tables in IL1.
The second statement in the script - which is the sql which really took long with IL1 - is a
insert into t select ... from a, b ... where ... <join condition>
while the first statement is a
create temp table t ...
So i suppose when TABLE_SIZE LARGE (default) was set in onconfig, the temporary table was created as LARGE table. And that the time was spent on converting the SMALL table data from the select into the temp LARGE table.
However, can it be that this has such a huge impact? And further more: What type of temp table (SMALL/LARGE) to use if we finally have a "real" LARGE table? Or if we join a "real" LARGE table to a "real" SMALL table?
Or are there any best practices (in the interwebs) how to deal with this situation?
------------------------------
Emanuel Reisinger
Axians ICT Austria GmbH
------------------------------