diff options
author | unknown <dlenev@brandersnatch.localdomain> | 2004-09-23 13:48:17 +0400 |
---|---|---|
committer | unknown <dlenev@brandersnatch.localdomain> | 2004-09-23 13:48:17 +0400 |
commit | 7ba5d931eb6611a1b3794d3c4378381060ac925d (patch) | |
tree | 72c836976a5eb3e3b63f565445ab8ca1ea26e4d8 /cmd-line-utils | |
parent | ca65afeb72e7f514d51b7dcf2cc49e85a3b92677 (diff) | |
download | mariadb-git-7ba5d931eb6611a1b3794d3c4378381060ac925d.tar.gz |
Implementation of Monty's idea about clear_alloc_root() optimization and cleanup of work
with memory roots in THD/Statement/Item_arena.
Added assertions preventing memory allocation on bzero'ed MEM_ROOT since it is worked by
pure luck and was very ineffective.
include/my_sys.h:
Reimplementation of Monty's optimization of clear_alloc_root().
Now clear_alloc_root() can be used only for detaching memory associated with MEM_ROOT
(e.g. to avoid its freeing). It can not be used for MEM_ROOT initialization any longer
(it was bad idea anyway since memory allocation on such MEM_ROOT was very ineffective
and worked by pure luck).
Introduced ALLOC_ROOT_MIN_BLOCK_SIZE constant.
mysys/my_alloc.c:
Added description of init_alloc_root().
Added assertions to alloc_root() and reset_root_defaults() so now they can only be used
on previosly initialized MEM_ROOT. (It worked for bzeroed MEM_ROOT before but
by pure luck and very inefficiently). Calling free_root() on bzero'ed MEM_ROOT
is still ok (we can't remove this easily because of static MEM_ROOTs).
Also now using ALLOC_ROOT_MIN_BLOCK_SIZE constant inside these functions.
sql/opt_range.cc:
Fixed get_quick_select_for_ref() function to not use bzero'ed MEM_ROOT for allocation.
Also QUICK_RANGEs created in this function should be created in memory root of QUICK_SELECT.
sql/sql_class.cc:
Implementation of Monty's idea about clear_alloc_root() optimization and cleanup of work
with memory roots in THD/Statement/Item_arena.
Now we are always initing THD::transaction.mem_root and THD::mem_root in THD constructor
(without memory allocation and with minimal block size) and then later change their
parameters in THD::init_for_queries() (this is partially because we can't allocate anything
on bzero'ed memory roots anymore).
Item_arena() constructor is now trivial and is used only then Item_arena is created as backup
storage for other Item_arena (we use Item_arena(bool) now if it is part of Statement).
Both trivial Item_arena constructor and destructor are now inline.
Removed unneeded clear_alloc_root from Item_arena::restore_backup_item_arena().
sql/sql_class.h:
Both trivial Item_arena constructor and destructor are now inline.
Commented various Item_arena constructors.
Diffstat (limited to 'cmd-line-utils')
0 files changed, 0 insertions, 0 deletions