mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 20:12:31 +01:00
5ef1224434
The test main.index_merge_innodb is taking very much time, especially on later versions (10.2 and 10.3). Some of this could be attributed to the use of INSERT...SELECT, which is time-consumingly creating explicit record locks in InnoDB for the locking read in the SELECT part. In 10.3 and later, some slowness can be attributed to MDEV-12288, which makes the InnoDB purge thread spend time to reset transaction identifiers in the inserted records. If we prevent purge from running before all tables are dropped, the test seems to be 10% faster on an unoptimized debug build on 10.5. (A proper fix would be to implement MDEV-515 and stop writing row-level undo log records for inserts into an empty table or partition.) At the same time, it should not hurt to make main.index_merge_myisam to use the sequence engine. Not only could it be a little faster, but the test would be slightly more readable.
49 lines
1.3 KiB
PHP
49 lines
1.3 KiB
PHP
# include/index_merge_2sweeps.inc
|
|
#
|
|
# 2-sweeps read Index_merge test
|
|
#
|
|
# Last update:
|
|
# 2006-08-02 ML test refactored
|
|
# old name was index_merge_innodb2.test
|
|
# main code went into include/index_merge_2sweeps.inc
|
|
#
|
|
--source include/have_sequence.inc
|
|
|
|
--echo #---------------- 2-sweeps read Index merge test 2 -------------------------------
|
|
|
|
create table t1 (
|
|
pk int primary key,
|
|
key1 int,
|
|
key2 int,
|
|
filler char(200),
|
|
filler2 char(200),
|
|
index(key1),
|
|
index(key2)
|
|
);
|
|
|
|
insert into t1 select seq, seq, seq, 'filler-data', 'filler-data-2'
|
|
from seq_1000_to_1;
|
|
|
|
select * from t1 where (key1 >= 2 and key1 <= 10) or (pk >= 4 and pk <=8 );
|
|
|
|
set @maxv=1000;
|
|
|
|
select * from t1 where
|
|
(pk < 5) or (pk > 10 and pk < 15) or (pk >= 50 and pk < 55 ) or (pk > @maxv-10)
|
|
or key1=18 or key1=60;
|
|
|
|
select * from t1 where
|
|
(pk < 5) or (pk > 10 and pk < 15) or (pk >= 50 and pk < 55 ) or (pk > @maxv-10)
|
|
or key1 < 3 or key1 > @maxv-11;
|
|
|
|
select * from t1 where
|
|
(pk < 5) or (pk > 10 and pk < 15) or (pk >= 50 and pk < 55 ) or (pk > @maxv-10)
|
|
or
|
|
(key1 < 5) or (key1 > 10 and key1 < 15) or (key1 >= 50 and key1 < 55 ) or (key1 > @maxv-10);
|
|
|
|
select * from t1 where
|
|
(pk > 10 and pk < 15) or (pk >= 50 and pk < 55 )
|
|
or
|
|
(key1 < 5) or (key1 > @maxv-10);
|
|
|
|
drop table t1;
|