GNU/Linux >> Linux Esercitazione >  >> Linux

Guida agli eventi MySQL e all'utilità di pianificazione degli eventi

Introduzione

Gli eventi MySQL sono attività che vengono eseguite secondo una programmazione definita dall'utente . L'Event Scheduler è un thread speciale che esegue gli eventi a un'ora programmata.

Gli eventi MySQL sono utili perché facilitano la gestione del database e le attività operative periodiche del database.

In questo tutorial imparerai cosa sono gli eventi MySQL e come configurarli e utilizzarli.

Prerequisiti:

  • Un sistema che esegue MySQL su un server di database
  • Account utente MySQL con privilegi di root

Cos'è MySQL Event Scheduler?

MySQL Event Scheduler è un thread che viene eseguito in background e gestisce l'esecuzione di eventi pianificati. Lo Scheduler è in uno stato di sospensione a meno che la variabile globale event_scheduler è impostato su ON o 1 .

MySQL Event Scheduler rappresenta l'alternativa al lavoro Cron di MySQL . Alcuni vantaggi di Event Scheduler sono:

  • Viene scritto direttamente sul server MySQL.
  • È indipendente dalla piattaforma e dall'applicazione.
  • Può essere utilizzato ogni volta che è richiesto un regolare aggiornamento o pulizia del database.
  • Riduce il numero di compilazioni di query.

Configurazione dell'utilità di pianificazione eventi MySQL

Lo stato di MySQL Event Scheduler può essere configurato per impostare lo Scheduler on , disattivato o disabilita esso.

Per controllare lo stato dell'Utilità di pianificazione eventi, eseguire il comando seguente:

SHOW processlist;

Il event_scheduler la variabile di sistema visualizzata nel risultato mostra lo stato di Event Scheduler. Qui, il event_scheduler lo stato della variabile è In attesa di coda vuota , il che significa che lo Scheduler è attivo e attende che un evento lo attivi.

Gli stati possibili sono:

  • ON :il thread Event Scheduler è in esecuzione ed esegue tutti gli eventi pianificati. Questo è lo stato predefinito dell'utilità di pianificazione. Se lo Scheduler è ON , l'SHOW processlist l'output del comando lo elenca come un processo daemon.

Per attivare l'utilità di pianificazione eventi ON , esegui il comando seguente:

SET GLOBAL event_scheduler = ON;

Il valore ON è intercambiabile con 1 .

  • OFF :Il thread dell'Utilità di pianificazione eventi non è in esecuzione e non viene visualizzato nell'output di SHOW processlist . Se l'Event Scheduler è impostato su OFF , gli eventi programmati non vengono eseguiti.

Per disattivare l'utilità di pianificazione degli eventi OFF , esegui il comando seguente:

SET GLOBAL event_scheduler = OFF;

Il valore OFF è intercambiabile con 0 .

  • DISABLED :questo stato significa che l'utilità di pianificazione degli eventi non è operativa. Il thread non viene eseguito e non viene visualizzato nell'output di SHOW processlist comando.

Per disabilitare l'Utilità di pianificazione eventi, aggiungi la seguente opzione della riga di comando all'avvio del server:

--event-scheduler=DISABLED

Pianificazione eventi MySQL

Un evento è un oggetto database contenente istruzioni SQL eseguite a un'ora specificata oa intervalli regolari. Gli eventi iniziano e terminano a un'ora e una data specifiche.

Poiché gli eventi MySQL vengono eseguiti in un momento specificato dall'utente, questi eventi vengono anche chiamati temporali trigger . Tuttavia, non dovrebbero essere confusi con MySQL Trigger, che sono oggetti di database eseguiti in risposta a eventi specifici. Quindi, è meglio usare il termine eventi quando si fa riferimento alle attività pianificate per evitare confusione.

Le sezioni seguenti illustrano come creare , mostra , cambia o rimuovere eventi.

Crea nuovi eventi

Per creare un nuovo evento, utilizza la seguente sintassi:

CREATE EVENT [IF NOT EXIST] event_name
ON SCHEDULE schedule
DO
event_body

Il IF NOT EXIST assicura che il nome dell'evento sia univoco per il database in uso. Specifica un nome evento univoco al posto del event_name sintassi. La pianificazione per l'esecuzione dell'evento è specificata dopo il ON SCHEDULE dichiarazione. L'evento può essere un evento occasionale o un evento ricorrente .

Inserisci le istruzioni SQL al posto di event_body sintassi dopo il DO parola chiave. Il corpo dell'evento può contenere stored procedure, query singole o istruzioni composte. Scrivi istruzioni composte all'interno di un BEGIN END blocco.

Programma eventi

Gli eventi possono essere programmati per un'esecuzione successiva o per un'esecuzione periodica.

Evento unico

Un evento occasionale viene eseguito una sola volta e quindi eliminato automaticamente.

Per creare un evento occasionale, specifica il timestamp dopo il ON SCHEDULE istruzione utilizzando la seguente sintassi:

AT timestamp + [INTERVAL interval]

Le possibili scelte per intervallo sono:

  • ANNO
  • TRIMESTRE
  • MESE
  • GIORNO
  • ORA
  • MINUTO
  • SETTIMANA
  • SECONDA
  • ANNO_MESE
  • DAY_HOUR
  • DAY_MINUTE
  • GIORNO_SECONDO
  • ORA_MINUTO
  • ORA_SECONDA
  • MINUTE_SECOND

Il timestamp deve essere un DATETIME o TIMESTAMP valore in futuro. Per specificare un'ora esatta, aggiungi un intervallo al timestamp utilizzando + INTERVAL , un numero intero positivo e una delle scelte di intervallo. Tieni presente che ciò si applica solo quando utilizzi il CURRENT_TIMESTAMP funzione.

Ad esempio:

Qui, l'evento si verifica due giorni dopo la sua creazione e il compito è eliminare una tabella denominata test .

Gli eventi vengono automaticamente eliminati dopo l'esecuzione. Se vuoi salvare l'evento nel database, aggiungi il ON COMPLETION PRESERVE clausola durante la creazione dell'evento.

Evento ricorrente

Un evento ricorrente si verifica ripetutamente a un'ora specificata. Per pianificare un evento ricorrente, utilizza la seguente sintassi dopo il ON SCHEDULE dichiarazione:

EVERY interval 
STARTS timestamp [+ INTERVAL] 
ENDS timestamp [+ INTERVAL]

Il STARTS la parola chiave specifica quando inizia l'esecuzione dell'evento, mentre il ENDS la parola chiave specifica quando si interrompe l'esecuzione dell'evento.

Ad esempio:

Questo evento fa sì che MySQL interrompa il test della tabella una volta ogni sei mesi, iniziando immediatamente.

È inoltre possibile specificare un intervallo per avviare l'evento in un secondo momento. Ad esempio:

Puoi anche specificare l'ora di inizio e l'ora di fine dell'evento:

Questo evento fa sì che MySQL elimini la tabella denominata test una volta ogni sei mesi per cinque anni, a partire da cinque giorni.

Mostra eventi

Il comando seguente mostra tutti gli eventi memorizzati nel database:

SHOW EVENTS FROM database_name;

Tieni presente che gli eventi occasionali vengono automaticamente eliminati dopo l'esecuzione e non vengono visualizzati nell'output di SHOW EVENTS comando, a meno che non utilizzi il ON COMPLETION PRESERVE clausola durante la creazione dell'evento.

L'output elenca tutti gli eventi archiviati nel database specificato.

Modifica eventi

Usa il ALTER EVENT dichiarazione per modificare un evento esistente:

ALTER EVENT event_name
[ ON SCHEDULE schedule ]
[ RENAME TO new_event_name ]
[ ON COMPLETION [ NOT ] PRESERVE ]
[ COMMENT 'comment' ]
[ ENABLED | DISABLED ]
[ DO sql_statement ]

Il event_name deve essere un evento già esistente. Tutte le dichiarazioni dopo ALTER EVENT sono opzionali, a seconda di cosa si desidera modificare. Omissione di qualsiasi clausola nel ALTER EVENT comando significa che rimangono nel loro stato precedente. Qualsiasi clausola inclusa significa che vengono applicati i nuovi valori specificati.

Ad esempio:

In questo esempio, abbiamo rinominato l'evento e modificato la sua istruzione SQL.

Rimuovi eventi (elimina evento)

Per eliminare (eliminare) un evento, utilizzare la seguente sintassi:.

DROP EVENT [IF EXISTS] event_name;

Ad esempio:

Questa azione elimina definitivamente l'evento dal database.

Utilizzando il IF EXISTS dichiarazione emette un avviso se tale evento non esiste:

Limitazioni degli eventi MySQL

Ci sono alcune limitazioni da considerare quando si utilizza MySQL Events. Alcuni di loro sono:

  • Gli eventi non possono restituire un set di risultati. L'output viene indirizzato a dev/null e l'evento non riesce o riesce senza avvisare l'utente.
  • I nomi degli eventi non fanno distinzione tra maiuscole e minuscole. Due eventi non possono avere lo stesso nome con caso diverso.
  • Gli eventi non possono essere programmati oltre il 19 gennaio 2038, il massimo che può essere rappresentato nell'epoca di Unix.
  • Gli eventi non possono essere creati, eliminati o modificati da un altro programma, trigger o evento memorizzato.
  • Gli eventi non possono creare, eliminare o modificare programmi o attivatori memorizzati.
  • Gli intervalli MONTH , YEAR_MONTH , QUARTER e YEAR si risolvono in mesi. Tutti gli altri intervalli vengono risolti in pochi secondi.
  • Possono esserci due eventi con la stessa pianificazione, ma non è possibile forzare un ordine di esecuzione.
  • Un evento viene sempre eseguito con i privilegi del definitore. Il thread esegue l'evento agendo come l'utente che ha creato l'evento, con i privilegi di tale utente. Tieni presente che la rimozione di un utente non rimuove gli eventi creati dall'utente.
  • Gli eventi non modificano il conteggio dell'esecuzione di un'istruzione, il che significa che non vi è alcun effetto su SHOW STATISTICS comando.
  • Il ritardo massimo per l'esecuzione di un evento è di due secondi. Tuttavia, il schema_informativo.events la tabella mostra sempre l'ora esatta di esecuzione dell'evento.
  • Usa variabili definite dall'utente invece di riferimenti a variabili locali all'interno di istruzioni preparate all'interno di una routine memorizzata.
  • Il numero di chiamate ricorsive è limitato a max_sp_recursion_depth . Se questa variabile è 0, che è il valore predefinito, la ricorsività è disabilitata.
  • Utilizza il START TRANSACTION dichiarazione invece di BEGIN WORK , poiché BEGIN WORK viene considerato come l'inizio del BEGIN END blocco.
  • Qualsiasi altra limitazione delle procedure memorizzate si applica anche agli eventi.

Linux
  1. Bash For Loop Guida ed esempi

  2. Stato e dipendenze del servizio Solaris?

  3. Gli 8 migliori trucchi e suggerimenti per la riga di comando di MySQL

  4. Utilità di pianificazione eventi MySQL

  5. Nozioni di base su utenti e database MySQL

Guida Docker:distribuzione di Ghost Blog con MySQL e Traefik con Docker

Cerca e sostituisci MySQL

La guida completa per installare MySQL su Ubuntu

Come eseguire il multi-master MySQL con Percona e Keepalived

Configurazione e guida del bootloader Linux LILO

Guida per principianti alla gestione degli utenti MySQL