mirror of
https://github.com/MariaDB/server.git
synced 2025-05-05 16:59:35 +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.
22 lines
842 B
Plaintext
22 lines
842 B
Plaintext
select @@global.innodb_use_mtflush;
|
|
@@global.innodb_use_mtflush
|
|
0
|
|
select @@session.innodb_use_mtflush;
|
|
ERROR HY000: Variable 'innodb_use_mtflush' is a GLOBAL variable
|
|
show global variables like 'innodb_use_mtflush';
|
|
Variable_name Value
|
|
innodb_use_mtflush OFF
|
|
show session variables like 'innodb_use_mtflush';
|
|
Variable_name Value
|
|
innodb_use_mtflush OFF
|
|
select * from information_schema.global_variables where variable_name='innodb_use_mtflush';
|
|
VARIABLE_NAME VARIABLE_VALUE
|
|
INNODB_USE_MTFLUSH OFF
|
|
select * from information_schema.session_variables where variable_name='innodb_use_mtflush';
|
|
VARIABLE_NAME VARIABLE_VALUE
|
|
INNODB_USE_MTFLUSH OFF
|
|
set global innodb_use_mtflush=1;
|
|
ERROR HY000: Variable 'innodb_use_mtflush' is a read only variable
|
|
set session innodb_use_mtflush=1;
|
|
ERROR HY000: Variable 'innodb_use_mtflush' is a read only variable
|