summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThirunarayanan Balathandayuthapani <thiru@mariadb.com>2018-02-23 15:05:45 +0530
committerThirunarayanan Balathandayuthapani <thiru@mariadb.com>2018-02-23 15:05:45 +0530
commite05a4e383e9d88e24ddd9f7ea964ebf42dbfd19d (patch)
treeb674eb705ab89914b65a51f326e10a23b16aff1c
parent24deb3737f60c8aea1781c4dd244322f0066b197 (diff)
downloadmariadb-git-e05a4e383e9d88e24ddd9f7ea964ebf42dbfd19d.tar.gz
MDEV-15053 Split buf_pool_t::mutex - followup fix
Added the contributed test case from the below percona's patch. committer: Laurynas Biveinis <laurynas.biveinis@percona.com> branch nick: mysql-5.7-percona-patches timestamp: Tue 2015-02-03 12:42:11 +0200 message: Fix http://bugs.mysql.com/bug.php?id=75534 (Solve buffer pool mutex contention by splitting it).
-rw-r--r--mysql-test/include/have_multiple_buffer_pools.inc4
-rw-r--r--mysql-test/suite/innodb/r/innodb_buffer_pool_debug.result5
-rw-r--r--mysql-test/suite/innodb/t/innodb_buffer_pool_debug.test10
-rw-r--r--mysql-test/suite/innodb/t/innodb_buffer_pool_resize_multiple_pools.opt1
-rw-r--r--mysql-test/suite/innodb/t/innodb_buffer_pool_resize_multiple_pools.test37
-rw-r--r--mysql-test/suite/innodb_zip/r/innodb-buffer-pool.result29
-rw-r--r--mysql-test/suite/innodb_zip/t/innodb-buffer-pool.test38
7 files changed, 124 insertions, 0 deletions
diff --git a/mysql-test/include/have_multiple_buffer_pools.inc b/mysql-test/include/have_multiple_buffer_pools.inc
new file mode 100644
index 00000000000..00f3b727611
--- /dev/null
+++ b/mysql-test/include/have_multiple_buffer_pools.inc
@@ -0,0 +1,4 @@
+if (`select count(*) = 0 from information_schema.global_variables where lower(variable_name) = 'innodb_buffer_pool_instances' and variable_value >= 2`)
+{
+ --skip Test requires InnoDB with at least two buffer pool instances
+}
diff --git a/mysql-test/suite/innodb/r/innodb_buffer_pool_debug.result b/mysql-test/suite/innodb/r/innodb_buffer_pool_debug.result
new file mode 100644
index 00000000000..ba042324a33
--- /dev/null
+++ b/mysql-test/suite/innodb/r/innodb_buffer_pool_debug.result
@@ -0,0 +1,5 @@
+SET @old_innodb_buffer_pool_evict = @@innodb_buffer_pool_evict;
+CREATE TABLE t1 (id INT PRIMARY KEY) ENGINE = InnoDB ROW_FORMAT = COMPRESSED;
+SET GLOBAL innodb_buffer_pool_evict = 'uncompressed';
+DROP TABLE t1;
+SET GLOBAL innodb_buffer_pool_evict = @old_innodb_buffer_pool_evict;
diff --git a/mysql-test/suite/innodb/t/innodb_buffer_pool_debug.test b/mysql-test/suite/innodb/t/innodb_buffer_pool_debug.test
new file mode 100644
index 00000000000..18f38a96db1
--- /dev/null
+++ b/mysql-test/suite/innodb/t/innodb_buffer_pool_debug.test
@@ -0,0 +1,10 @@
+--source include/have_innodb.inc
+--source include/have_debug.inc
+
+SET @old_innodb_buffer_pool_evict = @@innodb_buffer_pool_evict;
+
+CREATE TABLE t1 (id INT PRIMARY KEY) ENGINE = InnoDB ROW_FORMAT = COMPRESSED;
+SET GLOBAL innodb_buffer_pool_evict = 'uncompressed';
+
+DROP TABLE t1;
+SET GLOBAL innodb_buffer_pool_evict = @old_innodb_buffer_pool_evict;
diff --git a/mysql-test/suite/innodb/t/innodb_buffer_pool_resize_multiple_pools.opt b/mysql-test/suite/innodb/t/innodb_buffer_pool_resize_multiple_pools.opt
new file mode 100644
index 00000000000..18b4ef0cbca
--- /dev/null
+++ b/mysql-test/suite/innodb/t/innodb_buffer_pool_resize_multiple_pools.opt
@@ -0,0 +1 @@
+--innodb_buffer_pool_size=1G --innodb_buffer_pool_instances=2
diff --git a/mysql-test/suite/innodb/t/innodb_buffer_pool_resize_multiple_pools.test b/mysql-test/suite/innodb/t/innodb_buffer_pool_resize_multiple_pools.test
new file mode 100644
index 00000000000..8a154f78831
--- /dev/null
+++ b/mysql-test/suite/innodb/t/innodb_buffer_pool_resize_multiple_pools.test
@@ -0,0 +1,37 @@
+# Test InnoDB online buffer pool resize with multiple buffer pool instances
+
+--source include/have_innodb.inc
+--source include/have_debug.inc
+
+# Marked as a big test because of a 1.25GB buffer pool
+--source include/big_test.inc
+--source include/have_multiple_buffer_pools.inc
+
+let $wait_timeout = 180;
+let $wait_condition =
+ SELECT SUBSTR(variable_value, 1, 34) = 'Completed resizing buffer pool at '
+ FROM information_schema.global_status
+ WHERE LOWER(variable_name) = 'innodb_buffer_pool_resize_status';
+
+--disable_query_log
+set @old_innodb_buffer_pool_size = @@innodb_buffer_pool_size;
+if (`select (version() like '%debug%') > 0`)
+{
+ set @old_innodb_disable_resize = @@innodb_disable_resize_buffer_pool_debug;
+ set global innodb_disable_resize_buffer_pool_debug = OFF;
+}
+--enable_query_log
+
+set @old_innodb_buffer_pool_size = @@innodb_buffer_pool_size;
+
+SET @@GLOBAL.innodb_buffer_pool_size = 1342177280;
+--source include/wait_condition.inc
+
+--disable_query_log
+set global innodb_buffer_pool_size = @old_innodb_buffer_pool_size;
+if (`select (version() like '%debug%') > 0`)
+{
+ set global innodb_disable_resize_buffer_pool_debug = @old_innodb_disable_resize;
+}
+--enable_query_log
+--source include/wait_condition.inc
diff --git a/mysql-test/suite/innodb_zip/r/innodb-buffer-pool.result b/mysql-test/suite/innodb_zip/r/innodb-buffer-pool.result
new file mode 100644
index 00000000000..13d39ef1738
--- /dev/null
+++ b/mysql-test/suite/innodb_zip/r/innodb-buffer-pool.result
@@ -0,0 +1,29 @@
+SET @old_innodb_file_per_table=@@innodb_file_per_table;
+SET GLOBAL innodb_file_per_table=ON;
+CREATE TABLE `test1` (
+`a` int primary key auto_increment,
+`b` int default 0,
+`c` char(100) default 'testtest'
+) ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
+CREATE PROCEDURE insert_many(p1 int)
+BEGIN
+SET @x = 0;
+SET @y = 0;
+start transaction;
+REPEAT
+insert into test1 set b=1;
+SET @x = @x + 1;
+SET @y = @y + 1;
+IF @y >= 1000 THEN
+commit;
+start transaction;
+SET @y = 0;
+END IF;
+UNTIL @x >= p1 END REPEAT;
+commit;
+END|
+call insert_many(100000);
+DROP PROCEDURE insert_many;
+ALTER TABLE test1 ENGINE=MyISAM;
+DROP TABLE test1;
+SET GLOBAL innodb_file_per_table=@old_innodb_file_per_table;
diff --git a/mysql-test/suite/innodb_zip/t/innodb-buffer-pool.test b/mysql-test/suite/innodb_zip/t/innodb-buffer-pool.test
new file mode 100644
index 00000000000..6cb9246d81d
--- /dev/null
+++ b/mysql-test/suite/innodb_zip/t/innodb-buffer-pool.test
@@ -0,0 +1,38 @@
+# Compression-related InnoDB buffer pool tests
+--source include/have_innodb.inc
+
+SET @old_innodb_file_per_table=@@innodb_file_per_table;
+SET GLOBAL innodb_file_per_table=ON;
+
+CREATE TABLE `test1` (
+ `a` int primary key auto_increment,
+ `b` int default 0,
+ `c` char(100) default 'testtest'
+) ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
+
+delimiter |;
+CREATE PROCEDURE insert_many(p1 int)
+BEGIN
+SET @x = 0;
+SET @y = 0;
+start transaction;
+REPEAT
+ insert into test1 set b=1;
+ SET @x = @x + 1;
+ SET @y = @y + 1;
+ IF @y >= 1000 THEN
+ commit;
+ start transaction;
+ SET @y = 0;
+ END IF;
+UNTIL @x >= p1 END REPEAT;
+commit;
+END|
+delimiter ;|
+call insert_many(100000);
+DROP PROCEDURE insert_many;
+
+ALTER TABLE test1 ENGINE=MyISAM;
+
+DROP TABLE test1;
+SET GLOBAL innodb_file_per_table=@old_innodb_file_per_table;