Backport innodb_max_purge_lag from 4.1

innobase/include/srv0srv.h:
  Add configuration parameter srv_max_purge_lag.
  Add global variable srv_dml_needed_delay.
innobase/include/trx0sys.h:
  Add trx_sys->rseg_history_len
innobase/row/row0mysql.c:
  Add row_mysql_delay_if_needed() for delaying INSERTs, UPDATEs and
  DELETEs for srv_dml_needed_delay microseconds.
innobase/srv/srv0srv.c:
  Define global variable srv_dml_needed_delay.
  Define configuration parameter srv_max_purge_lag.
innobase/trx/trx0purge.c:
  Update trx_sys->rseg_history_len.
  trx_purge(): Compute srv_dml_needed_delay from srv_max_purge_lag
  and trx_sys->rseg_history_len.
innobase/trx/trx0rseg.c:
  Initialize trx_sys->rseg_history_len at InnoDB start-up.
sql/ha_innodb.h:
  Add configuration parameter srv_max_purge_lag.
sql/mysqld.cc:
  Add startup option innodb_max_purge_lag,
  with default value 0 (meaning infinite, disabling the feature).
sql/set_var.cc:
  Add global variable innodb_max_purge_lag.
This commit is contained in:
unknown 2004-10-27 13:33:11 +03:00
commit 743597ea96
9 changed files with 84 additions and 1 deletions

View file

@ -58,6 +58,10 @@ ulint srv_activity_count = 0;
/* The following is the maximum allowed duration of a lock wait. */
ulint srv_fatal_semaphore_wait_threshold = 600;
/* How much data manipulation language (DML) statements need to be delayed,
in microseconds, in order to reduce the lagging of the purge thread. */
ulint srv_dml_needed_delay = 0;
ibool srv_lock_timeout_and_monitor_active = FALSE;
ibool srv_error_monitor_active = FALSE;
@ -841,6 +845,8 @@ srv_general_init(void)
/*======================= InnoDB Server FIFO queue =======================*/
/* Maximum allowable purge history length. <=0 means 'infinite'. */
ulint srv_max_purge_lag = 0;
/*************************************************************************
Puts an OS thread to wait if there are too many concurrent threads