Commit 8a8823d2 authored by unknown's avatar unknown
Browse files

Many files:

  - Create innodb_thread_concurrency as dynamic variable
  - Add innodb_thread_sleep_delay variable
  - Add innodb_free_tickets_to_enter variable


innobase/include/srv0srv.h:
  - Create innodb_thread_concurrency as dynamic variable
  - Add innodb_thread_sleep_delay variable
  - Add innodb_free_tickets_to_enter variable
innobase/srv/srv0srv.c:
  - Create innodb_thread_concurrency as dynamic variable
  - Add innodb_thread_sleep_delay variable
  - Add innodb_free_tickets_to_enter variable
mysql-test/r/innodb.result:
  - Create innodb_thread_concurrency as dynamic variable
  - Add innodb_thread_sleep_delay variable
  - Add innodb_free_tickets_to_enter variable
mysql-test/t/innodb.test:
  - Create innodb_thread_concurrency as dynamic variable
  - Add innodb_thread_sleep_delay variable
  - Add innodb_free_tickets_to_enter variable
sql/ha_innodb.cc:
  - Create innodb_thread_concurrency as dynamic variable
  - Add innodb_thread_sleep_delay variable
  - Add innodb_free_tickets_to_enter variable
sql/ha_innodb.h:
  - Create innodb_thread_concurrency as dynamic variable
  - Add innodb_thread_sleep_delay variable
  - Add innodb_free_tickets_to_enter variable
sql/mysqld.cc:
  - Create innodb_thread_concurrency as dynamic variable
  - Add innodb_thread_sleep_delay variable
  - Add innodb_free_tickets_to_enter variable
sql/set_var.cc:
  - Create innodb_thread_concurrency as dynamic variable
  - Add innodb_thread_sleep_delay variable
  - Add innodb_free_tickets_to_enter variable
parent 2f05ec8f
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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;
		
+10 −6
Original line number Diff line number Diff line
@@ -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 @@ srv_conc_enter_innodb(
		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 @@ srv_conc_enter_innodb(
		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 = "";

+45 −0
Original line number Diff line number Diff line
@@ -1730,5 +1730,50 @@ 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
+27 −0
Original line number Diff line number Diff line
@@ -1227,6 +1227,33 @@ 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
#
+1 −2
Original line number Diff line number Diff line
@@ -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;
Loading