You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.7 KiB
58 lines
1.7 KiB
create
|
|
definer = `mysql.sys`@localhost procedure sys.ps_truncate_all_tables(IN in_verbose tinyint(1)) comment '
|
|
Description
|
|
-----------
|
|
|
|
Truncates all summary tables within Performance Schema,
|
|
resetting all aggregated instrumentation as a snapshot.
|
|
|
|
Parameters
|
|
-----------
|
|
|
|
in_verbose (BOOLEAN):
|
|
Whether to print each TRUNCATE statement before running
|
|
|
|
Example
|
|
-----------
|
|
|
|
mysql> CALL sys.ps_truncate_all_tables(false);
|
|
+---------------------+
|
|
| summary |
|
|
+---------------------+
|
|
| Truncated 44 tables |
|
|
+---------------------+
|
|
1 row in set (0.10 sec)
|
|
|
|
Query OK, 0 rows affected (0.10 sec)
|
|
' deterministic sql security invoker modifies sql data
|
|
BEGIN
|
|
DECLARE v_done INT DEFAULT FALSE;
|
|
DECLARE v_total_tables INT DEFAULT 0;
|
|
DECLARE v_ps_table VARCHAR(64);
|
|
DECLARE ps_tables CURSOR FOR
|
|
SELECT table_name
|
|
FROM INFORMATION_SCHEMA.TABLES
|
|
WHERE table_schema = 'performance_schema'
|
|
AND (table_name LIKE '%summary%'
|
|
OR table_name LIKE '%history%');
|
|
DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_done = TRUE;
|
|
OPEN ps_tables;
|
|
ps_tables_loop: LOOP
|
|
FETCH ps_tables INTO v_ps_table;
|
|
IF v_done THEN
|
|
LEAVE ps_tables_loop;
|
|
END IF;
|
|
SET @truncate_stmt := CONCAT('TRUNCATE TABLE performance_schema.', v_ps_table);
|
|
IF in_verbose THEN
|
|
SELECT CONCAT('Running: ', @truncate_stmt) AS status;
|
|
END IF;
|
|
PREPARE truncate_stmt FROM @truncate_stmt;
|
|
EXECUTE truncate_stmt;
|
|
DEALLOCATE PREPARE truncate_stmt;
|
|
SET v_total_tables = v_total_tables + 1;
|
|
END LOOP;
|
|
CLOSE ps_tables;
|
|
SELECT CONCAT('Truncated ', v_total_tables, ' tables') AS summary;
|
|
END;
|
|
|