Ajude o site desativando o bloqueador de anúncio
Cabeçalho

Mysql e MariaDB. Otimização, desempenho, velocidade. OptimizeAllTables

Autor: Eurai Criado: 25/10/2024 Atualizado: 12/11/2025 MySQL / MariaDB
Postagem

 

⚙️ MySQL e MariaDB — Otimização, Desempenho e Velocidade com OptimizeAllTables

Scripts e configurações práticas para aumentar a performance e estabilidade de bancos MySQL e MariaDB, utilizando uma procedure que otimiza todas as tabelas do banco e ajustes de parâmetros no my.ini.


📘 Criando a Procedure OptimizeAllTables()

Crie uma procedure que percorre todas as tabelas do banco atual e executa o comando OPTIMIZE TABLE automaticamente.

DELIMITER $$

DROP PROCEDURE IF EXISTS OptimizeAllTables$$

CREATE PROCEDURE OptimizeAllTables()
BEGIN
  DECLARE done INT DEFAULT 0;
  DECLARE tableName VARCHAR(255);
  DECLARE cur CURSOR FOR
    SELECT table_name
    FROM information_schema.tables
    WHERE table_schema = DATABASE();

  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

  -- Desativa as verificações de chaves estrangeiras para evitar erros
  SET FOREIGN_KEY_CHECKS = 0;

  OPEN cur;

  read_loop: LOOP
    FETCH cur INTO tableName;
    IF done THEN
      LEAVE read_loop;
    END IF;

    SET @stmt = CONCAT('OPTIMIZE TABLE `', tableName, '`');
    PREPARE stmt FROM @stmt;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;
  END LOOP;

  CLOSE cur;

  -- Reativa as verificações após a otimização
  SET FOREIGN_KEY_CHECKS = 1;
END$$

DELIMITER ;

Essa procedure percorre todas as tabelas do banco corrente e executa OPTIMIZE TABLE em cada uma, liberando espaço e reorganizando índices.


🚀 Executando a Procedure

CALL OptimizeAllTables();

Execute o comando acima após longos períodos de inserções/deleções para recuperar desempenho e reduzir fragmentação.

💡 Dica: configure um agendamento (CRON ou Event Scheduler) para executar mensalmente a otimização automática.

🧠 Melhorando o Desempenho Geral — Configurações no my.ini

Abra o arquivo de configuração no caminho:

[Pasta de instalação]\mariadb\data\my.ini

[mariadb]

innodb_buffer_pool_size=1G
innodb_log_file_size=256M
innodb_flush_log_at_trx_commit=2
innodb_file_per_table=1

Essas configurações melhoram a velocidade de I/O e otimizam o uso de memória do InnoDB.

[mysqld]

query_cache_type=1
query_cache_size=64M

Ativa o cache de consultas, reduzindo tempo de resposta em selects repetitivos.

⚠️ Atenção: nas versões mais recentes do MySQL (8+), o query_cache foi descontinuado. Para essas versões, utilize Performance Schema e índices otimizados.

📈 Benefícios esperados

  • Melhor uso da memória e cache;
  • Redução de fragmentação em tabelas;
  • Maior estabilidade em operações intensas;
  • Consultas mais rápidas após a otimização;
  • Gerenciamento automatizado de espaço físico.

Gostou? Compartilhe com seus amigos e deixe um comentário! 😎
Um abraço e até a próxima!

ASSINE A NEWSLETTER

Cadastrando...

PIX uDesenv

PIX QR Code para depósito

Clique para doar

Parceiros

Tudo em ADVPL - Blog parceiro

Blog ADVPL