Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
36f1e91b
Commit
36f1e91b
authored
Jan 21, 2005
by
timour@mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge of fix for BUG#4258 from 4.1.
Needs additional manual merge.
parents
10c49778
b266ad2c
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
49 additions
and
23 deletions
+49
-23
include/keycache.h
include/keycache.h
+4
-1
mysys/mf_keycache.c
mysys/mf_keycache.c
+35
-0
sql/mysql_priv.h
sql/mysql_priv.h
+0
-1
sql/mysqld.cc
sql/mysqld.cc
+5
-8
sql/set_var.cc
sql/set_var.cc
+2
-2
sql/sql_parse.cc
sql/sql_parse.cc
+3
-11
No files found.
include/keycache.h
View file @
36f1e91b
...
...
@@ -88,12 +88,13 @@ typedef struct st_key_cache
ulong
param_division_limit
;
/* min. percentage of warm blocks */
ulong
param_age_threshold
;
/* determines when hot block is downgraded */
/* Statistics variables */
/* Statistics variables
. These are reset in reset_key_cache_counters().
*/
ulong
global_blocks_changed
;
/* number of currently dirty blocks */
ulong
global_cache_w_requests
;
/* number of write requests (write hits) */
ulong
global_cache_write
;
/* number of writes from the cache to files */
ulong
global_cache_r_requests
;
/* number of read requests (read hits) */
ulong
global_cache_read
;
/* number of reads from files to the cache */
int
blocks
;
/* max number of blocks in the cache */
my_bool
in_init
;
/* Set to 1 in MySQL during init/resize */
}
KEY_CACHE
;
...
...
@@ -132,5 +133,7 @@ extern my_bool multi_key_cache_set(const byte *key, uint length,
KEY_CACHE
*
key_cache
);
extern
void
multi_key_cache_change
(
KEY_CACHE
*
old_data
,
KEY_CACHE
*
new_data
);
extern
int
reset_key_cache_counters
(
const
char
*
name
,
KEY_CACHE
*
key_cache
);
C_MODE_END
#endif
/* _keycache_h */
mysys/mf_keycache.c
View file @
36f1e91b
...
...
@@ -2444,6 +2444,41 @@ static int flush_all_key_blocks(KEY_CACHE *keycache)
}
/*
Reset the counters of a key cache.
SYNOPSIS
reset_key_cache_counters()
name the name of a key cache
key_cache pointer to the key kache to be reset
DESCRIPTION
This procedure is used by process_key_caches() to reset the counters of all
currently used key caches, both the default one and the named ones.
RETURN
0 on success (always because it can't fail)
*/
int
reset_key_cache_counters
(
const
char
*
name
,
KEY_CACHE
*
key_cache
)
{
DBUG_ENTER
(
"reset_key_cache_counters"
);
if
(
!
key_cache
->
key_cache_inited
)
{
DBUG_PRINT
(
"info"
,
(
"Key cache %s not initialized."
,
name
));
DBUG_RETURN
(
0
);
}
DBUG_PRINT
(
"info"
,
(
"Resetting counters for key cache %s."
,
name
));
key_cache
->
global_blocks_changed
=
0
;
/* Key_blocks_not_flushed */
key_cache
->
global_cache_r_requests
=
0
;
/* Key_read_requests */
key_cache
->
global_cache_read
=
0
;
/* Key_reads */
key_cache
->
global_cache_w_requests
=
0
;
/* Key_write_requests */
key_cache
->
global_cache_write
=
0
;
/* Key_writes */
DBUG_RETURN
(
0
);
}
#ifndef DBUG_OFF
/*
Test if disk-cache is ok
...
...
sql/mysql_priv.h
View file @
36f1e91b
...
...
@@ -1064,7 +1064,6 @@ extern struct system_variables global_system_variables;
extern
struct
system_variables
max_system_variables
;
extern
struct
system_status_var
global_status_var
;
extern
struct
rand_struct
sql_rand
;
extern
KEY_CACHE
*
sql_key_cache
;
extern
const
char
*
opt_date_time_formats
[];
extern
KNOWN_DATE_TIME_FORMAT
known_date_time_formats
[];
...
...
sql/mysqld.cc
View file @
36f1e91b
...
...
@@ -395,7 +395,6 @@ struct system_status_var global_status_var;
MY_TMPDIR
mysql_tmpdir_list
;
MY_BITMAP
temp_pool
;
KEY_CACHE
*
sql_key_cache
;
CHARSET_INFO
*
system_charset_info
,
*
files_charset_info
;
CHARSET_INFO
*
national_charset_info
,
*
table_alias_charset
;
...
...
@@ -1867,14 +1866,14 @@ We will try our best to scrape up some info that will hopefully help diagnose\n\
the problem, but since we have already crashed, something is definitely wrong
\n
\
and this may fail.
\n\n
"
);
fprintf
(
stderr
,
"key_buffer_size=%lu
\n
"
,
(
ulong
)
sql
_key_cache
->
key_cache_mem_size
);
(
ulong
)
dflt
_key_cache
->
key_cache_mem_size
);
fprintf
(
stderr
,
"read_buffer_size=%ld
\n
"
,
global_system_variables
.
read_buff_size
);
fprintf
(
stderr
,
"max_used_connections=%ld
\n
"
,
max_used_connections
);
fprintf
(
stderr
,
"max_connections=%ld
\n
"
,
max_connections
);
fprintf
(
stderr
,
"threads_connected=%d
\n
"
,
thread_count
);
fprintf
(
stderr
,
"It is possible that mysqld could use up to
\n
\
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_connections = %ld K
\n
\
bytes of memory
\n
"
,
((
ulong
)
sql
_key_cache
->
key_cache_mem_size
+
bytes of memory
\n
"
,
((
ulong
)
dflt
_key_cache
->
key_cache_mem_size
+
(
global_system_variables
.
read_buff_size
+
global_system_variables
.
sortbuff_size
)
*
max_connections
)
/
1024
);
...
...
@@ -2141,12 +2140,12 @@ extern "C" void *signal_hand(void *arg __attribute__((unused)))
case
SIGHUP
:
if
(
!
abort_loop
)
{
mysql_print_status
((
THD
*
)
0
);
// Print some debug info
reload_acl_and_cache
((
THD
*
)
0
,
(
REFRESH_LOG
|
REFRESH_TABLES
|
REFRESH_FAST
|
REFRESH_GRANT
|
REFRESH_THREADS
|
REFRESH_HOSTS
),
(
TABLE_LIST
*
)
0
,
NULL
);
// Flush logs
mysql_print_status
((
THD
*
)
0
);
// Send debug some info
}
break
;
#ifdef USE_ONE_SIGNAL_HAND
...
...
@@ -2820,8 +2819,6 @@ server.");
/* call ha_init_key_cache() on all key caches to init them */
process_key_caches
(
&
ha_init_key_cache
);
/* We must set dflt_key_cache in case we are using ISAM tables */
dflt_key_cache
=
sql_key_cache
;
#if defined(HAVE_MLOCKALL) && defined(MCL_CURRENT) && !defined(EMBEDDED_LIBRARY)
if
(
locked_in_memory
&&
!
getuid
())
...
...
@@ -5875,10 +5872,10 @@ static void mysql_init_variables(void)
threads
.
empty
();
thread_cache
.
empty
();
key_caches
.
empty
();
multi_keycache_init
();
if
(
!
(
sql_key_cache
=
get_or_create_key_cache
(
default_key_cache_base
.
str
,
if
(
!
(
dflt_key_cache
=
get_or_create_key_cache
(
default_key_cache_base
.
str
,
default_key_cache_base
.
length
)))
exit
(
1
);
multi_keycache_init
();
/* set key_cache_hash.default_value = dflt_key_cache */
/* Initialize structures that is used when processing options */
replicate_rewrite_db
.
empty
();
...
...
sql/set_var.cc
View file @
36f1e91b
...
...
@@ -2232,7 +2232,7 @@ bool sys_var_key_buffer_size::update(THD *thd, set_var *var)
if
(
!
tmp
)
// Zero size means delete
{
if
(
key_cache
==
sql
_key_cache
)
if
(
key_cache
==
dflt
_key_cache
)
goto
end
;
// Ignore default key cache
if
(
key_cache
->
key_cache_inited
)
// If initied
...
...
@@ -2246,7 +2246,7 @@ bool sys_var_key_buffer_size::update(THD *thd, set_var *var)
base_name
->
length
,
&
list
);
key_cache
->
in_init
=
1
;
pthread_mutex_unlock
(
&
LOCK_global_system_variables
);
error
=
reassign_keycache_tables
(
thd
,
key_cache
,
sql
_key_cache
);
error
=
reassign_keycache_tables
(
thd
,
key_cache
,
dflt
_key_cache
);
pthread_mutex_lock
(
&
LOCK_global_system_variables
);
key_cache
->
in_init
=
0
;
}
...
...
sql/sql_parse.cc
View file @
36f1e91b
...
...
@@ -5867,6 +5867,7 @@ void kill_one_thread(THD *thd, ulong id, bool only_kill_query)
my_error
(
error
,
MYF
(
0
),
id
);
}
/* Clear most status variables */
static
void
refresh_status
(
void
)
...
...
@@ -5876,17 +5877,6 @@ static void refresh_status(void)
{
if
(
ptr
->
type
==
SHOW_LONG
)
*
(
ulong
*
)
ptr
->
value
=
0
;
else
if
(
ptr
->
type
==
SHOW_KEY_CACHE_LONG
)
{
/*
Reset value in 'default' key cache.
This needs to be recoded when we have thread specific key values
*/
char
*
value
=
(((
char
*
)
sql_key_cache
)
+
(
uint
)
((
char
*
)
(
ptr
->
value
)
-
(
char
*
)
&
dflt_key_cache_var
));
*
(
ulong
*
)
value
=
0
;
}
else
if
(
ptr
->
type
==
SHOW_LONG_STATUS
)
{
THD
*
thd
=
current_thd
;
...
...
@@ -5895,6 +5885,8 @@ static void refresh_status(void)
bzero
((
char
*
)
&
thd
->
status_var
,
sizeof
(
thd
->
status_var
));
}
}
/* Reset the counters of all key caches (default and named). */
process_key_caches
(
reset_key_cache_counters
);
pthread_mutex_unlock
(
&
LOCK_status
);
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment