List:Internals« Previous MessageNext Message »
From:ahristov Date:November 12 2005 11:52am
Subject:bk commit into 5.1 tree (andrey:1.1955) BUG#14895
View as plain text  
Below is the list of changes that have just been committed into a local
5.1 repository of andrey. When andrey does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet
  1.1955 05/11/12 11:52:37 andrey@lmy004. +4 -0
  2 More --bdb variables (fix for bug #14895)
  - added bdb-cache-parts
  - modified bdb-cache-size to support more than 4G
  - added bdb-region-size (size of memory pool for storing file names used in transaction)

  sql/set_var.cc
    1.143 05/11/12 11:52:26 andrey@lmy004. +6 -2
    - added bdb-cache-parts
    - modified bdb-cache-size to support more than 4G
    - added bdb-region-size (size of memory pool for storing file names used in
transaction)

  sql/mysqld.cc
    1.489 05/11/12 11:52:25 andrey@lmy004. +18 -4
    - added bdb-cache-parts
    - modified bdb-cache-size to support more than 4G
    - added bdb-region-size (size of memory pool for storing file names used in
transaction)

  sql/ha_berkeley.h
    1.78 05/11/12 11:52:25 andrey@lmy004. +3 -1
    - added bdb-cache-parts
    - modified bdb-cache-size to support more than 4G
    - added bdb-region-size (size of memory pool for storing file names used in
transaction)

  sql/ha_berkeley.cc
    1.160 05/11/12 11:52:25 andrey@lmy004. +11 -2
    - added bdb-cache-parts
    - modified bdb-cache-size to support more than 4G
    - added bdb-region-size (size of memory pool for storing file names used in
transaction)

# This is a BitKeeper patch.  What follows are the unified diffs for the
# set of deltas contained in the patch.  The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User:	andrey
# Host:	lmy004.
# Root:	/work/mysql-5.1-bdb_region

--- 1.159/sql/ha_berkeley.cc	2005-11-07 16:24:36 +01:00
+++ 1.160/sql/ha_berkeley.cc	2005-11-12 11:52:25 +01:00
@@ -78,9 +78,11 @@
 bool berkeley_shared_data=0;
 u_int32_t berkeley_init_flags= DB_PRIVATE | DB_RECOVER, berkeley_env_flags=0,
           berkeley_lock_type=DB_LOCK_DEFAULT;
-ulong berkeley_cache_size, berkeley_log_buffer_size, berkeley_log_file_size=0;
+ulong berkeley_log_buffer_size=0 , berkeley_log_file_size=0;
+ulonglong berkeley_cache_size= 0;
 char *berkeley_home, *berkeley_tmpdir, *berkeley_logdir;
 long berkeley_lock_scan_time=0;
+ulong berkeley_region_size=0, berkeley_cache_parts=1;
 ulong berkeley_trans_retry=1;
 ulong berkeley_max_lock;
 pthread_mutex_t bdb_mutex;
@@ -204,10 +206,17 @@
 			DB_VERB_DEADLOCK | DB_VERB_RECOVERY,
 			1);
 
-  db_env->set_cachesize(db_env, 0, berkeley_cache_size, 0);
+  if (berkeley_cache_size > (uint) ~0)
+    db_env->set_cachesize(db_env, berkeley_cache_size / (1024*1024L*1024L),
+                          berkeley_cache_size % (1024L*1024L*1024L),
+                          berkeley_cache_parts);
+  else
+    db_env->set_cachesize(db_env, 0, berkeley_cache_size, berkeley_cache_parts);
+
   db_env->set_lg_max(db_env, berkeley_log_file_size);
   db_env->set_lg_bsize(db_env, berkeley_log_buffer_size);
   db_env->set_lk_detect(db_env, berkeley_lock_type);
+  db_env->set_lg_regionmax(db_env, berkeley_region_size);
   if (berkeley_max_lock)
     db_env->set_lk_max(db_env, berkeley_max_lock);
 

--- 1.77/sql/ha_berkeley.h	2005-11-07 16:24:37 +01:00
+++ 1.78/sql/ha_berkeley.h	2005-11-12 11:52:25 +01:00
@@ -163,7 +163,9 @@
 extern bool berkeley_shared_data;
 extern u_int32_t berkeley_init_flags,berkeley_env_flags, berkeley_lock_type,
                  berkeley_lock_types[];
-extern ulong berkeley_cache_size, berkeley_max_lock, berkeley_log_buffer_size;
+extern ulong berkeley_max_lock, berkeley_log_buffer_size;
+extern ulonglong berkeley_cache_size;
+extern ulong berkeley_region_size, berkeley_cache_parts;
 extern char *berkeley_home, *berkeley_tmpdir, *berkeley_logdir;
 extern long berkeley_lock_scan_time;
 extern TYPELIB berkeley_lock_typelib;

--- 1.488/sql/mysqld.cc	2005-11-07 16:24:41 +01:00
+++ 1.489/sql/mysqld.cc	2005-11-12 11:52:25 +01:00
@@ -394,7 +394,9 @@
 extern bool berkeley_shared_data;
 extern u_int32_t berkeley_init_flags,berkeley_env_flags, berkeley_lock_type,
                  berkeley_lock_types[];
-extern ulong berkeley_cache_size, berkeley_max_lock, berkeley_log_buffer_size;
+extern ulong berkeley_max_lock, berkeley_log_buffer_size;
+extern ulonglong berkeley_cache_size;
+extern ulong berkeley_region_size, berkeley_cache_parts;
 extern char *berkeley_home, *berkeley_tmpdir, *berkeley_logdir;
 extern long berkeley_lock_scan_time;
 extern TYPELIB berkeley_lock_typelib;
@@ -4582,8 +4584,10 @@
   OPT_INNODB_CONCURRENCY_TICKETS,
   OPT_INNODB_THREAD_SLEEP_DELAY,
   OPT_BDB_CACHE_SIZE,
+  OPT_BDB_CACHE_PARTS,
   OPT_BDB_LOG_BUFFER_SIZE,
   OPT_BDB_MAX_LOCK,
+  OPT_BDB_REGION_SIZE,
   OPT_ERROR_LOG_FILE,
   OPT_DEFAULT_WEEK_FORMAT,
   OPT_RANGE_ALLOC_BLOCK_SIZE, OPT_ALLOW_SUSPICIOUS_UDFS,
@@ -5398,8 +5402,12 @@
 #ifdef WITH_BERKELEY_STORAGE_ENGINE
   { "bdb_cache_size", OPT_BDB_CACHE_SIZE,
     "The buffer that is allocated to cache index and rows for BDB tables.",
-    (gptr*) &berkeley_cache_size, (gptr*) &berkeley_cache_size, 0, GET_ULONG,
-    REQUIRED_ARG, KEY_CACHE_SIZE, 20*1024, (long) ~0, 0, IO_SIZE, 0},
+    (gptr*) &berkeley_cache_size, (gptr*) &berkeley_cache_size, 0, GET_ULL,
+    REQUIRED_ARG, KEY_CACHE_SIZE, 20*1024, (ulonglong) ~0, 0, IO_SIZE, 0},
+  { "bdb_cache_parts", OPT_BDB_CACHE_PARTS,
+    "Number of parts to use for BDB cache.",
+    (gptr*) &berkeley_cache_parts, (gptr*) &berkeley_cache_parts, 0, GET_ULONG,
+    REQUIRED_ARG, 1, 1, 1024, 0, 1, 0},
   /* QQ: The following should be removed soon! (bdb_max_lock preferred) */
   {"bdb_lock_max", OPT_BDB_MAX_LOCK, "Synonym for bdb_max_lock.",
    (gptr*) &berkeley_max_lock, (gptr*) &berkeley_max_lock, 0, GET_ULONG,
@@ -5412,6 +5420,10 @@
    "The maximum number of locks you can have active on a BDB table.",
    (gptr*) &berkeley_max_lock, (gptr*) &berkeley_max_lock, 0, GET_ULONG,
    REQUIRED_ARG, 10000, 0, (long) ~0, 0, 1, 0},
+  {"bdb_region_size", OPT_BDB_REGION_SIZE,
+    "The size of the underlying logging area of the Berkeley DB environment. Names of
file opened in a transaction are stored on this area.",
+    (gptr*) &berkeley_region_size, (gptr*) &berkeley_region_size, 0, GET_ULONG,
+    OPT_ARG, 60*1024L, 60*1024L, (long) ~0, 0, 1, 0},
 #endif /* WITH_BERKELEY_STORAGE_ENGINE */
   {"binlog_cache_size", OPT_BINLOG_CACHE_SIZE,
    "The size of the cache to hold the SQL statements for the binary log during a
transaction. If you often use big, multi-statement transactions you can increase this to
get more performance.",
@@ -7410,7 +7422,9 @@
 
 #ifndef WITH_BERKELEY_STORAGE_ENGINE
 bool berkeley_shared_data;
-ulong berkeley_cache_size, berkeley_max_lock, berkeley_log_buffer_size;
+ulong berkeley_max_lock, berkeley_log_buffer_size;
+ulonglong berkeley_cache_size, 
+ulong berkeley_region_size, berkeley_cache_parts;
 char *berkeley_home, *berkeley_tmpdir, *berkeley_logdir;
 #endif
 

--- 1.142/sql/set_var.cc	2005-11-07 17:14:56 +01:00
+++ 1.143/sql/set_var.cc	2005-11-12 11:52:26 +01:00
@@ -61,7 +61,9 @@
 
 /* WITH_BERKELEY_STORAGE_ENGINE */
 extern bool berkeley_shared_data;
-extern ulong berkeley_cache_size, berkeley_max_lock, berkeley_log_buffer_size;
+extern ulong berkeley_max_lock, berkeley_log_buffer_size;
+extern ulonglong berkeley_cache_size;
+extern ulong berkeley_region_size, berkeley_cache_parts;
 extern char *berkeley_home, *berkeley_tmpdir, *berkeley_logdir;
 
 /* WITH_INNOBASE_STORAGE_ENGINE */
@@ -622,11 +624,13 @@
   {sys_automatic_sp_privileges.name,(char*) &sys_automatic_sp_privileges,      
SHOW_SYS},
   {"back_log",                (char*) &back_log,                    SHOW_LONG},
   {"basedir",                 mysql_home,                           SHOW_CHAR},
-  {"bdb_cache_size",          (char*) &berkeley_cache_size,         SHOW_LONG},
+  {"bdb_cache_size",          (char*) &berkeley_cache_size,         SHOW_LONGLONG},
+  {"bdb_cache_parts",         (char*) &berkeley_cache_parts,        SHOW_LONG},
   {"bdb_home",                (char*) &berkeley_home,               SHOW_CHAR_PTR},
   {"bdb_log_buffer_size",     (char*) &berkeley_log_buffer_size,    SHOW_LONG},
   {"bdb_logdir",              (char*) &berkeley_logdir,             SHOW_CHAR_PTR},
   {"bdb_max_lock",            (char*) &berkeley_max_lock,	    SHOW_LONG},
+  {"bdb_region_size",         (char*) &berkeley_region_size,	    SHOW_LONG},
   {"bdb_shared_data",	      (char*) &berkeley_shared_data,	    SHOW_BOOL},
   {"bdb_tmpdir",              (char*) &berkeley_tmpdir,             SHOW_CHAR_PTR},
   {sys_binlog_cache_size.name,(char*) &sys_binlog_cache_size,	    SHOW_SYS},
Thread
bk commit into 5.1 tree (andrey:1.1955) BUG#14895ahristov12 Nov