79 lines
2.1 KiB
Plaintext
79 lines
2.1 KiB
Plaintext
#
|
|
# WL#6469: Optimizing CREATE/DROP performance for temporary tables
|
|
#
|
|
|
|
--source include/no_valgrind_without_big.inc
|
|
--source include/have_innodb.inc
|
|
|
|
#########################################################################
|
|
# #
|
|
# Will test following scenarios: #
|
|
# 1. Vary innodb_change_buffering value for temp-table #
|
|
#########################################################################
|
|
|
|
|
|
#-------------------------------------------------------------
|
|
#
|
|
# create test-bed.
|
|
#
|
|
let $change_buffer_value = `select @@global.innodb_change_buffering`;
|
|
set global innodb_file_per_table = 0;
|
|
|
|
#-------------------------------------------------------------
|
|
#
|
|
# 1. Vary innodb_change_buffering value
|
|
#
|
|
--disable_warnings
|
|
DROP TABLE IF EXISTS t1,t2;
|
|
--enable_warnings
|
|
select @@global.innodb_change_buffering;
|
|
create temporary table t1
|
|
(keyc int, c1 char(100), c2 char(100),
|
|
primary key(keyc)) engine = innodb;
|
|
create index idx on t1(keyc, c1(20));
|
|
delimiter |;
|
|
create procedure populate_t1(IN rows INT)
|
|
begin
|
|
declare i int default 1;
|
|
while (i <= rows) DO
|
|
insert into t1 values (i, 'a', 'b');
|
|
set i = i + 1;
|
|
end while;
|
|
end|
|
|
delimiter ;|
|
|
set autocommit=0;
|
|
select count(*) from t1;
|
|
call populate_t1(1000);
|
|
select count(*) from t1;
|
|
select * from t1 limit 10;
|
|
commit;
|
|
update t1 set keyc = -1 * keyc where keyc%50 = 0;
|
|
select count(*) from t1 where keyc < 0;
|
|
drop table t1;
|
|
|
|
# change innodb_change_buffering value to none
|
|
set @@global.innodb_change_buffering = none ;
|
|
select @@global.innodb_change_buffering;
|
|
|
|
create temporary table t1
|
|
(keyc int, c1 char(100), c2 char(100),
|
|
primary key(keyc)) engine = innodb;
|
|
create index idx on t1(keyc, c1(20));
|
|
set autocommit=0;
|
|
select count(*) from t1;
|
|
CALL populate_t1(1000);
|
|
select count(*) from t1;
|
|
select * from t1 limit 10;
|
|
commit;
|
|
update t1 set keyc = -1 * keyc where keyc%50 = 0;
|
|
select count(*) from t1 where keyc < 0;
|
|
drop table t1;
|
|
drop procedure if exists populate_t1;
|
|
eval set global innodb_change_buffering = $change_buffer_value;
|
|
|
|
#-------------------------------------------------------------
|
|
#
|
|
# remove test-bed.
|
|
#
|
|
set global innodb_file_per_table = default;
|