File: atomic_truncate_table_scale.inc

package info (click to toggle)
mysql-8.0 8.0.43-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,273,924 kB
  • sloc: cpp: 4,684,605; ansic: 412,450; pascal: 108,398; java: 83,641; perl: 30,221; cs: 27,067; sql: 26,594; sh: 24,181; python: 21,816; yacc: 17,169; php: 11,522; xml: 7,388; javascript: 7,076; makefile: 2,194; lex: 1,075; awk: 670; asm: 520; objc: 183; ruby: 97; lisp: 86
file content (111 lines) | stat: -rw-r--r-- 2,646 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#
# load tables with some significant amount of data and then truncate it.
#

#-----------------------------------------------------------------------------
#
# create test-bed
#
let $per_table = `select @@innodb_file_per_table`;

let $WL6501_TMP_DIR = `select @@tmpdir`;
let $WL6501_DATA_DIR = `select @@datadir`;
set innodb_strict_mode=OFF;

#-----------------------------------------------------------------------------
#
# create procedure to load data
#
delimiter |;
create procedure populate()
begin
	declare i int default 1;
	while (i <= 5000) do
		insert into t1 values (i, 'a', 'b');
		insert into t2 values (i, 'a', 'b');
		insert into t3 values (i, 'a', 'b');
		set i = i + 1;
	end while;
end|
create procedure populate_small()
begin
	declare i int default 10001;
	while (i <= 12000) do
		insert into t1 values (i, 'c', 'd');
		insert into t2 values (i, 'a', 'b');
		insert into t3 values (i, 'a', 'b');
		set i = i + 1;
	end while;
end|
delimiter ;|

#-----------------------------------------------------------------------------
#
# create and load the tables.
#
eval set global innodb_file_per_table = $wl6501_file_per_table;
--replace_regex /[0-9]+/NUMBER/
eval create table t1
	(i int, c1 char(100), c2 char(100),
	 index c1_idx(c1))
	engine=innodb row_format=$wl6501_row_fmt
	key_block_size=$wl6501_kbs;
eval create table t2
	(i int, c1 char(100), c2 char(100),
	 index c1_idx(c1))
	engine=innodb row_format=$wl6501_row_fmt
	key_block_size=$wl6501_kbs;
eval create temporary table t3
	(i int, c1 char(100), c2 char(100),
	 index c1_idx(c1))
	engine=innodb row_format=$wl6501_row_fmt
	key_block_size=$wl6501_kbs;
#
select count(*) from t1;
select count(*) from t2;
select count(*) from t3;
begin;
call populate();
commit;
select count(*) from t1;
select count(*) from t2;
select count(*) from t3;
#
truncate table t1;
select count(*) from t1;
select count(*) from t2;
select count(*) from t3;
#
call populate_small();
select count(*) from t1;
select count(*) from t2;
select count(*) from t3;
#
truncate table t2;
--echo # WL#7811/WL#7743/WL#7141 TODO: Remove the warnings!
truncate table t3;
select count(*) from t1;
select count(*) from t2;
select count(*) from t3;
#
call populate_small();
select count(*) from t1;
select count(*) from t2;
select count(*) from t3;
#
drop table t1;
drop table t2;
drop table t3;

#-----------------------------------------------------------------------------
#
# drop the procedure
#
drop procedure populate;
drop procedure populate_small;

#-----------------------------------------------------------------------------
#
# remove test-bed
#
eval set global innodb_file_per_table = $per_table;