ustify>Capa SQl 33

Clique aqui para ler todos os artigos desta edição

Agendamento de tarefas em MySQL

 

A versão 5.1 do MySQL introduz um novo conceito chamado Events. Este recurso permite o agendamento de comandos SQL para que sejam executados em um horário pré-determinado, ou seja, você pode criar uma instrução “Execute um comando SQL todos os dias às 15:30”. Neste caso, é possível automatizar processos de manutenção do banco de dados, dentre outras tarefas, de modo a não exigir intervenções do DBA, facilitando assim o gerenciamento das informações, bem como o monitoramento das atividades do SGBD.

Vale ressaltar que a versão 5.1 encontra-se em Beta, portanto deve-se ter cuidado ao utilizá-la em ambientes de produção, ou seja, é recomendável realizar testes em uma outra base antes de colocá-lo na base principal efetivamente. De qualquer forma, podemos utilizar o Event para criarmos rotinas que auxiliem a administração do banco de dados, reduzindo o esforço de monitoramento e acompanhamento da execução do SGBD.

Este artigo tem como objetivo apresentar a sintaxe do novo recurso, e discutir situações e exemplos de uso deste mecanismo de agendamento de tarefas em MySQL. Basicamente, serão apresentados os comandos para a criação, alteração e exclusão de eventos, salientando os possíveis métodos de agendamento de tarefas. Além disto, será abordado o funcionamento da rotina de execução de eventos, bem como as principais questões relacionadas ao seu uso.

Como funciona o Event?

O MySQL possui uma thread (event_scheduler) que é responsável pela execução das tarefas que foram agendadas. Portanto, nenhuma tarefa será executada a menos que você coloque em execução o event_scheduler, sendo que é possível interrompê-lo a qualquer momento inibindo todos os agendamentos previamente configurados. Esta thread executa em background e procura pelas tarefas existentes disparando aquelas cujo horário de ativação tenha sido alcançado.

Para ativar ou desativar o event_scheduler basta executar o comando SET GLOBAL dentro de um cliente MySQL. Vale ressaltar que para isto é necessário que o usuário tenha o privilégio SUPER, caso contrário não será permitido alterar o estado desta thread. Na Listagem 1 estão os comandos para ligar e desligar o event_scheduler, salientando que em todos os exemplos foi utilizado o mysql client, que é uma ferramenta de linha de comando.

 

Listagem 1. Comandos para ligar e desligar o event_scheduler no MySQL.

# Ligando o event_scheduler

mysql>SET GLOBAL event_scheduler = 1;

 

# Desligando o event_scheduler

mysql>SET GLOBAL event_scheduler = 0;

 

O exemplo anterior ilustra a configuração do event_scheduler de forma online. Neste caso, ao reiniciar o servidor as modificações são descartadas. Entretanto, é possível determinar o comportamento do event_scheduler via arquivo de configuração, tornando assim persistente a alteração. Para isto, basta utilizar o arquivo de configuração (my.ini ou my.cnf), cuja localização varia de acordo com o sistema operacional utilizado. Por exemplo, em Linux você o encontra geralmente em /etc/my.cnf enquanto em Windows o arquivo my.ini se encontra dentro do diretório de instalação do MySQL, geralmente colocado em Arquivos de Programas\MySQL\MySQL[Versão]. Neste caso, deve-se adicionar o parâmetro referente ao event_scheduler dentro do grupo [mysqld] ou [server], como ilustra o exemplo a seguir. Vale ressaltar que ao inserir um parâmetro no arquivo de configuração é preciso reiniciar o MySQL para que as alterações surtam efeito, ficando permanente mesmo que haja uma parada do servidor.

 

[mysqld]

event_scheduler=1

 

De um modo geral, é desejável obter informações acerca da situação atual do event_scheduler, ou seja, se o ele está habilitado. Para isto, utiliza-se o comando SHOW VARIABLES como exibido a seguir:

 

mysql>SHOW VARIABLES LIKE “event_scheduler”;

+-----------------+-------+

| Variable_name   | Value |

+-----------------+-------+

| event_scheduler | ON    |

+-----------------+-------+

1 row in set (0.00 sec)

 

O comando anterior indica que o event_scheduler está ligado (ON) e fará a execução de todas as tarefas agendadas. Uma vez que o event_scheduler está configurado, podemos criar um evento utilizando o MySQL.

Criando eventos em MySQL

Para a criação de tarefas ou eventos em MySQL, utilizam-se o comando CREATE EVENT, descrito a seguir neste artigo. Para facilitar a apresentação dos comandos, neste artigo será utilizada a seguinte convenção para destacar os elementos que compõem um comando do SGBD:

 

...

Quer ler esse conteúdo completo? Tenha acesso completo