Pessoal, bom dia.
Desde 2012, venho trabalhando e desenvolvendo soluções para o ambiente virtual de aprendizagem Moodle. Entre os vários tipos de integração com os sistemas escolares da empresa onde trabalho, detectei que em determinados momentos, a aplicação ficava "lenta". Atrás da resposta deste problema, descobri que o "vilão " por trás disso é a tabela mdl_log. Esta é como se fosse uma tabela de auditoria do Moodle. Essa tabela registra qual usuário está acessando, em que dia foi o acesso, de qual IP ele acessou a aplicação, quais ações ele realizou na página, etc., ou seja, nela são registradas todos os passos dos usuários na aplicação. Imagine um usuário clicando sem parar em links aleatoriamente na página. A cada clique, um registro é inserido nesta tabela! E impressionante o quanto essa tabela cresce. Da última vez que fiz a verificação desta tabela na empresa, ela estava com quase 10GB!!! Isso mesmo, 10GB de dados! Então, tive a brilhante ideia de apagar os dados desta e.... UFA, melhorou consideravelmente a performance da nossa aplicação. Com certeza, a tabela mdl_log é importante para o Moodle, até porque, se não fosse, não estaria lá, não é mesmo? Mas como boa prática de desenvolvimento e desempenho do banco de dados, fiz um EVENTO no MySQL para limpar essa tabela quinzenalmente. Isso evita o crescimento desenfreado da tabela, aumentando consideravelmente a performance do Moodle. Observação importante: Se você tem dúvidas quanto ao manuseio desta tabela, pesquise, peça ajuda ao responsável pelo banco de dados de sua empresa. Vale a pena trocar uma ideia e ver a real necessidade de se deixar ou não dados desta auditoria que o Moodle faz.
Abaixo, segue o script que fiz para realizar a limpeza automaticamente:
/*Criação do evento para limpeza da tabela mdl_log quinzenalmente*/
CREATE EVENT `Evento_limpar_log_moodle` ON SCHEDULE
EVERY 15 DAY
ON COMPLETION NOT PRESERVE
ENABLE
COMMENT ''
DO
BEGIN
delete from mdl_log;
END
Espero que tenham gostado.
Qualquer dúvida estou a disposição.