Merge moonlight.intranet:/home/tomash/src/mysql_ab/mysql-4.1-runtime
into moonlight.intranet:/home/tomash/src/mysql_ab/mysql-4.1-bug21915
This commit is contained in:
commit
77f1d01fbb
@ -95,6 +95,8 @@ MY_LOCALE *my_locale_by_name(const char *name);
|
|||||||
#define MAX_ACCEPT_RETRY 10 // Test accept this many times
|
#define MAX_ACCEPT_RETRY 10 // Test accept this many times
|
||||||
#define MAX_FIELDS_BEFORE_HASH 32
|
#define MAX_FIELDS_BEFORE_HASH 32
|
||||||
#define USER_VARS_HASH_SIZE 16
|
#define USER_VARS_HASH_SIZE 16
|
||||||
|
#define TABLE_OPEN_CACHE_MIN 64
|
||||||
|
#define TABLE_OPEN_CACHE_DEFAULT 64
|
||||||
#define STACK_MIN_SIZE 8192 // Abort if less stack during eval.
|
#define STACK_MIN_SIZE 8192 // Abort if less stack during eval.
|
||||||
#define STACK_BUFF_ALLOC 64 // For stack overrun checks
|
#define STACK_BUFF_ALLOC 64 // For stack overrun checks
|
||||||
#ifndef MYSQLD_NET_RETRY_COUNT
|
#ifndef MYSQLD_NET_RETRY_COUNT
|
||||||
|
@ -2526,19 +2526,43 @@ static int init_common_variables(const char *conf_file_name, int argc,
|
|||||||
|
|
||||||
/* connections and databases needs lots of files */
|
/* connections and databases needs lots of files */
|
||||||
{
|
{
|
||||||
uint files, wanted_files;
|
uint files, wanted_files, max_open_files;
|
||||||
|
|
||||||
wanted_files= 10+(uint) max(max_connections*5,
|
/* MyISAM requires two file handles per table. */
|
||||||
max_connections+table_cache_size*2);
|
wanted_files= 10+max_connections+table_cache_size*2;
|
||||||
set_if_bigger(wanted_files, open_files_limit);
|
/*
|
||||||
files= my_set_max_open_files(wanted_files);
|
We are trying to allocate no less than max_connections*5 file
|
||||||
|
handles (i.e. we are trying to set the limit so that they will
|
||||||
|
be available). In addition, we allocate no less than how much
|
||||||
|
was already allocated. However below we report a warning and
|
||||||
|
recompute values only if we got less file handles than were
|
||||||
|
explicitly requested. No warning and re-computation occur if we
|
||||||
|
can't get max_connections*5 but still got no less than was
|
||||||
|
requested (value of wanted_files).
|
||||||
|
*/
|
||||||
|
max_open_files= max(max(wanted_files, max_connections*5),
|
||||||
|
open_files_limit);
|
||||||
|
files= my_set_max_open_files(max_open_files);
|
||||||
|
|
||||||
if (files < wanted_files)
|
if (files < wanted_files)
|
||||||
{
|
{
|
||||||
if (!open_files_limit)
|
if (!open_files_limit)
|
||||||
{
|
{
|
||||||
max_connections= (ulong) min((files-10),max_connections);
|
/*
|
||||||
table_cache_size= (ulong) max((files-10-max_connections)/2,64);
|
If we have requested too much file handles than we bring
|
||||||
|
max_connections in supported bounds.
|
||||||
|
*/
|
||||||
|
max_connections= (ulong) min(files-10-TABLE_OPEN_CACHE_MIN*2,
|
||||||
|
max_connections);
|
||||||
|
/*
|
||||||
|
Decrease table_cache_size according to max_connections, but
|
||||||
|
not below TABLE_OPEN_CACHE_MIN. Outer min() ensures that we
|
||||||
|
never increase table_cache_size automatically (that could
|
||||||
|
happen if max_connections is decreased above).
|
||||||
|
*/
|
||||||
|
table_cache_size= (ulong) min(max((files-10-max_connections)/2,
|
||||||
|
TABLE_OPEN_CACHE_MIN),
|
||||||
|
table_cache_size);
|
||||||
DBUG_PRINT("warning",
|
DBUG_PRINT("warning",
|
||||||
("Changed limits: max_open_files: %u max_connections: %ld table_cache: %ld",
|
("Changed limits: max_open_files: %u max_connections: %ld table_cache: %ld",
|
||||||
files, max_connections, table_cache_size));
|
files, max_connections, table_cache_size));
|
||||||
@ -5511,8 +5535,8 @@ The minimum value for this variable is 4096.",
|
|||||||
0, 0, 0, 0},
|
0, 0, 0, 0},
|
||||||
{"table_cache", OPT_TABLE_CACHE,
|
{"table_cache", OPT_TABLE_CACHE,
|
||||||
"The number of open tables for all threads.", (gptr*) &table_cache_size,
|
"The number of open tables for all threads.", (gptr*) &table_cache_size,
|
||||||
(gptr*) &table_cache_size, 0, GET_ULONG, REQUIRED_ARG, 64, 1, 512*1024L,
|
(gptr*) &table_cache_size, 0, GET_ULONG, REQUIRED_ARG,
|
||||||
0, 1, 0},
|
TABLE_OPEN_CACHE_DEFAULT, 1, 512*1024L, 0, 1, 0},
|
||||||
{"thread_cache_size", OPT_THREAD_CACHE_SIZE,
|
{"thread_cache_size", OPT_THREAD_CACHE_SIZE,
|
||||||
"How many threads we should keep in a cache for reuse.",
|
"How many threads we should keep in a cache for reuse.",
|
||||||
(gptr*) &thread_cache_size, (gptr*) &thread_cache_size, 0, GET_ULONG,
|
(gptr*) &thread_cache_size, (gptr*) &thread_cache_size, 0, GET_ULONG,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user