mirror of
https://github.com/MariaDB/server.git
synced 2025-01-30 18:41:56 +01:00
a54b581d03
Problem: We keep pinning pages in dict_stats_analyze_index_below_cur(), but doesn't release these pages. When we have a relative small buffer pool size, and big innodb_stats_persistent_sample_pages, there will be no free pages for use. Solution: Use a separate mtr in dict_stats_analyze_index_below_cur(), and commit mtr before return. Reviewed-by: Jimmy Yang <jimmy.yang@oracle.com> RB: 11362
42 lines
803 B
Text
42 lines
803 B
Text
#
|
|
# BUG#22385442 - INNODB: DIFFICULT TO FIND FREE BLOCKS IN THE BUFFER POOL
|
|
#
|
|
|
|
--source include/have_innodb.inc
|
|
--source include/big_test.inc
|
|
|
|
DELIMITER |;
|
|
CREATE PROCEDURE populate_t1()
|
|
BEGIN
|
|
DECLARE i int DEFAULT 1;
|
|
|
|
START TRANSACTION;
|
|
WHILE (i <= 1000000) DO
|
|
INSERT INTO t1 VALUES (i, i, CONCAT('a', i));
|
|
SET i = i + 1;
|
|
END WHILE;
|
|
COMMIT;
|
|
END|
|
|
DELIMITER ;|
|
|
|
|
CREATE TABLE t1(
|
|
class INT,
|
|
id INT,
|
|
title VARCHAR(100)
|
|
) ENGINE=InnoDB;
|
|
|
|
-- disable_query_log
|
|
CALL populate_t1();
|
|
-- enable_query_log
|
|
|
|
SELECT COUNT(*) FROM t1;
|
|
|
|
SET GLOBAL innodb_stats_persistent_sample_pages=2000;
|
|
|
|
ANALYZE TABLE t1;
|
|
|
|
DROP TABLE t1;
|
|
|
|
DROP PROCEDURE populate_t1;
|
|
|
|
SET GLOBAL innodb_stats_persistent_sample_pages=default;
|