Procedure com OPTIMIZE TABLE em todas as tabelas do mysql
Posted on : 07-08-2009 | By : Wryel | In : mysql
0
As vezes quando se tem um banco de dados com muitas tabelas, e após muitos inserts/updates você percebe que precisa de alguns OPTIMIZE TABLE tabela. Pra que perder uma hora buscando as tabelas certas ? Claro que, se você estiver em um ambiente de produção ai ja é outra história, de qualquer maneira, segue um ganha tempo:
DROP PROCEDURE IF EXISTS optimize_tables; DELIMITER $$ CREATE PROCEDURE optimize_tables() BEGIN -- DECLARE $tabela VARCHAR(255); DECLARE $contador INT DEFAULT 0; DECLARE $linhas INT DEFAULT 0; DECLARE $consulta CURSOR FOR SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE table_schema = DATABASE(); -- OPEN $consulta; SELECT FOUND_ROWS() INTO $linhas; WHILE $contador < $linhas DO FETCH $consulta INTO $tabela; SET @query = CONCAT("OPTIMIZE TABLE ", $tabela); PREPARE query FROM @query; EXECUTE query; SET $contador = $contador + 1; END WHILE; CLOSE $consulta; DEALLOCATE PREPARE query; -- END$$ DELIMITER ; $$ |
Se você não souber o que fazer com o código acima, va no client do mysql e faça:
mysql -h ipDoMysql -u seuUsuario -p bancoDeDados|Se não tiver deixe um espaço em branco |
digite sua senha, copie e cole o primeiro código e depois para executar:
CALL optimize_tables; |



