@@ -92,118 +92,3 @@ WHERE student_id = (SELECT student_id FROM students WHERE first_name = 'Alice' A
9292
9393DELETE FROM students
9494WHERE first_name = ' Alice' AND last_name = ' Smith' ;
95-
96- -- ========================================
97- -- BIG COMPRESSED TABLES FOR LOAD GENERATION
98- -- ========================================
99-
100- CREATE TABLE IF NOT EXISTS students_big (
101- id INT AUTO_INCREMENT PRIMARY KEY ,
102- first_name VARCHAR (50 ),
103- last_name VARCHAR (50 ),
104- birth_date DATE ,
105- bio TEXT ,
106- notes TEXT ,
107- filler VARBINARY(256 ),
108- INDEX (last_name),
109- INDEX (birth_date)
110- ) ENGINE= InnoDB ROW_FORMAT= COMPRESSED KEY_BLOCK_SIZE= 8 ;
111-
112- CREATE TABLE IF NOT EXISTS students_big2 LIKE students_big;
113- ALTER TABLE students_big2 ROW_FORMAT= COMPRESSED KEY_BLOCK_SIZE= 4 ;
114-
115- CREATE TABLE IF NOT EXISTS students_small (
116- id INT AUTO_INCREMENT PRIMARY KEY ,
117- first_name VARCHAR (50 ),
118- last_name VARCHAR (50 ),
119- birth_date DATE ,
120- INDEX (last_name)
121- ) ENGINE= InnoDB ROW_FORMAT= COMPRESSED KEY_BLOCK_SIZE= 8 ;
122-
123- -- Seed 200k rows (run once). If already done, skip.
124- INSERT INTO students_big (first_name, last_name, birth_date, bio, notes, filler)
125- SELECT
126- CONCAT(' FN' , LPAD(i, 6 , ' 0' )),
127- CONCAT(' LN' , LPAD(i* 13 % 1000000 , 6 , ' 0' )),
128- DATE_ADD(' 1970-01-01' , INTERVAL (i* 37 % 18628 ) DAY),
129- REPEAT(' BIO_' , 50 ),
130- REPEAT(' NOTE_' , 30 ),
131- RANDOM_BYTES(256 )
132- FROM (
133- SELECT @row := @row + 1 AS i
134- FROM (SELECT 0 UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4
135- UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 ) t0,
136- (SELECT 0 UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4
137- UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 ) t1,
138- (SELECT 0 UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4
139- UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 ) t2,
140- (SELECT 0 UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4
141- UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 ) t3,
142- (SELECT @row:= 0 ) init
143- ) gen
144- LIMIT 200000 ;
145-
146- INSERT INTO students_big2
147- SELECT * FROM students_big;
148-
149- INSERT INTO students_small (first_name, last_name, birth_date)
150- SELECT first_name, last_name, birth_date FROM students_big LIMIT 200000 ;
151-
152- -- ========================================
153- -- EVENT TO GENERATE CONTINUOUS COMPRESSION WORK
154- -- ========================================
155-
156- -- Make sure the event scheduler is on:
157- SET GLOBAL event_scheduler = ON ;
158-
159- -- Change delimiter to allow compound statement
160- DELIMITER //
161-
162- DROP EVENT IF EXISTS ev_compress_load//
163-
164- CREATE EVENT ev_compress_load
165- ON SCHEDULE EVERY 5 SECOND
166- ON COMPLETION PRESERVE
167- DO
168- BEGIN
169- -- Inserts (~2k rows per run)
170- INSERT INTO students_big (first_name, last_name, birth_date, bio, notes, filler)
171- SELECT
172- CONCAT(' FNX' , UUID()),
173- CONCAT(' LNX' , UUID()),
174- DATE_ADD(' 1970-01-01' , INTERVAL FLOOR(RAND()* 18628 ) DAY),
175- REPEAT(' BIO_' , FLOOR(20 + RAND()* 60 )),
176- REPEAT(' NOTE_' , FLOOR(10 + RAND()* 40 )),
177- RANDOM_BYTES(256 )
178- FROM information_schema .columns
179- LIMIT 2000 ;
180-
181- -- Updates (touch pages)
182- UPDATE students_big
183- SET bio = CONCAT(bio, ' U' ),
184- notes = CONCAT(notes, ' U' )
185- WHERE id % 37 = 0
186- LIMIT 2000 ;
187-
188- -- Deletes (free space for merges)
189- DELETE FROM students_big
190- WHERE id % 101 = 0
191- LIMIT 1000 ;
192-
193- -- Periodic re-compression
194- IF (UNIX_TIMESTAMP() % 60 ) < 5 THEN
195- OPTIMIZE TABLE students_big;
196- OPTIMIZE TABLE students_big2;
197- END IF;
198- END//
199-
200- DELIMITER ;
201-
202- -- ========================================
203- -- VERIFICATION QUERIES
204- -- ========================================
205- -- Check that event is created and enabled
206- SHOW EVENTS LIKE ' ev_compress_load' ;
207-
208- -- Check a few rows
209- SELECT COUNT (* ) FROM students_big;
0 commit comments