mirror of
https://github.com/MariaDB/server.git
synced 2026-10-23 18:49:29 +03:00
Adjusted defrag test that fails randomly (timing problem) and fix
result of innodb_sys_index test.
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
DROP TABLE if exists t1;
|
||||
SET @start_table_definition_cache = @@global.table_definition_cache;
|
||||
SET @@global.table_definition_cache = 400;
|
||||
SET @start_flush_log_at_trx_commit = @@global.innodb_flush_log_at_trx_commit;
|
||||
SET @@global.innodb_flush_log_at_trx_commit=2;
|
||||
SET @start_innodb_defragment_stats_accuracy = @@global.innodb_defragment_stats_accuracy;
|
||||
SET @@global.innodb_defragment_stats_accuracy = 10;
|
||||
SET @@global.innodb_defragment_stats_accuracy = 80;
|
||||
CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY AUTO_INCREMENT, b VARCHAR(256), KEY SECOND(a, b)) ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(1, REPEAT('A', 256));
|
||||
INSERT INTO t1 (b) SELECT b from t1;
|
||||
@@ -18,16 +20,16 @@ INSERT INTO t1 (b) SELECT b from t1;
|
||||
INSERT INTO t1 (b) SELECT b from t1;
|
||||
select stat_value > 0 from mysql.innodb_index_stats where table_name like '%t1%' and stat_name = 'n_page_split';
|
||||
stat_value > 0
|
||||
Create 405 table to overflow the table cache.
|
||||
Create 505 table to overflow the table cache.
|
||||
Sleep for a while to make sure t1 is evicted.
|
||||
select sleep(10);
|
||||
sleep(10)
|
||||
select sleep(15);
|
||||
sleep(15)
|
||||
0
|
||||
Reload t1 to get defrag stats from persistent storage
|
||||
INSERT INTO t1 (b) SELECT b from t1;
|
||||
make sure the stats thread will wake up and do the write even if there's a race condition between set and reset.
|
||||
select sleep(12);
|
||||
sleep(12)
|
||||
select sleep(15);
|
||||
sleep(15)
|
||||
0
|
||||
select stat_value > 0 from mysql.innodb_index_stats where table_name like '%t1%' and stat_name = 'n_page_split';
|
||||
stat_value > 0
|
||||
|
||||
@@ -7,14 +7,17 @@
|
||||
DROP TABLE if exists t1;
|
||||
--enable_warnings
|
||||
|
||||
let $num_tables = 405;
|
||||
let $num_tables = 505;
|
||||
|
||||
SET @start_table_definition_cache = @@global.table_definition_cache;
|
||||
SET @@global.table_definition_cache = 400;
|
||||
|
||||
SET @start_flush_log_at_trx_commit = @@global.innodb_flush_log_at_trx_commit;
|
||||
SET @@global.innodb_flush_log_at_trx_commit=2;
|
||||
|
||||
# set stats accuracy to be pretty high so stats sync is easily triggered.
|
||||
SET @start_innodb_defragment_stats_accuracy = @@global.innodb_defragment_stats_accuracy;
|
||||
SET @@global.innodb_defragment_stats_accuracy = 10;
|
||||
SET @@global.innodb_defragment_stats_accuracy = 80;
|
||||
|
||||
# Create table.
|
||||
CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY AUTO_INCREMENT, b VARCHAR(256), KEY SECOND(a, b)) ENGINE=INNODB;
|
||||
@@ -48,13 +51,13 @@ while ($count)
|
||||
}
|
||||
--enable_query_log
|
||||
--echo Sleep for a while to make sure t1 is evicted.
|
||||
select sleep(10);
|
||||
select sleep(15);
|
||||
|
||||
--echo Reload t1 to get defrag stats from persistent storage
|
||||
INSERT INTO t1 (b) SELECT b from t1;
|
||||
|
||||
--echo make sure the stats thread will wake up and do the write even if there's a race condition between set and reset.
|
||||
select sleep(12);
|
||||
select sleep(15);
|
||||
|
||||
select stat_value > 0 from mysql.innodb_index_stats where table_name like '%t1%' and stat_name = 'n_page_split';
|
||||
|
||||
@@ -69,5 +72,6 @@ while ($count)
|
||||
EVAL DROP TABLE t_$count;
|
||||
dec $count;
|
||||
}
|
||||
set @@global.innodb_flush_log_at_trx_commit = @start_flush_log_at_trx_commit;
|
||||
--enable_query_log
|
||||
DROP TABLE t1;
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
drop table if exists t1;
|
||||
Warnings:
|
||||
Note 1051 Unknown table 'test.t1'
|
||||
select @@version_comment limit 1 ;
|
||||
@@version_comment
|
||||
Source distribution, wsrep_25.10.r3991
|
||||
SELECT COUNT(*) FROM `information_schema`.`INNODB_SYS_INDEXES` ;
|
||||
CREATE TABLE test.t1 ( `a` SERIAL NOT NULL , `b` VARCHAR( 255 ) NOT NULL , INDEX ( `b` ) ) ENGINE = InnoDB ;
|
||||
SHOW TABLE STATUS FROM `information_schema` LIKE 'INNODB\_SYS\_INDEXES%' ;
|
||||
|
||||
Reference in New Issue
Block a user