According to benchmarks made by Axel (and further analysis) , this code behind --temp-pool=1 in create_tmp_table() causes a heavy mutex contention:
The --temp-pool option was implemented to address some bottleneck in Linux kernel, which is reported to be fixed nowadays.
In MySQL, --temp-pool was deprecated in 5.7 and removed in 8.0.
Let's do the following:
- Set --temp-pool=0 by default in MariaDB-10.5 (currently its default is 1)
- Mark it as deprecated in mysqld --help output
- Remove it in some later version, tentatively in 10.6.
In the meanwhile, we should try to find proves that this problem was really addressed in Linux.