Thread pool tests show buffer size changes results
Database thread pool testing reported by Percona on October 12, 2026 shows that the value of connection pooling depends heavily on memory size, connection count and the specific server implementation. A thread pool is a way for a database server to reuse a controlled set of worker threads, which are units of execution inside the server, instead of creating or scheduling work too freely when many clients connect at once. The goal is to keep throughput high and latency predictable when a database is under pressure.
The benchmarks compared Percona's database server variant 9.7.1-1 with the standard database server 26.7.0, and also checked the standard database server 26.7.0 against the standard database server 9.7.2. Percona states that the standard database server 26.7.0 and 9.7.2 results were very close. Configurations without thread pool converged to similar values, and configurations with thread pool did the same across the tested buffer tiers of 2G, 12G and 32G. The tested thread pool settings included thread_pool_size values of 10, 20, 40, 80, 120 and 160, and thread_pool_oversubscribe values of 2, 3 and 4. Percona notes only that the standard database server 26.7.0 was very slightly faster than 9.7.2 at high client thread counts, so the later comparisons focus on the standard database server 26.7.0.
The most important practical point is that the InnoDB buffer pool, the memory area where the database server keeps frequently used table and index data, changed the results. With innodb_buffer_pool_size set to 2G, the standard database server 26.7.0 did not see the same large thread pool gain reported for Percona's database server, but the pooled configuration still helped at high connection counts. At 2560 client connections, the standard database server with thread pool reached 371 TPS, or transactions per second, compared with 122 TPS without thread pool. That is about three times the non-pooled throughput. Percona reports that thread_pool_size=10 was the best choice in this tier, while larger settings of 20, 40, 80, 120 and 160 improved TPS less. For the standard database server at 2G, changing thread_pool_oversubscribe had little effect, although a value of 2 was slightly better than 3 or 4.
At 12G, overall standard database server throughput rose, but the relative advantage of thread pooling at the highest connection count was smaller than at 2G. With 2560 connections and innodb_buffer_pool_size=12G, the standard database server reached 1273 TPS with thread pool and 718 TPS without it, which Percona describes as a 77 percent improvement. At 32G, where the data set was fully buffered, the standard database server's pooled configuration also beat the non-pooled setup: 18,975 TPS versus 17,011 TPS, an 11.6 percent win for thread pool. The latency result followed the same direction. Percona reports that p95 latency, meaning the response time below which 95 percent of requests complete, fell from 759 ms to 153 ms with the standard database server's thread pool enabled in that fully buffered scenario.
The direct comparison between Percona's database server variant 9.7.1-1 and the standard database server 26.7.0 shows why administrators should not assume that identical setting names mean identical behaviour. With innodb_buffer_pool_size=2G, Percona used the best-performing thread pool settings for each server: thread_pool_size=10 for both, thread_pool_oversubscribe=4 for Percona's database server, and thread_pool_oversubscribe=2 for the standard database server. The standard database server started faster at 40 connections, but Percona does not treat low connection counts as a good test of thread pool efficiency. At 2560 connections, Percona's database server produced 2304 TPS compared with the standard database server's 371 TPS, a 6.2 times difference in favour of Percona's database server.
With a 12G buffer pool, the shape was similar. The standard database server was faster at the lower 40 and 80 connection points, but at 2560 connections Percona's database server thread pool outperformed the standard database server. The 32G tier reversed the outcome. In the fully buffered case, the best Percona database server configuration changed to thread_pool_size=160 and thread_pool_oversubscribe=2, while the standard database server's best remained thread_pool_size=10 and thread_pool_oversubscribe=2. Percona interprets this as evidence that, in its server, increasing innodb_buffer_pool_size may require increasing thread_pool_size to keep the thread pool working optimally.
At 32G, the standard database server had the stronger thread pool result: 19,054 TPS compared with 15,519 TPS for Percona's database server, a 22 percent difference. Latency also favoured the standard database server in that tier. With thread pooling disabled, Percona reports that both servers had similar p95 latency, with the standard database server slightly shorter. With thread pool enabled, the standard database server's p95 latency was about 25 percent better, at 177 ms compared with 235 ms for Percona's database server. In the 2G and 12G tiers, however, Percona's database server showed slightly lower p95 latency than the standard database server.
For IT teams, the lesson is not that one thread pool setting is universally correct. It is that connection management, memory sizing and workload shape must be tested together. Percona's results show that its own thread pool implementation is more sensitive to thread_pool_size and thread_pool_oversubscribe, and that those settings had the biggest effect on its performance. The standard database server showed less dramatic variation when those parameters changed, and its clearest thread pooling benefit appeared only at high connection counts such as 1280 and 2560. Percona's database server showed benefits much earlier, at 80 or more connections.
This matters for business systems because overloaded databases often fail gradually before they fail visibly: response times rise, queues build, and application users see slow pages before anyone sees a clean outage. A managed setup can help by making measurement routine rather than occasional. For readers reviewing their own database operations, AEU Data provides European cloud and data infrastructure, a relevant foundation when teams need to run data services with disciplined operational oversight.
The safe takeaway is to benchmark before changing production settings. Test with connection counts that resemble the real application, compare throughput and p95 latency, and repeat the test at realistic memory sizes. Thread pools can protect a database from excessive concurrency, but these benchmarks show that their value depends on the server, the buffer pool and the workload, not on the feature name alone.