91 lines
2.4 KiB
Plaintext
91 lines
2.4 KiB
Plaintext
# A rhino can weigh over 2000 kg, run about 12 meters per second,
|
|
# but see accurately only 10 meters... A group of rhinos is called a 'crash'!
|
|
|
|
CREATE UNDO TABLESPACE undo_003 ADD DATAFILE 'undo_003.ibu';
|
|
CREATE UNDO TABLESPACE undo_004 ADD DATAFILE 'undo_004.ibu';
|
|
CREATE UNDO TABLESPACE undo_005 ADD DATAFILE 'undo_005.ibu';
|
|
CREATE UNDO TABLESPACE undo_006 ADD DATAFILE 'undo_006.ibu';
|
|
|
|
CREATE DATABASE rhinos;
|
|
USE rhinos;
|
|
|
|
CREATE TABLE serengeti (a BIGINT AUTO_INCREMENT PRIMARY KEY, b VARCHAR(1000) NOT NULL);
|
|
|
|
DELIMITER |;
|
|
CREATE PROCEDURE rhino (IN loops BIGINT, IN undo_space char(20))
|
|
BEGIN
|
|
SET @x = 0;
|
|
WHILE (@x < loops) DO
|
|
SET @y = 0;
|
|
ALTER UNDO TABLESPACE innodb_undo_005 SET INACTIVE;
|
|
WHILE (@y < 5) DO
|
|
SET @c = concat("INSERT INTO serengeti (b) VALUES ('Insert #", @x * 10 + @y + 1, " while ", undo_space, " is inactive')");
|
|
PREPARE stmt FROM @c;
|
|
EXECUTE stmt;
|
|
SET @y = @y + 1;
|
|
END WHILE;
|
|
ALTER UNDO TABLESPACE innodb_undo_005 SET ACTIVE;
|
|
WHILE (@y < 10) DO
|
|
SET @c = concat("INSERT INTO serengeti (b) VALUES ('Insert #", @x * 10 + @y + 1, " while ", undo_space, " is active')");
|
|
PREPARE stmt FROM @c;
|
|
EXECUTE stmt;
|
|
SET @y = @y + 1;
|
|
END WHILE;
|
|
SET @x = @x + 1;
|
|
END WHILE;
|
|
END|
|
|
DELIMITER ;|
|
|
|
|
connect (con1,localhost,root,,);
|
|
connect (con2,localhost,root,,);
|
|
connect (con3,localhost,root,,);
|
|
|
|
connection con1;
|
|
--send CALL rhinos.rhino(10, 'innodb_undo_005');
|
|
|
|
connection con2;
|
|
--send CALL rhinos.rhino(10, 'undo_003');
|
|
|
|
connection con3;
|
|
--send CALL rhinos.rhino(10, 'undo_005');
|
|
|
|
connection con1;
|
|
--reap;
|
|
|
|
connection con2;
|
|
--reap;
|
|
|
|
connection con3;
|
|
--reap;
|
|
|
|
connection default;
|
|
disconnect con1;
|
|
disconnect con2;
|
|
disconnect con3;
|
|
|
|
SELECT count(*) from serengeti;
|
|
|
|
USE test;
|
|
DROP DATABASE rhinos;
|
|
|
|
ALTER UNDO TABLESPACE undo_003 SET INACTIVE;
|
|
let $inactive_undo_space = undo_003;
|
|
source include/wait_until_undo_space_is_empty.inc;
|
|
DROP UNDO TABLESPACE undo_003;
|
|
|
|
ALTER UNDO TABLESPACE undo_004 SET INACTIVE;
|
|
let $inactive_undo_space = undo_004;
|
|
source include/wait_until_undo_space_is_empty.inc;
|
|
DROP UNDO TABLESPACE undo_004;
|
|
|
|
ALTER UNDO TABLESPACE undo_005 SET INACTIVE;
|
|
let $inactive_undo_space = undo_005;
|
|
source include/wait_until_undo_space_is_empty.inc;
|
|
DROP UNDO TABLESPACE undo_005;
|
|
|
|
ALTER UNDO TABLESPACE undo_006 SET INACTIVE;
|
|
let $inactive_undo_space = undo_006;
|
|
source include/wait_until_undo_space_is_empty.inc;
|
|
DROP UNDO TABLESPACE undo_006;
|
|
|