[MDEV-22278] change temp-pool to be 0 by default Created: 2020-04-17  Updated: 2021-03-27  Resolved: 2020-08-07

Status: Closed
Project: MariaDB Server
Component/s: Server
Fix Version/s: 10.5.7

Type: Task Priority: Critical
Reporter: Sergei Golubchik Assignee: Alexander Barkov
Resolution: Fixed Votes: 1
Labels: None

Issue Links:
Blocks
Duplicate
is duplicated by MDEV-23407 --temp-pool: change default to 0 and ... Closed
Relates
relates to MDEV-25275 Remove temp-pool option and/or deprec... Open

 Description   

change temp-pool to be 0 by default and deprecate it

According to benchmarks made by Axel (and further analysis) , this code behind --temp-pool=1 in create_tmp_table() causes a heavy mutex contention:

if (use_temp_pool && !(test_flags & TEST_KEEP_TMP_TABLES))

temp_pool_slot = bitmap_lock_set_next(&temp_pool);

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.



 Comments   
Comment by Alexander Barkov [ 2020-08-06 ]

https://github.com/MariaDB/server/commit/be974e56203c723b021a1a5e7719065298d7ceda

Generated at Thu Feb 08 09:13:32 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.