mariadb/storage
Monty 52c29f3bdc MDEV-35469 Heap tables are calling mallocs to often
Heap tables are allocated blocks to store rows according to
my_default_record_cache (mapped to the server global variable
 read_buffer_size).
This causes performance issues when the record length is big
(> 1000 bytes) and the my_default_record_cache is small.

Changed to instead split the default heap allocation to 1/16 of the
allowed space and not use my_default_record_cache anymore when creating
the heap. The allocation is also aligned to be just under a power of 2.

For some test that I have been running, which was using record length=633,
the speed of the query doubled thanks to this change.

Other things:
- Fixed calculation of max_records passed to hp_create() to take
  into account padding between records.
- Updated calculation of memory needed by heap tables. Before we
  did not take into account internal structures needed to access rows.
- Changed block sized for memory_table from 1 to 16384 to get less
  fragmentation. This also avoids a problem where we need 1K
  to manage index and row storage which was not counted for before.
- Moved heap memory usage to a separate test for 32 bit.
- Allocate all data blocks in heap in powers of 2. Change reported
  memory usage for heap to reflect this.

Reviewed-by: Sergei Golubchik <serg@mariadb.org>
2025-01-05 16:40:11 +02:00
..
archive Merge 10.5 into 10.6 2024-06-24 13:09:47 +03:00
blackhole MDEV-34348: my_hash_get_key fixes 2024-11-23 08:14:22 -07:00
columnstore Merge branch '10.5' into 10.6 2024-09-06 13:52:57 +10:00
connect Merge branch '10.5' into '10.6' 2024-12-03 13:08:12 +01:00
csv MDEV-34348: Miscellaneous fixes 2024-11-23 08:14:23 -07:00
example MDEV-33746 Supply missing override markings 2024-06-20 11:32:13 -04:00
federated Merge 10.5 into 10.6 2024-11-29 12:37:46 +02:00
federatedx Merge 10.5 into 10.6 2024-11-29 12:37:46 +02:00
heap MDEV-35469 Heap tables are calling mallocs to often 2025-01-05 16:40:11 +02:00
innobase Merge 10.5 into 10.6 2025-01-03 09:10:25 +02:00
maria Merge 10.5 into 10.6 2024-11-29 12:37:46 +02:00
mroonga Merge 10.5 into 10.6 2024-12-11 14:46:43 +02:00
myisam Merge 10.5 into 10.6 2024-11-29 12:37:46 +02:00
myisammrg Merge 10.5 into 10.6 2024-11-29 12:37:46 +02:00
oqgraph Merge 10.5 into 10.6 2024-11-29 12:37:46 +02:00
perfschema Merge 10.5 into 10.6 2024-11-29 12:37:46 +02:00
rocksdb Merge 10.5 into 10.6 2024-11-29 12:37:46 +02:00
sequence MDEV-33746 Supply missing override markings 2024-06-20 11:32:13 -04:00
sphinx Merge 10.5 into 10.6 2024-11-29 12:37:46 +02:00
spider Merge branch '10.5' into 10.6 2024-12-17 11:06:09 +11:00
test_sql_discovery Merge 10.5 into 10.6 2024-06-24 13:09:47 +03:00