1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

MDEV-6361: innodb_compression_algorithm configuration variable can

be set to unsupported value.

MDEV-6350: Excessive unnecessary memory allocation at InnoDB/XtraDB
startup if LZO is installed.
This commit is contained in:
Jan Lindström
2014-06-25 08:46:54 +03:00
parent 0cb7c19fbe
commit 3bca01930a
25 changed files with 1654 additions and 29 deletions

View File

@ -0,0 +1,137 @@
-- source include/have_innodb.inc
--disable_query_log
let $innodb_compression_algorithm_orig=`SELECT @@innodb_compression_algorithm`;
let $innodb_file_format_orig = `SELECT @@innodb_file_format`;
let $innodb_file_per_table_orig = `SELECT @@innodb_file_per_table`;
--enable_query_log
SET GLOBAL innodb_file_format = `Barracuda`;
SET GLOBAL innodb_file_per_table = ON;
# ZLIB
SET GLOBAL innodb_compression_algorithm = 1;
CREATE TABLE INNODB_COMPRESSED(c1 INT, b char(20)) ENGINE=INNODB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
SHOW WARNINGS;
CREATE TABLE INNODB_NORMAL (c1 INT, b char(20)) ENGINE=INNODB;
SHOW WARNINGS;
CREATE TABLE INNODB_PAGE_COMPRESSED1 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=1;
SHOW WARNINGS;
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED1;
CREATE TABLE INNODB_PAGE_COMPRESSED2 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=2;
SHOW WARNINGS;
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED2;
CREATE TABLE INNODB_PAGE_COMPRESSED3 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=3;
SHOW WARNINGS;
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED3;
CREATE TABLE INNODB_PAGE_COMPRESSED4 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=4;
SHOW WARNINGS;
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED4;
CREATE TABLE INNODB_PAGE_COMPRESSED5 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=5;
SHOW WARNINGS;
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED5;
CREATE TABLE INNODB_PAGE_COMPRESSED6 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=6;
SHOW WARNINGS;
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED6;
CREATE TABLE INNODB_PAGE_COMPRESSED7 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=7;
SHOW WARNINGS;
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED7;
CREATE TABLE INNODB_PAGE_COMPRESSED8 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=8;
SHOW WARNINGS;
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED8;
CREATE TABLE INNODB_PAGE_COMPRESSED9 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=9;
SHOW WARNINGS;
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED9;
DELIMITER //;
CREATE PROCEDURE INNODB_INSERT_PROC (REPEAT_COUNT INT)
BEGIN
DECLARE CURRENT_NUM INT;
SET CURRENT_NUM = 0;
WHILE CURRENT_NUM < REPEAT_COUNT DO
INSERT INTO INNODB_NORMAL VALUES(CURRENT_NUM,'Testing..');
SET CURRENT_NUM = CURRENT_NUM + 1;
END WHILE;
END//
DELIMITER ;//
COMMIT;
SET AUTOCOMMIT=0;
CALL INNODB_INSERT_PROC(5000);
COMMIT;
SET AUTOCOMMIT=1;
SELECT COUNT(*) FROM INNODB_NORMAL;
INSERT INTO INNODB_COMPRESSED SELECT * FROM INNODB_NORMAL;
INSERT INTO INNODB_PAGE_COMPRESSED1 SELECT * FROM INNODB_NORMAL;
INSERT INTO INNODB_PAGE_COMPRESSED2 SELECT * FROM INNODB_NORMAL;
INSERT INTO INNODB_PAGE_COMPRESSED3 SELECT * FROM INNODB_NORMAL;
INSERT INTO INNODB_PAGE_COMPRESSED4 SELECT * FROM INNODB_NORMAL;
INSERT INTO INNODB_PAGE_COMPRESSED5 SELECT * FROM INNODB_NORMAL;
INSERT INTO INNODB_PAGE_COMPRESSED6 SELECT * FROM INNODB_NORMAL;
INSERT INTO INNODB_PAGE_COMPRESSED7 SELECT * FROM INNODB_NORMAL;
INSERT INTO INNODB_PAGE_COMPRESSED8 SELECT * FROM INNODB_NORMAL;
INSERT INTO INNODB_PAGE_COMPRESSED9 SELECT * FROM INNODB_NORMAL;
COMMIT;
SELECT COUNT(*) FROM INNODB_COMPRESSED;
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED1;
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED1 WHERE C1 < 500000;
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED2 WHERE C1 < 500000;
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED3 WHERE C1 < 500000;
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED4 WHERE C1 < 500000;
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED5 WHERE C1 < 500000;
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED6 WHERE C1 < 500000;
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED7 WHERE C1 < 500000;
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED8 WHERE C1 < 500000;
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED9 WHERE C1 < 500000;
ALTER TABLE INNODB_NORMAL PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=8;
SHOW WARNINGS;
SHOW CREATE TABLE INNODB_NORMAL;
ALTER TABLE INNODB_COMPRESSED ROW_FORMAT=DEFAULT PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=8 KEY_BLOCK_SIZE=0;
SHOW WARNINGS;
SHOW CREATE TABLE INNODB_COMPRESSED;
# NONE
SET GLOBAL innodb_compression_algorithm = 0;
UPDATE INNODB_PAGE_COMPRESSED1 SET c1 = c1 + 1;
UPDATE INNODB_PAGE_COMPRESSED2 SET c1 = c1 + 1;
UPDATE INNODB_PAGE_COMPRESSED3 SET c1 = c1 + 1;
UPDATE INNODB_PAGE_COMPRESSED4 SET c1 = c1 + 1;
UPDATE INNODB_PAGE_COMPRESSED5 SET c1 = c1 + 1;
UPDATE INNODB_PAGE_COMPRESSED6 SET c1 = c1 + 1;
UPDATE INNODB_PAGE_COMPRESSED7 SET c1 = c1 + 1;
UPDATE INNODB_PAGE_COMPRESSED8 SET c1 = c1 + 1;
UPDATE INNODB_PAGE_COMPRESSED9 SET c1 = c1 + 1;
COMMIT;
SELECT COUNT(*) FROM INNODB_COMPRESSED;
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED1;
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED1 WHERE C1 < 500000;
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED2 WHERE C1 < 500000;
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED3 WHERE C1 < 500000;
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED4 WHERE C1 < 500000;
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED5 WHERE C1 < 500000;
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED6 WHERE C1 < 500000;
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED7 WHERE C1 < 500000;
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED8 WHERE C1 < 500000;
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED9 WHERE C1 < 500000;
DROP PROCEDURE INNODB_INSERT_PROC;
DROP TABLE INNODB_NORMAL;
DROP TABLE INNODB_COMPRESSED;
DROP TABLE INNODB_PAGE_COMPRESSED1;
DROP TABLE INNODB_PAGE_COMPRESSED2;
DROP TABLE INNODB_PAGE_COMPRESSED3;
DROP TABLE INNODB_PAGE_COMPRESSED4;
DROP TABLE INNODB_PAGE_COMPRESSED5;
DROP TABLE INNODB_PAGE_COMPRESSED6;
DROP TABLE INNODB_PAGE_COMPRESSED7;
DROP TABLE INNODB_PAGE_COMPRESSED8;
DROP TABLE INNODB_PAGE_COMPRESSED9;
# reset system
--disable_query_log
EVAL SET GLOBAL innodb_compression_algorithm = $innodb_compression_algorithm_orig;
EVAL SET GLOBAL innodb_file_per_table = $innodb_file_per_table_orig;
EVAL SET GLOBAL innodb_file_format = $innodb_file_format_orig;
--enable_query_log