mirror of
https://github.com/MariaDB/server.git
synced 2025-01-29 10:14:19 +01:00
Merge bk-internal:/home/bk/mysql-5.0
into intelp4d.mysql.com:/users/vtkachenko/bk/mysql-5.0 innobase/srv/srv0srv.c: Auto merged sql/ha_innodb.cc: Auto merged sql/mysqld.cc: Auto merged sql/set_var.cc: Auto merged
This commit is contained in:
commit
6f45da15f3
8 changed files with 150 additions and 10 deletions
|
@ -134,6 +134,8 @@ extern ibool srv_lock_timeout_and_monitor_active;
|
|||
extern ibool srv_error_monitor_active;
|
||||
|
||||
extern ulint srv_n_spin_wait_rounds;
|
||||
extern ulint srv_n_free_tickets_to_enter;
|
||||
extern ulint srv_thread_sleep_delay;
|
||||
extern ulint srv_spin_wait_delay;
|
||||
extern ibool srv_priority_boost;
|
||||
|
||||
|
|
|
@ -297,8 +297,8 @@ srv_conc_slot_t* srv_conc_slots; /* array of wait
|
|||
|
||||
/* Number of times a thread is allowed to enter InnoDB within the same
|
||||
SQL query after it has once got the ticket at srv_conc_enter_innodb */
|
||||
#define SRV_FREE_TICKETS_TO_ENTER 500
|
||||
|
||||
#define SRV_FREE_TICKETS_TO_ENTER srv_n_free_tickets_to_enter
|
||||
#define SRV_THREAD_SLEEP_DELAY srv_thread_sleep_delay
|
||||
/*-----------------------*/
|
||||
/* If the following is set TRUE then we do not run purge and insert buffer
|
||||
merge to completion before shutdown */
|
||||
|
@ -328,6 +328,8 @@ ulint srv_max_purge_lag = 0;
|
|||
|
||||
/*-------------------------------------------*/
|
||||
ulint srv_n_spin_wait_rounds = 20;
|
||||
ulint srv_n_free_tickets_to_enter = 500;
|
||||
ulint srv_thread_sleep_delay = 10000;
|
||||
ulint srv_spin_wait_delay = 5;
|
||||
ibool srv_priority_boost = TRUE;
|
||||
|
||||
|
@ -1025,8 +1027,8 @@ retry:
|
|||
return;
|
||||
}
|
||||
|
||||
/* If the transaction is not holding resources, let it sleep for 50
|
||||
milliseconds, and try again then */
|
||||
/* If the transaction is not holding resources,
|
||||
let it sleep for SRV_THREAD_SLEEP_DELAY microseconds, and try again then */
|
||||
|
||||
if (!has_slept && !trx->has_search_latch
|
||||
&& NULL == UT_LIST_GET_FIRST(trx->trx_locks)) {
|
||||
|
@ -1045,8 +1047,10 @@ retry:
|
|||
situations of lots of thread switches. Simply put some
|
||||
threads aside for a while to reduce the number of thread
|
||||
switches. */
|
||||
|
||||
os_thread_sleep(10000);
|
||||
if (SRV_THREAD_SLEEP_DELAY > 0)
|
||||
{
|
||||
os_thread_sleep(SRV_THREAD_SLEEP_DELAY);
|
||||
}
|
||||
|
||||
trx->op_info = "";
|
||||
|
||||
|
|
|
@ -1715,5 +1715,65 @@ Innodb_row_lock_time_max 0
|
|||
show status like "Innodb_row_lock_time_avg";
|
||||
Variable_name Value
|
||||
Innodb_row_lock_time_avg 0
|
||||
show variables like "innodb_sync_spin_loops";
|
||||
Variable_name Value
|
||||
innodb_sync_spin_loops 20
|
||||
set global innodb_sync_spin_loops=1000;
|
||||
show variables like "innodb_sync_spin_loops";
|
||||
Variable_name Value
|
||||
innodb_sync_spin_loops 1000
|
||||
set global innodb_sync_spin_loops=0;
|
||||
show variables like "innodb_sync_spin_loops";
|
||||
Variable_name Value
|
||||
innodb_sync_spin_loops 0
|
||||
set global innodb_sync_spin_loops=20;
|
||||
show variables like "innodb_sync_spin_loops";
|
||||
Variable_name Value
|
||||
innodb_sync_spin_loops 20
|
||||
show variables like "innodb_thread_concurrency";
|
||||
Variable_name Value
|
||||
innodb_thread_concurrency 8
|
||||
set global innodb_thread_concurrency=1000;
|
||||
show variables like "innodb_thread_concurrency";
|
||||
Variable_name Value
|
||||
innodb_thread_concurrency 1000
|
||||
set global innodb_thread_concurrency=0;
|
||||
show variables like "innodb_thread_concurrency";
|
||||
Variable_name Value
|
||||
innodb_thread_concurrency 1
|
||||
set global innodb_thread_concurrency=16;
|
||||
show variables like "innodb_thread_concurrency";
|
||||
Variable_name Value
|
||||
innodb_thread_concurrency 16
|
||||
show variables like "innodb_free_tickets_to_enter";
|
||||
Variable_name Value
|
||||
innodb_free_tickets_to_enter 500
|
||||
set global innodb_free_tickets_to_enter=1000;
|
||||
show variables like "innodb_free_tickets_to_enter";
|
||||
Variable_name Value
|
||||
innodb_free_tickets_to_enter 1000
|
||||
set global innodb_free_tickets_to_enter=0;
|
||||
show variables like "innodb_free_tickets_to_enter";
|
||||
Variable_name Value
|
||||
innodb_free_tickets_to_enter 1
|
||||
set global innodb_free_tickets_to_enter=500;
|
||||
show variables like "innodb_free_tickets_to_enter";
|
||||
Variable_name Value
|
||||
innodb_free_tickets_to_enter 500
|
||||
show variables like "innodb_thread_sleep_delay";
|
||||
Variable_name Value
|
||||
innodb_thread_sleep_delay 10000
|
||||
set global innodb_thread_sleep_delay=100000;
|
||||
show variables like "innodb_thread_sleep_delay";
|
||||
Variable_name Value
|
||||
innodb_thread_sleep_delay 100000
|
||||
set global innodb_thread_sleep_delay=0;
|
||||
show variables like "innodb_thread_sleep_delay";
|
||||
Variable_name Value
|
||||
innodb_thread_sleep_delay 0
|
||||
set global innodb_thread_sleep_delay=10000;
|
||||
show variables like "innodb_thread_sleep_delay";
|
||||
Variable_name Value
|
||||
innodb_thread_sleep_delay 10000
|
||||
create table t1 (v varchar(16384)) engine=innodb;
|
||||
ERROR 42000: Column length too big for column 'v' (max = 255); use BLOB instead
|
||||
|
|
|
@ -1218,6 +1218,42 @@ show status like "Innodb_row_lock_time";
|
|||
show status like "Innodb_row_lock_time_max";
|
||||
show status like "Innodb_row_lock_time_avg";
|
||||
|
||||
# Test for innodb_sync_spin_loops variable
|
||||
show variables like "innodb_sync_spin_loops";
|
||||
set global innodb_sync_spin_loops=1000;
|
||||
show variables like "innodb_sync_spin_loops";
|
||||
set global innodb_sync_spin_loops=0;
|
||||
show variables like "innodb_sync_spin_loops";
|
||||
set global innodb_sync_spin_loops=20;
|
||||
show variables like "innodb_sync_spin_loops";
|
||||
|
||||
# Test for innodb_thread_concurrency variable
|
||||
show variables like "innodb_thread_concurrency";
|
||||
set global innodb_thread_concurrency=1000;
|
||||
show variables like "innodb_thread_concurrency";
|
||||
set global innodb_thread_concurrency=0;
|
||||
show variables like "innodb_thread_concurrency";
|
||||
set global innodb_thread_concurrency=16;
|
||||
show variables like "innodb_thread_concurrency";
|
||||
|
||||
# Test for innodb_free_tickets_to_enter variable
|
||||
show variables like "innodb_free_tickets_to_enter";
|
||||
set global innodb_free_tickets_to_enter=1000;
|
||||
show variables like "innodb_free_tickets_to_enter";
|
||||
set global innodb_free_tickets_to_enter=0;
|
||||
show variables like "innodb_free_tickets_to_enter";
|
||||
set global innodb_free_tickets_to_enter=500;
|
||||
show variables like "innodb_free_tickets_to_enter";
|
||||
|
||||
# Test for innodb_thread_sleep_delay variable
|
||||
show variables like "innodb_thread_sleep_delay";
|
||||
set global innodb_thread_sleep_delay=100000;
|
||||
show variables like "innodb_thread_sleep_delay";
|
||||
set global innodb_thread_sleep_delay=0;
|
||||
show variables like "innodb_thread_sleep_delay";
|
||||
set global innodb_thread_sleep_delay=10000;
|
||||
show variables like "innodb_thread_sleep_delay";
|
||||
|
||||
#
|
||||
# Test varchar
|
||||
#
|
||||
|
|
|
@ -250,7 +250,7 @@ struct show_var_st innodb_status_variables[]= {
|
|||
{"rows_updated",
|
||||
(char*) &export_vars.innodb_rows_updated, SHOW_LONG},
|
||||
{NullS, NullS, SHOW_LONG}};
|
||||
|
||||
|
||||
/* General functions */
|
||||
|
||||
/**********************************************************************
|
||||
|
@ -1132,7 +1132,6 @@ innobase_init(void)
|
|||
srv_n_file_io_threads = (ulint) innobase_file_io_threads;
|
||||
|
||||
srv_lock_wait_timeout = (ulint) innobase_lock_wait_timeout;
|
||||
srv_thread_concurrency = (ulint) innobase_thread_concurrency;
|
||||
srv_force_recovery = (ulint) innobase_force_recovery;
|
||||
|
||||
srv_fast_shutdown = (ibool) innobase_fast_shutdown;
|
||||
|
|
|
@ -212,7 +212,11 @@ extern "C" {
|
|||
extern ulong srv_max_buf_pool_modified_pct;
|
||||
extern ulong srv_max_purge_lag;
|
||||
extern ulong srv_auto_extend_increment;
|
||||
extern ulong srv_n_spin_wait_rounds;
|
||||
extern ulong srv_n_free_tickets_to_enter;
|
||||
extern ulong srv_thread_sleep_delay;
|
||||
extern ulong srv_max_purge_lag;
|
||||
extern ulong srv_thread_concurrency;
|
||||
}
|
||||
|
||||
extern TYPELIB innobase_lock_typelib;
|
||||
|
|
|
@ -4201,6 +4201,9 @@ enum options_mysqld
|
|||
OPT_INNODB_TABLE_LOCKS,
|
||||
OPT_INNODB_OPEN_FILES,
|
||||
OPT_INNODB_AUTOEXTEND_INCREMENT,
|
||||
OPT_INNODB_SYNC_SPIN_LOOPS,
|
||||
OPT_INNODB_FREE_TICKETS_TO_ENTER,
|
||||
OPT_INNODB_THREAD_SLEEP_DELAY,
|
||||
OPT_BDB_CACHE_SIZE,
|
||||
OPT_BDB_LOG_BUFFER_SIZE,
|
||||
OPT_BDB_MAX_LOCK,
|
||||
|
@ -5046,6 +5049,17 @@ log and this option does nothing anymore.",
|
|||
"How many files at the maximum InnoDB keeps open at the same time.",
|
||||
(gptr*) &innobase_open_files, (gptr*) &innobase_open_files, 0,
|
||||
GET_LONG, REQUIRED_ARG, 300L, 10L, ~0L, 0, 1L, 0},
|
||||
{"innodb_sync_spin_loops", OPT_INNODB_SYNC_SPIN_LOOPS,
|
||||
"Count of spin-loop rounds in InnoDB mutexes",
|
||||
(gptr*) &srv_n_spin_wait_rounds,
|
||||
(gptr*) &srv_n_spin_wait_rounds,
|
||||
0, GET_LONG, REQUIRED_ARG, 20L, 0L, ~0L, 0, 1L, 0},
|
||||
{"innodb_free_tickets_to_enter", OPT_INNODB_FREE_TICKETS_TO_ENTER,
|
||||
"Number of times a thread is allowed to enter InnoDB within the same \
|
||||
SQL query after it has once got the ticket",
|
||||
(gptr*) &srv_n_free_tickets_to_enter,
|
||||
(gptr*) &srv_n_free_tickets_to_enter,
|
||||
0, GET_LONG, REQUIRED_ARG, 500L, 1L, ~0L, 0, 1L, 0},
|
||||
#ifdef HAVE_REPLICATION
|
||||
/*
|
||||
Disabled for the 4.1.3 release. Disabling just this paragraph of code is
|
||||
|
@ -5068,8 +5082,14 @@ log and this option does nothing anymore.",
|
|||
#endif
|
||||
{"innodb_thread_concurrency", OPT_INNODB_THREAD_CONCURRENCY,
|
||||
"Helps in performance tuning in heavily concurrent environments.",
|
||||
(gptr*) &innobase_thread_concurrency, (gptr*) &innobase_thread_concurrency,
|
||||
(gptr*) &srv_thread_concurrency, (gptr*) &srv_thread_concurrency,
|
||||
0, GET_LONG, REQUIRED_ARG, 8, 1, 1000, 0, 1, 0},
|
||||
{"innodb_thread_sleep_delay", OPT_INNODB_THREAD_SLEEP_DELAY,
|
||||
"Time of innodb thread sleeping before joining InnoDB queue (usec). Value 0"
|
||||
" disable a sleep",
|
||||
(gptr*) &srv_thread_sleep_delay,
|
||||
(gptr*) &srv_thread_sleep_delay,
|
||||
0, GET_LONG, REQUIRED_ARG, 10000L, 0L, ~0L, 0, 1L, 0},
|
||||
#endif /* HAVE_INNOBASE_DB */
|
||||
{"interactive_timeout", OPT_INTERACTIVE_TIMEOUT,
|
||||
"The number of seconds the server waits for activity on an interactive connection before closing it.",
|
||||
|
|
|
@ -378,6 +378,14 @@ sys_var_thd_bool sys_innodb_table_locks("innodb_table_locks",
|
|||
&SV::innodb_table_locks);
|
||||
sys_var_long_ptr sys_innodb_autoextend_increment("innodb_autoextend_increment",
|
||||
&srv_auto_extend_increment);
|
||||
sys_var_long_ptr sys_innodb_sync_spin_loops("innodb_sync_spin_loops",
|
||||
&srv_n_spin_wait_rounds);
|
||||
sys_var_long_ptr sys_innodb_free_tickets_to_enter("innodb_free_tickets_to_enter",
|
||||
&srv_n_free_tickets_to_enter);
|
||||
sys_var_long_ptr sys_innodb_thread_sleep_delay("innodb_thread_sleep_delay",
|
||||
&srv_thread_sleep_delay);
|
||||
sys_var_long_ptr sys_innodb_thread_concurrency("innodb_thread_concurrency",
|
||||
&srv_thread_concurrency);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_NDBCLUSTER_DB
|
||||
|
@ -651,6 +659,10 @@ sys_var *sys_variables[]=
|
|||
&sys_innodb_table_locks,
|
||||
&sys_innodb_max_purge_lag,
|
||||
&sys_innodb_autoextend_increment,
|
||||
&sys_innodb_sync_spin_loops,
|
||||
&sys_innodb_free_tickets_to_enter,
|
||||
&sys_innodb_thread_sleep_delay,
|
||||
&sys_innodb_thread_concurrency,
|
||||
#endif
|
||||
#ifdef HAVE_NDBCLUSTER_DB
|
||||
&sys_ndb_autoincrement_prefetch_sz,
|
||||
|
@ -749,6 +761,7 @@ struct show_var_st init_vars[]= {
|
|||
{"innodb_flush_log_at_trx_commit", (char*) &innobase_flush_log_at_trx_commit, SHOW_INT},
|
||||
{"innodb_flush_method", (char*) &innobase_unix_file_flush_method, SHOW_CHAR_PTR},
|
||||
{"innodb_force_recovery", (char*) &innobase_force_recovery, SHOW_LONG },
|
||||
{sys_innodb_free_tickets_to_enter.name, (char*) &sys_innodb_free_tickets_to_enter, SHOW_SYS},
|
||||
{"innodb_lock_wait_timeout", (char*) &innobase_lock_wait_timeout, SHOW_LONG },
|
||||
{"innodb_log_arch_dir", (char*) &innobase_log_arch_dir, SHOW_CHAR_PTR},
|
||||
{"innodb_log_archive", (char*) &innobase_log_archive, SHOW_MY_BOOL},
|
||||
|
@ -762,7 +775,9 @@ struct show_var_st init_vars[]= {
|
|||
{sys_innodb_max_purge_lag.name, (char*) &sys_innodb_max_purge_lag, SHOW_SYS},
|
||||
{"innodb_mirrored_log_groups", (char*) &innobase_mirrored_log_groups, SHOW_LONG},
|
||||
{"innodb_open_files", (char*) &innobase_open_files, SHOW_LONG },
|
||||
{"innodb_thread_concurrency", (char*) &innobase_thread_concurrency, SHOW_LONG },
|
||||
{sys_innodb_thread_concurrency.name, (char*) &sys_innodb_thread_concurrency, SHOW_SYS},
|
||||
{sys_innodb_thread_sleep_delay.name, (char*) &sys_innodb_thread_sleep_delay, SHOW_SYS},
|
||||
{sys_innodb_sync_spin_loops.name, (char*) &sys_innodb_sync_spin_loops, SHOW_SYS},
|
||||
#endif
|
||||
{sys_interactive_timeout.name,(char*) &sys_interactive_timeout, SHOW_SYS},
|
||||
{sys_join_buffer_size.name, (char*) &sys_join_buffer_size, SHOW_SYS},
|
||||
|
|
Loading…
Add table
Reference in a new issue