Eu tenho uma tabela mysql que rastreia visualizações de página. Cada linha inclui um carimbo de data. Desejo remover regularmente todas as linhas com mais de 30 dias. Poderia ou deveria acionar uma ação em cada inserção de uma nova linha que excluiria as linhas com mais de 30 dias? Ou seria melhor adicionar uma ação de exclusão separada junto com cada nova inserção?
relate perguntas
-
Existem ferramentas de benchmarking do MySQL? [fechado]
-
Onde posso encontrar o log lento do mysql?
-
Como posso otimizar um mysqldump de um banco de dados grande?
-
Quando é o momento certo para usar o MariaDB em vez do MySQL e por quê?
-
Como um grupo pode rastrear alterações no esquema do banco de dados?
Não acho que seja crítico ter as linhas antigas no exato momento em que completam 30 dias - alguns segundos / minutos / horas de atraso provavelmente não o prejudicarão. Portanto, eu removeria linhas antigas com alguma execução de tarefa/consulta agendada em algum intervalo fixo.
Caso contrário, você acabará executando uma consulta adicional para cada exibição de página que obtiver.
Você não deseja um gatilho para microgerenciar essas exclusões. Eu tenho uma postagem antiga onde criei um evento MySQL para excluir linhas para você ( o evento MySQL não é executado )
Aqui está um evento para excluir dados com mais de 30 dias a cada hora a partir da meia-noite de hoje
Serei totalmente independente de quaisquer gatilhos
Claro, você deve habilitar o event_scheduler
Primeiro, adicione isso a
my.cnf
Em seguida, faça o login no mysql como root e execute
DE UMA CHANCE !!!
Basta obter o front-end para exibir os dados dos últimos 30 dias. A exclusão no lesuire talvez uma vez por semana, dependendo dos recursos