mirror of
https://github.com/MariaDB/server.git
synced 2025-07-23 08:45:18 +03:00
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
26 lines
538 B
Plaintext
26 lines
538 B
Plaintext
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|
|
|
CREATE TABLE t1(
|
|
class INT,
|
|
id INT,
|
|
title VARCHAR(100)
|
|
) ENGINE=InnoDB;
|
|
SELECT COUNT(*) FROM t1;
|
|
COUNT(*)
|
|
1000000
|
|
SET GLOBAL innodb_stats_persistent_sample_pages=2000;
|
|
ANALYZE TABLE t1;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 analyze status OK
|
|
DROP TABLE t1;
|
|
DROP PROCEDURE populate_t1;
|
|
SET GLOBAL innodb_stats_persistent_sample_pages=default;
|