diff options
author | unknown <monty@hundin.mysql.fi> | 2002-10-16 13:11:25 +0300 |
---|---|---|
committer | unknown <monty@hundin.mysql.fi> | 2002-10-16 13:11:25 +0300 |
commit | 7013d8ef0ae0a21fadfcc0a159ee1d83fdad8a9d (patch) | |
tree | d165b4baadac24102545d94c8f9fe180537a64f5 /heap | |
parent | e1d7b8414f14de681127f4e19340e4f7737d5bdb (diff) | |
parent | 74b73109c1304e62430faa85d2a63a6f2ffa626d (diff) | |
download | mariadb-git-7013d8ef0ae0a21fadfcc0a159ee1d83fdad8a9d.tar.gz |
Merge with 3.23.54
BitKeeper/etc/logging_ok:
auto-union
BitKeeper/deleted/.del-LICENSE~4cfaff8de837acb8:
Auto merged
BitKeeper/deleted/.del-MySQLEULA.txt:
Delete: Docs/MySQLEULA.txt
BitKeeper/deleted/.del-global.h~e80d28157acfdcb5:
Auto merged
Build-tools/mysql-copyright-2:
Auto merged
Build-tools/mysql-copyright:
Auto merged
heap/heapdef.h:
Auto merged
heap/hp_open.c:
Auto merged
innobase/btr/btr0cur.c:
Auto merged
innobase/lock/lock0lock.c:
Auto merged
innobase/os/os0file.c:
Auto merged
innobase/os/os0thread.c:
Auto merged
myisam/mi_open.c:
Auto merged
mysql-test/Makefile.am:
Auto merged
mysql-test/t/null_key.test:
Auto merged
mysys/safemalloc.c:
Auto merged
scripts/make_binary_distribution.sh:
Auto merged
scripts/mysqld_safe.sh:
Auto merged
scripts/mysqlhotcopy.sh:
Auto merged
sql/field.h:
Auto merged
sql/field_conv.cc:
Auto merged
sql/ha_innodb.h:
Auto merged
sql/item.cc:
Auto merged
sql/sql_db.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/table.cc:
Auto merged
tests/grant.res:
Auto merged
Build-tools/Do-compile:
merge
Docs/manual.texi:
merge
configure.in:
merge
mysql-test/r/distinct.result:
merge
mysql-test/r/null_key.result:
merge
sql/ha_innodb.cc:
merge
sql/item.h:
merge
sql/log.cc:
merge
sql/mysqld.cc:
merge
support-files/mysql.spec.sh:
merge
Diffstat (limited to 'heap')
-rw-r--r-- | heap/heapdef.h | 11 | ||||
-rw-r--r-- | heap/hp_open.c | 10 |
2 files changed, 19 insertions, 2 deletions
diff --git a/heap/heapdef.h b/heap/heapdef.h index bdd7de45370..ef55cf5efd2 100644 --- a/heap/heapdef.h +++ b/heap/heapdef.h @@ -22,6 +22,17 @@ #endif #include "heap.h" /* Structs & some defines */ +/* + When allocating keys /rows in the internal block structure, do it + within the following boundaries. + + The challenge is to find the balance between allocate as few blocks + as possible and keep memory consumption down. +*/ + +#define HP_MIN_RECORDS_IN_BLOCK 16 +#define HP_MAX_RECORDS_IN_BLOCK 8192 + /* Some extern variables */ extern LIST *heap_open_list,*heap_share_list; diff --git a/heap/hp_open.c b/heap/hp_open.c index 938ab8c4f78..1bb28e5ffdf 100644 --- a/heap/hp_open.c +++ b/heap/hp_open.c @@ -162,8 +162,14 @@ static void init_block(HP_BLOCK *block, uint reclength, ulong min_records, max_records=1000; /* As good as quess as anything */ recbuffer=(uint) (reclength+sizeof(byte**)-1) & ~(sizeof(byte**)-1); records_in_block=max_records/10; - if (records_in_block < 10 && max_records) - records_in_block=10; + if (records_in_block < HP_MIN_RECORDS_IN_BLOCK && max_records) + records_in_block= HP_MIN_RECORDS_IN_BLOCK; + /* + Don't allocate too many rows at one time too keep memory consumption + done when we don't need it. + */ + if (records_in_block > HP_MAX_RECORDS_IN_BLOCK) + records_in_block= HP_MAX_RECORDS_IN_BLOCK; if (!records_in_block || records_in_block*recbuffer > (my_default_record_cache_size-sizeof(HP_PTRS)*HP_MAX_LEVELS)) records_in_block=(my_default_record_cache_size-sizeof(HP_PTRS)* |