mirror of
https://github.com/MariaDB/server.git
synced 2025-11-09 11:41:36 +03:00
This essentially reverts commit 4e89ec6692
and only disables InnoDB persistent statistics for tests where it is
desirable. By design, InnoDB persistent statistics will not be updated
except by ANALYZE TABLE or by STATS_AUTO_RECALC.
The internal transactions that update persistent InnoDB statistics
in background tasks (with innodb_stats_auto_recalc=ON) may cause
nondeterministic query plans or interfere with some tests that deal
with other InnoDB internals, such as the purge of transaction history.
112 lines
5.6 KiB
Plaintext
112 lines
5.6 KiB
Plaintext
SET @save_innodb_stats_persistent = @@GLOBAL.innodb_stats_persistent;
|
|
SET GLOBAL innodb_stats_persistent = OFF;
|
|
SET @save_innodb_compression_level = @@global.innodb_compression_level;
|
|
SET global innodb_compression_level=0;
|
|
#create table with 1K block size
|
|
CREATE TABLE tab5 (col_1 CHAR (255) ,
|
|
col_2 VARCHAR (255), col_3 longtext,
|
|
col_4 longtext,col_5 longtext,
|
|
col_6 longtext , col_7 longtext ,
|
|
col_8 longtext ,col_9 longtext ,
|
|
col_10 longtext ,col_11 int auto_increment primary key)
|
|
ENGINE = innodb ROW_FORMAT=compressed key_block_size=1;
|
|
#create indexes
|
|
CREATE INDEX idx1 ON tab5(col_4(10));
|
|
CREATE INDEX idx2 ON tab5(col_5(10));
|
|
CREATE INDEX idx3 ON tab5(col_6(10));
|
|
CREATE INDEX idx4 ON tab5(col_7(10));
|
|
CREATE INDEX idx5 ON tab5(col_8(10));
|
|
CREATE INDEX idx6 ON tab5(col_11);
|
|
#load the with repeat function
|
|
SET @col_1 = repeat('a', 100);
|
|
SET @col_2 = repeat('b', 100);
|
|
SET @col_3 = repeat('c', 100);
|
|
SET @col_4 = repeat('d', 100);
|
|
SET @col_5 = repeat('e', 100);
|
|
SET @col_6 = repeat('f', 100);
|
|
SET @col_7 = repeat('g', 100);
|
|
SET @col_8 = repeat('h', 100);
|
|
SET @col_9 = repeat('i', 100);
|
|
SET @col_10 = repeat('j', 100);
|
|
#insert 10 records
|
|
BEGIN;
|
|
INSERT INTO tab5(col_1,col_2,col_3,col_4,col_5,col_6,col_7,col_8,col_9,col_10)
|
|
VALUES (@col_1,@col_2,@col_3,@col_4,@cl_5,@col_6,@col_7,@col_8,@col_9,@col_10);
|
|
INSERT INTO tab5(col_1,col_2,col_3,col_4,col_5,col_6,col_7,col_8,col_9,col_10)
|
|
VALUES (@col_1,@col_2,@col_3,@col_4,@cl_5,@col_6,@col_7,@col_8,@col_9,@col_10);
|
|
INSERT INTO tab5(col_1,col_2,col_3,col_4,col_5,col_6,col_7,col_8,col_9,col_10)
|
|
VALUES (@col_1,@col_2,@col_3,@col_4,@cl_5,@col_6,@col_7,@col_8,@col_9,@col_10);
|
|
INSERT INTO tab5(col_1,col_2,col_3,col_4,col_5,col_6,col_7,col_8,col_9,col_10)
|
|
VALUES (@col_1,@col_2,@col_3,@col_4,@cl_5,@col_6,@col_7,@col_8,@col_9,@col_10);
|
|
INSERT INTO tab5(col_1,col_2,col_3,col_4,col_5,col_6,col_7,col_8,col_9,col_10)
|
|
VALUES (@col_1,@col_2,@col_3,@col_4,@cl_5,@col_6,@col_7,@col_8,@col_9,@col_10);
|
|
INSERT INTO tab5(col_1,col_2,col_3,col_4,col_5,col_6,col_7,col_8,col_9,col_10)
|
|
VALUES (@col_1,@col_2,@col_3,@col_4,@cl_5,@col_6,@col_7,@col_8,@col_9,@col_10);
|
|
INSERT INTO tab5(col_1,col_2,col_3,col_4,col_5,col_6,col_7,col_8,col_9,col_10)
|
|
VALUES (@col_1,@col_2,@col_3,@col_4,@cl_5,@col_6,@col_7,@col_8,@col_9,@col_10);
|
|
INSERT INTO tab5(col_1,col_2,col_3,col_4,col_5,col_6,col_7,col_8,col_9,col_10)
|
|
VALUES (@col_1,@col_2,@col_3,@col_4,@cl_5,@col_6,@col_7,@col_8,@col_9,@col_10);
|
|
INSERT INTO tab5(col_1,col_2,col_3,col_4,col_5,col_6,col_7,col_8,col_9,col_10)
|
|
VALUES (@col_1,@col_2,@col_3,@col_4,@cl_5,@col_6,@col_7,@col_8,@col_9,@col_10);
|
|
INSERT INTO tab5(col_1,col_2,col_3,col_4,col_5,col_6,col_7,col_8,col_9,col_10)
|
|
VALUES (@col_1,@col_2,@col_3,@col_4,@cl_5,@col_6,@col_7,@col_8,@col_9,@col_10);
|
|
COMMIT;
|
|
#set the compression level=9 (High compress)
|
|
SET global innodb_compression_level=9;
|
|
#create table with 1K block size
|
|
CREATE TABLE tab6 (col_1 CHAR (255) ,
|
|
col_2 VARCHAR (255), col_3 longtext,
|
|
col_4 longtext,col_5 longtext,
|
|
col_6 longtext , col_7 longtext ,
|
|
col_8 longtext ,col_9 longtext ,
|
|
col_10 longtext ,col_11 int auto_increment primary key)
|
|
ENGINE = innodb ROW_FORMAT=compressed key_block_size=1;
|
|
#create indexes
|
|
CREATE INDEX idx1 ON tab6(col_4(10));
|
|
CREATE INDEX idx2 ON tab6(col_5(10));
|
|
CREATE INDEX idx3 ON tab6(col_6(10));
|
|
CREATE INDEX idx4 ON tab6(col_7(10));
|
|
CREATE INDEX idx5 ON tab6(col_8(10));
|
|
CREATE INDEX idx6 ON tab6(col_11);
|
|
#insert 10 records
|
|
BEGIN;
|
|
INSERT INTO tab6(col_1,col_2,col_3,col_4,col_5,col_6,col_7,col_8,col_9,col_10)
|
|
VALUES (@col_1,@col_2,@col_3,@col_4,@cl_5,@col_6,@col_7,@col_8,@col_9,@col_10);
|
|
INSERT INTO tab6(col_1,col_2,col_3,col_4,col_5,col_6,col_7,col_8,col_9,col_10)
|
|
VALUES (@col_1,@col_2,@col_3,@col_4,@cl_5,@col_6,@col_7,@col_8,@col_9,@col_10);
|
|
INSERT INTO tab6(col_1,col_2,col_3,col_4,col_5,col_6,col_7,col_8,col_9,col_10)
|
|
VALUES (@col_1,@col_2,@col_3,@col_4,@cl_5,@col_6,@col_7,@col_8,@col_9,@col_10);
|
|
INSERT INTO tab6(col_1,col_2,col_3,col_4,col_5,col_6,col_7,col_8,col_9,col_10)
|
|
VALUES (@col_1,@col_2,@col_3,@col_4,@cl_5,@col_6,@col_7,@col_8,@col_9,@col_10);
|
|
INSERT INTO tab6(col_1,col_2,col_3,col_4,col_5,col_6,col_7,col_8,col_9,col_10)
|
|
VALUES (@col_1,@col_2,@col_3,@col_4,@cl_5,@col_6,@col_7,@col_8,@col_9,@col_10);
|
|
INSERT INTO tab6(col_1,col_2,col_3,col_4,col_5,col_6,col_7,col_8,col_9,col_10)
|
|
VALUES (@col_1,@col_2,@col_3,@col_4,@cl_5,@col_6,@col_7,@col_8,@col_9,@col_10);
|
|
INSERT INTO tab6(col_1,col_2,col_3,col_4,col_5,col_6,col_7,col_8,col_9,col_10)
|
|
VALUES (@col_1,@col_2,@col_3,@col_4,@cl_5,@col_6,@col_7,@col_8,@col_9,@col_10);
|
|
INSERT INTO tab6(col_1,col_2,col_3,col_4,col_5,col_6,col_7,col_8,col_9,col_10)
|
|
VALUES (@col_1,@col_2,@col_3,@col_4,@cl_5,@col_6,@col_7,@col_8,@col_9,@col_10);
|
|
INSERT INTO tab6(col_1,col_2,col_3,col_4,col_5,col_6,col_7,col_8,col_9,col_10)
|
|
VALUES (@col_1,@col_2,@col_3,@col_4,@cl_5,@col_6,@col_7,@col_8,@col_9,@col_10);
|
|
INSERT INTO tab6(col_1,col_2,col_3,col_4,col_5,col_6,col_7,col_8,col_9,col_10)
|
|
VALUES (@col_1,@col_2,@col_3,@col_4,@cl_5,@col_6,@col_7,@col_8,@col_9,@col_10);
|
|
COMMIT;
|
|
#diff the sizes of the No compressed table and high compressed table
|
|
SET @size=(SELECT
|
|
(SELECT (SUM(DATA_LENGTH+INDEX_LENGTH)/1024/1024)
|
|
FROM INFORMATION_SCHEMA.TABLES
|
|
WHERE table_name='tab5' AND ENGINE='InnoDB' AND table_schema='test')
|
|
-
|
|
(SELECT SUM(DATA_LENGTH+INDEX_LENGTH)/1024/1024
|
|
FROM INFORMATION_SCHEMA.TABLES
|
|
WHERE table_name='tab6' AND ENGINE='InnoDB' AND table_schema='test')
|
|
FROM DUAL);
|
|
#check the size of the table, it should not be Negative value
|
|
#The results of this query Test pass = 1 and fail=0
|
|
SELECT @size >= 0;
|
|
@size >= 0
|
|
1
|
|
DROP TABLE tab5, tab6;
|
|
SET GLOBAL innodb_compression_level = @save_innodb_compression_level;
|
|
SET GLOBAL innodb_stats_persistent = @save_innodb_stats_persistent;
|