GNU/Linux >> Belajar Linux >  >> Linux

Panduan Acara dan Penjadwal Acara MySQL

Pendahuluan

Acara MySQL adalah tugas yang berjalan sesuai dengan jadwal yang ditentukan pengguna . Penjadwal Acara adalah utas khusus yang menjalankan Acara pada waktu yang dijadwalkan.

Acara MySQL sangat membantu karena memfasilitasi manajemen basis data dan tugas operasional basis data berkala.

Dalam tutorial ini, Anda akan mempelajari apa itu Peristiwa MySQL dan cara menyiapkan dan menggunakannya.

Prasyarat:

  • Sistem yang menjalankan MySQL pada server database
  • Akun pengguna MySQL dengan hak akses root

Apa itu Penjadwal Acara MySQL?

Penjadwal Acara MySQL adalah utas yang berjalan di latar belakang dan mengelola eksekusi acara terjadwal. Penjadwal dalam keadaan tidur kecuali variabel global event_scheduler disetel ke ON atau 1 .

Penjadwal Acara MySQL mewakili alternatif tugas Cron dari MySQL . Beberapa manfaat dari Penjadwal Acara adalah:

  • Ditulis langsung di Server MySQL.
  • Ini adalah platform dan aplikasi yang independen.
  • Ini dapat digunakan kapan pun pembaruan atau pembersihan basis data reguler diperlukan.
  • Ini mengurangi jumlah kompilasi kueri.

Konfigurasi Penjadwal Acara MySQL

Status Penjadwal Acara MySQL dapat dikonfigurasi untuk menyetel Penjadwal aktif , nonaktif , atau nonaktifkan itu.

Untuk memeriksa status Penjadwal Acara, jalankan perintah berikut:

SHOW processlist;

event_scheduler variabel sistem yang ditampilkan dalam hasil menunjukkan keadaan Penjadwal Acara. Di sini, event_scheduler status variabel Menunggu antrian kosong , yang berarti Penjadwal aktif dan menunggu peristiwa untuk memicunya.

Status yang mungkin adalah:

  • ON :Utas Penjadwal Acara sedang berjalan dan mengeksekusi semua acara yang dijadwalkan. Ini adalah status default Penjadwal. Jika Penjadwal ON , SHOW processlist keluaran perintah mencantumkannya sebagai proses daemon.

Untuk mengaktifkan Penjadwal Acara ON , jalankan perintah berikut:

SET GLOBAL event_scheduler = ON;

Nilai ON dapat dipertukarkan dengan 1 .

  • OFF :Utas Penjadwal Acara tidak berjalan, dan tidak muncul di output SHOW processlist . Jika Penjadwal Acara diatur ke OFF , acara yang dijadwalkan tidak dieksekusi.

Untuk mematikan Penjadwal Acara OFF , jalankan perintah berikut:

SET GLOBAL event_scheduler = OFF;

Nilai OFF dapat dipertukarkan dengan 0 .

  • DISABLED :Keadaan ini berarti bahwa Penjadwal Acara tidak beroperasi. Utas tidak berjalan, dan tidak muncul di output SHOW processlist perintah.

Untuk menonaktifkan Penjadwal Acara, tambahkan opsi baris perintah berikut saat memulai server:

--event-scheduler=DISABLED

Penjadwalan Acara MySQL

Event adalah objek database yang berisi pernyataan SQL yang dieksekusi pada waktu tertentu atau dalam interval reguler. Acara dimulai dan berakhir pada waktu dan tanggal tertentu.

Karena Peristiwa MySQL dijalankan pada waktu yang ditentukan pengguna, peristiwa ini juga disebut sebagai temporal pemicu . Namun, mereka tidak boleh tercampur dengan Pemicu MySQL, yang merupakan objek basis data yang dieksekusi sebagai respons terhadap peristiwa tertentu. Oleh karena itu, lebih baik menggunakan istilah peristiwa saat mengacu pada tugas terjadwal untuk menghindari kebingungan.

Bagian berikut membahas cara membuat , tampilkan , ubah atau hapus acara.

Buat Acara Baru

Untuk membuat acara baru, gunakan sintaks berikut:

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

IF NOT EXIST pernyataan memastikan bahwa nama acara unik untuk database yang digunakan. Tentukan nama acara unik sebagai pengganti event_name sintaksis. Jadwal pelaksanaan acara ditentukan setelah ON SCHEDULE penyataan. Acara ini bisa menjadi acara satu kali atau peristiwa yang berulang .

Masukkan pernyataan SQL sebagai pengganti event_body sintaks setelah DO kata kunci. Badan acara dapat berisi prosedur tersimpan, kueri tunggal, atau pernyataan majemuk. Tulis pernyataan majemuk dalam BEGIN END blokir.

Jadwalkan Acara

Acara dapat dijadwalkan untuk pelaksanaan selanjutnya atau untuk pelaksanaan berkala.

Acara Sekali Pakai

Peristiwa satu kali dieksekusi hanya sekali dan kemudian dihapus secara otomatis.

Untuk membuat acara satu kali, tentukan stempel waktu setelah ON SCHEDULE pernyataan menggunakan sintaks berikut:

AT timestamp + [INTERVAL interval]

Pilihan yang memungkinkan untuk interval adalah:

  • TAHUN
  • PEREMPAT
  • BULAN
  • HARI
  • JAM
  • MENIT
  • MINGGU
  • DUA
  • YEAR_MONTH
  • HARI_JAM
  • DAY_MINUTE
  • HARI_DETIK
  • HOUR_MINUTE
  • HOUR_SECOND
  • MINUTE_SECOND

Stempel waktu harus DATETIME atau TIMESTAMP nilai di masa depan. Untuk menentukan waktu yang tepat, tambahkan interval ke stempel waktu menggunakan + INTERVAL , bilangan bulat positif, dan salah satu pilihan interval. Perhatikan bahwa ini hanya berlaku saat menggunakan CURRENT_TIMESTAMP fungsi.

Misalnya:

Di sini, acara terjadi dua hari sejak pembuatannya, dan tugasnya adalah menjatuhkan tabel bernama test .

Acara secara otomatis dijatuhkan setelah eksekusi. Jika Anda ingin menyimpan acara di database, tambahkan ON COMPLETION PRESERVE klausa saat membuat acara.

Acara Berulang

Peristiwa berulang terjadi berulang kali pada waktu tertentu. Untuk menjadwalkan acara berulang, gunakan sintaks berikut setelah ON SCHEDULE pernyataan:

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

STARTS kata kunci menentukan kapan eksekusi acara dimulai, sedangkan ENDS kata kunci menentukan kapan eksekusi acara berhenti.

Misalnya:

Peristiwa ini menyebabkan MySQL menghentikan pengujian tabel setiap enam bulan sekali, segera dimulai.

Anda juga dapat menentukan interval untuk memulai acara nanti. Misalnya:

Anda juga dapat menentukan waktu mulai dan waktu berakhir untuk acara:

Peristiwa ini membuat MySQL menjatuhkan tabel bernama test setiap enam bulan sekali selama lima tahun, mulai lima hari dari sekarang.

Tampilkan Acara

Perintah berikut menampilkan semua kejadian yang disimpan dalam database:

SHOW EVENTS FROM database_name;

Perhatikan bahwa peristiwa satu kali secara otomatis dihapus setelah eksekusi dan tidak muncul di output SHOW EVENTS perintah, kecuali jika Anda menggunakan ON COMPLETION PRESERVE klausa saat membuat acara.

Outputnya mencantumkan semua kejadian yang disimpan dalam database yang ditentukan.

Ubah Acara

Gunakan ALTER EVENT pernyataan untuk mengubah acara yang ada:

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

event_name harus merupakan peristiwa yang sudah ada. Semua pernyataan setelah ALTER EVENT adalah opsional, tergantung pada apa yang ingin Anda ubah. Menghilangkan klausa apa pun di ALTER EVENT perintah berarti bahwa mereka tetap dalam keadaan sebelumnya. Setiap klausa yang disertakan berarti bahwa nilai baru yang Anda tentukan diterapkan.

Misalnya:

Dalam contoh ini, kami mengganti nama acara dan mengubah pernyataan SQL-nya.

Hapus Acara (Acara Berhenti)

Untuk menghapus (menjatuhkan) acara, gunakan sintaks berikut:.

DROP EVENT [IF EXISTS] event_name;

Misalnya:

Tindakan ini menghapus secara permanen acara dari database.

Menggunakan IF EXISTS pernyataan mengeluarkan peringatan jika peristiwa seperti itu tidak ada:

Batasan Peristiwa MySQL

Ada batasan tertentu yang perlu dipertimbangkan saat menggunakan Acara MySQL. Beberapa di antaranya adalah:

  • Acara tidak dapat mengembalikan kumpulan hasil. Outputnya diarahkan ke dev/null, dan acara tersebut gagal atau berhasil tanpa memberi tahu pengguna.
  • Nama peristiwa tidak peka huruf besar/kecil. Dua peristiwa tidak boleh memiliki nama yang sama dengan kasus yang berbeda.
  • Acara tidak dapat dijadwalkan setelah 19 Januari 2038 – maksimum yang dapat direpresentasikan dalam era Unix.
  • Acara tidak dapat dibuat, dijatuhkan, atau diubah oleh program, pemicu, atau acara lain yang tersimpan.
  • Acara tidak dapat membuat, menghapus, atau mengubah program atau pemicu yang tersimpan.
  • Interval MONTH , YEAR_MONTH , QUARTER , dan YEAR diselesaikan dalam beberapa bulan. Semua interval lainnya diselesaikan dalam hitungan detik.
  • Mungkin ada dua acara dengan jadwal yang sama, tetapi tidak ada cara untuk memaksakan perintah eksekusi.
  • Acara selalu berjalan dengan hak istimewa yang ditentukan. Utas mengeksekusi acara yang bertindak sebagai pengguna yang membuat acara, dengan hak istimewa pengguna tersebut. Perhatikan bahwa menghapus pengguna tidak menghapus acara yang dibuat pengguna.
  • Peristiwa tidak mengubah hitungan eksekusi pernyataan, yang berarti tidak ada efek pada SHOW STATISTICS perintah.
  • Penundaan maksimum untuk mengeksekusi suatu peristiwa adalah dua detik. Namun, information_schema.events tabel selalu menampilkan waktu eksekusi acara yang akurat.
  • Gunakan variabel yang ditentukan pengguna alih-alih referensi ke variabel lokal dalam pernyataan yang disiapkan di dalam rutin yang disimpan.
  • Jumlah panggilan rekursif dibatasi hingga max_sp_recursion_depth . Jika variabel ini adalah 0, yang merupakan nilai default, rekursi akan dinonaktifkan.
  • Gunakan START TRANSACTION pernyataan alih-alih BEGIN WORK , sejak BEGIN WORK diperlakukan sebagai awal dari BEGIN END blokir.
  • Keterbatasan lain dari prosedur tersimpan juga berlaku untuk acara.

Linux
  1. MySQL – Penyesuaian dan Pengoptimalan Kinerja

  2. Panduan Bash For Loop dan Contohnya

  3. Panduan untuk menjalankan proxy Terbalik untuk HTTP(S), SSH, dan MySQL/MariaDB menggunakan NGINX

  1. Status Layanan Solaris Dan Ketergantungan?

  2. Penjadwal Acara MySQL

  3. Dasar-dasar pengguna dan basis data MySQL

  1. Cara Mengatur LogAnalyzer dengan Rsyslog dan MySQL

  2. Buat database baru dan gunakan di MySQL/MariaDB

  3. Instal dan Gunakan MySQL Workbench di Fedora 35/34/33/32 - Panduan langkah demi langkah