1
0
mirror of https://github.com/MariaDB/server.git synced 2025-12-24 11:21:21 +03:00
(Inadequate background LRU flushing for write workloads with InnoDB compression).
  
  If InnoDB compression is used and the workload has writes, the
  following situation is possible. The LRU flusher issues an LRU flush
  request for an instance.  buf_do_LRU_batch decides to perform
  unzip_LRU eviction and this eviction might fully satisfy the
  request. Then buf_flush_LRU_tail checks the number of flushed pages in
  the last iteration, finds it to be zero, and wrongly decides not to
  flush that instance anymore.
  
  Fixed by maintaining unzip_LRU eviction counter in struct
  flush_counter_t variables, and checking it in buf_flush_LRU_tail when
  deciding whether to stop flushing the current instance.

Added test cases for new configuration files to get mysql-test-run suite sys_vars
to pass. Fix some small errors.
This commit is contained in:
Jan Lindström
2014-03-27 09:35:24 +02:00
parent f761835b5c
commit 5027338039
12 changed files with 184 additions and 12 deletions

View File

@@ -0,0 +1,21 @@
select @@global.innodb_mtflush_threads;
@@global.innodb_mtflush_threads
8
select @@session.innodb_mtflush_threads;
ERROR HY000: Variable 'innodb_mtflush_threads' is a GLOBAL variable
show global variables like 'innodb_mtflush_threads';
Variable_name Value
innodb_mtflush_threads 8
show session variables like 'innodb_mtflush_threads';
Variable_name Value
innodb_mtflush_threads 8
select * from information_schema.global_variables where variable_name='innodb_mtflush_threads';
VARIABLE_NAME VARIABLE_VALUE
INNODB_MTFLUSH_THREADS 8
select * from information_schema.session_variables where variable_name='innodb_mtflush_threads';
VARIABLE_NAME VARIABLE_VALUE
INNODB_MTFLUSH_THREADS 8
set global innodb_mtflush_threads=1;
ERROR HY000: Variable 'innodb_mtflush_threads' is a read only variable
set session innodb_mtflush_threads=1;
ERROR HY000: Variable 'innodb_mtflush_threads' is a read only variable