rendered paste bodyCREATE DATABASE admin;
USE admin;
DROP TABLE IF EXISTS schema_stats_history;
CREATE TABLE admin.schema_stats_history (
id INT AUTO_INCREMENT PRIMARY KEY,
table_schema VARCHAR(64),
table_name VARCHAR(64),
stats_collected DATETIME,
KEY (table_schema, table_name)
) ENGINE = MyISAM;
DELIMITER //
DROP PROCEDURE gather_schema_stats//
CREATE DEFINER = root@localhost PROCEDURE gather_schema_stats(IN schema_name VARCHAR(64))
READS SQL DATA
SQL SECURITY INVOKER
BEGIN
DECLARE done BOOL DEFAULT FALSE;
DECLARE v_schema, v_table VARCHAR(64);
DECLARE c_tables CURSOR FOR SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = schema_name;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = TRUE;
SET v_schema = schema_name;
OPEN c_tables;
analyzeTables:LOOP
FETCH c_tables INTO v_table;
IF done THEN
CLOSE c_tables;
LEAVE analyzeTables;
END IF;
SET @analyzeStmt:=CONCAT('ANALYZE TABLE ',v_schema,'.',v_table);
PREPARE stmt FROM @analyzeStmt;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
INSERT INTO schema_stats_history VALUES (NULL,v_schema, v_table, NOW());
END LOOP;
END;
//
DELIMITER ;
SET @schema:='test';
CALL gather_schema_stats(@schema);
SELECT * FROM admin.schema_stats_history;