Parameter server di Azure Database for MySQL
BERLAKU UNTUKAzure Database for MySQL - Server Tunggal
Penting
Server tunggal Azure Database for MySQL berada di jalur penghentian. Kami sangat menyarankan Agar Anda meningkatkan ke server fleksibel Azure Database for MySQL. Untuk informasi selengkapnya tentang migrasi ke server fleksibel Azure Database for MySQL, lihat Apa yang terjadi pada Server Tunggal Azure Database for MySQL?
Artikel ini menyediakan pertimbangan dan panduan untuk mengonfigurasi parameter server di Azure Database for MySQL.
Apa itu parameter server?
Mesin MySQL menyediakan banyak variabel/parameter server yang berbeda yang dapat digunakan untuk mengonfigurasi dan menyetel perilaku mesin. Beberapa parameter dapat diatur secara dinamis selama runtime bahasa umum sementara yang lain "statik", membutuhkan hidupkan ulang server untuk diterapkan.
Azure Database for MySQL memaparkan kemampuan untuk mengubah nilai berbagai parameter server MySQL menggunakan portal Microsoft Azure, Azure CLI, dan PowerShell, agar sesuai dengan kebutuhan beban kerja Anda.
Parameter server yang dapat dikonfigurasi
Daftar parameter server yang didukung terus bertambah. Gunakan tab parameter server di portal Microsoft Azure untuk melihat daftar lengkap dan mengonfigurasi nilai parameter server.
Lihat bagian berikut untuk mempelajari selengkapnya tentang batas beberapa parameter server yang umum diperbarui. Batas ditentukan oleh tingkat harga dan vCore server.
Kumpulan utas
MySQL secara tradisional menetapkan utas untuk setiap koneksi klien. Seiring bertambahnya jumlah pengguna bersamaan, ada penurunan performa yang sesuai. Banyak rangkaian aktif dapat memengaruhi performa secara signifikan karena peningkatan pengalihan konteks, konflik rangkaian, dan pelokalan buruk untuk cache CPU.
Kumpulan rangkaian, fitur sisi server dan berbeda dari kumpulan koneksi, memaksimalkan kinerja dengan memperkenalkan kumpulan utas pekerja yang dinamis. Anda menggunakan fitur ini untuk membatasi jumlah rangkaian aktif yang berjalan di server dan meminimalkan churn rangkaian. Ini membantu memastikan bahwa ledakan koneksi tidak menyebabkan server kehabisan sumber daya atau memori. Kumpulan rangkaian paling efisien untuk kueri pendek dan beban kerja intensif CPU, misalnya beban kerja OLTP.
Untuk informasi selengkapnya, lihat Memperkenalkan kumpulan rangkaian di Azure Database for MySQL.
Catatan
Kumpulan rangkaian tidak didukung untuk MySQL 5.6.
Mengonfigurasi kumpulan rangkaian
Untuk mengaktifkan kumpulan rangkaian, perbarui thread_handling
parameter server ke pool-of-threads
. Secara default, parameter ini diatur ke one-thread-per-connection
, yang berarti MySQL membuat rangkaian baru untuk setiap koneksi baru. Harap dicatat bahwa ini adalah parameter statik dan memerlukan hidupkan ulang server untuk diterapkan.
Anda juga dapat mengonfigurasi jumlah utas maksimum dan minimum di kumpulan dengan mengatur parameter server berikut:
thread_pool_max_threads
: Nilai ini membatasi jumlah utas dalam kumpulan.thread_pool_min_threads
: Nilai ini menetapkan jumlah utas yang dicadangkan, bahkan setelah koneksi ditutup.
Untuk meningkatkan masalah performa kueri singkat pada kumpulan rangkaian, Anda dapat mengaktifkan eksekusi batch. Alih-alih kembali ke kumpulan rangkaian segera setelah menjalankan kueri, rangkaian akan tetap aktif untuk waktu yang singkat untuk menunggu kueri berikutnya melalui koneksi ini. Rangkaian kemudian menjalankan kueri dengan cepat dan, ketika ini selesai, rangkaian menunggu yang berikutnya. Proses ini berlanjut sampai keseluruhan waktu yang dihabiskan melebihi ambang batas.
Anda menentukan perilaku eksekusi batch dengan menggunakan parameter server berikut:
thread_pool_batch_wait_timeout
: Nilai ini menentukan waktu utas menunggu kueri lain diproses.thread_pool_batch_max_time
: Nilai ini menentukan waktu maksimum rangkaian akan mengulangi siklus eksekusi kueri dan menunggu kueri berikutnya.
Penting
Jangan menyalakan kumpulan rangkaian dalam produksi sampai Anda mengujinya.
log_bin_trust_function_creators
Di Azure Database for MySQL, log biner selalu diaktifkan (yaitu log_bin
parameter diatur ke ON
). Jika Anda ingin menggunakan pemicu, Anda mendapatkan kesalahan yang mirip dengan yang berikut ini: Anda tidak memiliki hak istimewa SUPER dan pengelogan biner diaktifkan (Anda mungkin ingin menggunakan variabel yang kurang aman log_bin_trust_function_creators
).
Format pengelogan biner selalu BARIS dan semua koneksi ke server selalu menggunakan pencatatan biner berbasis baris. Pencatatan biner berbasis baris membantu menjaga keamanan, dan pencatatan biner tidak dapat pecah, sehingga Anda dapat dengan aman mengatur log_bin_trust_function_creators
ke TRUE
.
innodb_buffer_pool_size
Tinjau Dokumentasi MySQL untuk mempelajari lebih lanjut tentang parameter ini.
Server pada penyimpanan tujuan umum v1 (Mendukung hingga 4-TB)
Tingkat harga | vCore | Nilai default (byte) | Nilai min (byte) | Nilai maks (byte) |
---|---|---|---|---|
Dasar | 1 | 872415232 | 134217728 | 872415232 |
Dasar | 2 | 2684354560 | 134217728 | 2684354560 |
Tujuan Umum | 2 | 3758096384 | 134217728 | 3758096384 |
Tujuan Umum | 4 | 8053063680 | 134217728 | 8053063680 |
Tujuan Umum | 8 | 16106127360 | 134217728 | 16106127360 |
Tujuan Umum | 16 | 32749125632 | 134217728 | 32749125632 |
Tujuan Umum | 32 | 66035122176 | 134217728 | 66035122176 |
Tujuan Umum | 64 | 132070244352 | 134217728 | 132070244352 |
Memori Dioptimalkan | 2 | 7516192768 | 134217728 | 7516192768 |
Memori Dioptimalkan | 4 | 16106127360 | 134217728 | 16106127360 |
Memori Dioptimalkan | 8 | 32212254720 | 134217728 | 32212254720 |
Memori Dioptimalkan | 16 | 65498251264 | 134217728 | 65498251264 |
Memori Dioptimalkan | 32 | 132070244352 | 134217728 | 132070244352 |
Server pada penyimpanan tujuan umum v2 (Mendukung hingga 16-TB)
Tingkat harga | vCore | Nilai default (byte) | Nilai min (byte) | Nilai maks (byte) |
---|---|---|---|---|
Dasar | 1 | 872415232 | 134217728 | 872415232 |
Dasar | 2 | 2684354560 | 134217728 | 2684354560 |
Tujuan Umum | 2 | 7516192768 | 134217728 | 7516192768 |
Tujuan Umum | 4 | 16106127360 | 134217728 | 16106127360 |
Tujuan Umum | 8 | 32212254720 | 134217728 | 32212254720 |
Tujuan Umum | 16 | 65498251264 | 134217728 | 65498251264 |
Tujuan Umum | 32 | 132070244352 | 134217728 | 132070244352 |
Tujuan Umum | 64 | 264140488704 | 134217728 | 264140488704 |
Memori Dioptimalkan | 2 | 15032385536 | 134217728 | 15032385536 |
Memori Dioptimalkan | 4 | 32212254720 | 134217728 | 32212254720 |
Memori Dioptimalkan | 8 | 64424509440 | 134217728 | 64424509440 |
Memori Dioptimalkan | 16 | 130996502528 | 134217728 | 130996502528 |
Memori Dioptimalkan | 32 | 264140488704 | 134217728 | 264140488704 |
innodb_file_per_table
MySQL menyimpan InnoDB
tabel InnoDB di ruang tabel yang berbeda berdasarkan konfigurasi yang Anda berikan selama pembuatan tabel. Tabelspace sistem adalah area penyimpanan untuk kamus data InnoDB. Tabelspace file per tabel berisi data dan indeks untuk satu InnoDB
tabel InnoDB, dan disimpan dalam sistem file dalam file datanya sendiri.
Anda mengontrol perilaku ini dengan innodb_file_per_table
menggunakan parameter server. Pengaturan innodb_file_per_table
untuk OFF
menyebabkan InnoDB
untuk membuat tabel di tablespace sistem. Jika tidak, InnoDB
membuat tabel di ruang tablespace file per tabel.
Catatan
Anda hanya dapat memperbarui innodb_file_per_table
dalam tingkatan harga tujuan umum dan memori yang dioptimalkan pada penyimpanan tujuan umum v2 dan penyimpanan tujuan umum v1.
Azure Database for MySQL mendukung hingga, 4 TB, dalam satu file data pada penyimpanan tujuan umum v2. Jika ukuran database lebih besar dari 4 TB, Anda harus membuat tabel di tabelspace innodb_file_per_table. Jika Anda memiliki ukuran tabel tunggal yang lebih besar dari 4 TB, Anda harus menggunakan tabel partisi.
join_buffer_size
Tinjau Dokumentasi MySQL untuk mempelajari lebih lanjut tentang parameter ini.
Tingkat harga | vCore | Nilai default (byte) | Nilai min (byte) | Nilai maks (byte) |
---|---|---|---|---|
Dasar | 1 | Tidak dapat dikonfigurasi dalam tingkat Dasar | T/A | T/A |
Dasar | 2 | Tidak dapat dikonfigurasi dalam tingkat Dasar | T/A | T/A |
Tujuan Umum | 2 | 262144 | 128 | 268435455 |
Tujuan Umum | 4 | 262144 | 128 | 536870912 |
Tujuan Umum | 8 | 262144 | 128 | 1073741824 |
Tujuan Umum | 16 | 262144 | 128 | 2147483648 |
Tujuan Umum | 32 | 262144 | 128 | 4294967295 |
Tujuan Umum | 64 | 262144 | 128 | 4294967295 |
Memori Dioptimalkan | 2 | 262144 | 128 | 536870912 |
Memori Dioptimalkan | 4 | 262144 | 128 | 1073741824 |
Memori Dioptimalkan | 8 | 262144 | 128 | 2147483648 |
Memori Dioptimalkan | 16 | 262144 | 128 | 4294967295 |
Memori Dioptimalkan | 32 | 262144 | 128 | 4294967295 |
max_connections
Tingkat harga | vCore | Nilai default | Nilai min | Nilai maks |
---|---|---|---|---|
Dasar | 1 | 50 | 10 | 50 |
Dasar | 2 | 100 | 10 | 100 |
Tujuan Umum | 2 | 300 | 10 | 600 |
Tujuan Umum | 4 | 625 | 10 | 1250 |
Tujuan Umum | 8 | 1250 | 10 | 2500 |
Tujuan Umum | 16 | 2500 | 10 | 5000 |
Tujuan Umum | 32 | 5000 | 10 | 10000 |
Tujuan Umum | 64 | 10000 | 10 | 20000 |
Memori Dioptimalkan | 2 | 625 | 10 | 1250 |
Memori Dioptimalkan | 4 | 1250 | 10 | 2500 |
Memori Dioptimalkan | 8 | 2500 | 10 | 5000 |
Memori Dioptimalkan | 16 | 5000 | 10 | 10000 |
Memori Dioptimalkan | 32 | 10000 | 10 | 20000 |
Ketika jumlah koneksi melebihi batas, Anda mungkin menerima kesalahan.
Tip
Untuk mengelola koneksi secara efisien, ada baiknya anda menggunakan pooler koneksi, seperti ProxySQL. Untuk mempelajari tentang menyiapkan ProxySQL, lihat posting blog Memuat replika baca saldo menggunakan ProxySQL di Azure Database for MySQL. ProxySQL adalah alat komunitas sumber terbuka. Ini didukung oleh Microsoft berdasarkan upaya terbaik.
max_heap_table_size
Tinjau Dokumentasi MySQL untuk mempelajari lebih lanjut tentang parameter ini.
Tingkat harga | vCore | Nilai default (byte) | Nilai min (byte) | Nilai maks (byte) |
---|---|---|---|---|
Dasar | 1 | Tidak dapat dikonfigurasi dalam tingkat Dasar | T/A | T/A |
Dasar | 2 | Tidak dapat dikonfigurasi dalam tingkat Dasar | T/A | T/A |
Tujuan Umum | 2 | 16777216 | 16384 | 268435455 |
Tujuan Umum | 4 | 16777216 | 16384 | 536870912 |
Tujuan Umum | 8 | 16777216 | 16384 | 1073741824 |
Tujuan Umum | 16 | 16777216 | 16384 | 2147483648 |
Tujuan Umum | 32 | 16777216 | 16384 | 4294967295 |
Tujuan Umum | 64 | 16777216 | 16384 | 4294967295 |
Memori Dioptimalkan | 2 | 16777216 | 16384 | 536870912 |
Memori Dioptimalkan | 4 | 16777216 | 16384 | 1073741824 |
Memori Dioptimalkan | 8 | 16777216 | 16384 | 2147483648 |
Memori Dioptimalkan | 16 | 16777216 | 16384 | 4294967295 |
Memori Dioptimalkan | 32 | 16777216 | 16384 | 4294967295 |
query_cache_size
Cache kueri dinonaktifkan secara default. Untuk mengaktifkan cache kueri, konfigurasikan parameter query_cache_type
.
Tinjau Dokumentasi MySQL untuk mempelajari lebih lanjut tentang parameter ini.
Catatan
Cache kueri tidak digunakan lagi setelah MySQL 5.7.20 dan telah dihapus di MySQL 8.0.
Tingkat harga | vCore | Nilai default (byte) | Nilai min (byte) | Nilai maks |
---|---|---|---|---|
Dasar | 1 | Tidak dapat dikonfigurasi dalam tingkat Dasar | T/A | T/A |
Dasar | 2 | Tidak dapat dikonfigurasi dalam tingkat Dasar | T/A | T/A |
Tujuan Umum | 2 | 0 | 0 | 16777216 |
Tujuan Umum | 4 | 0 | 0 | 33554432 |
Tujuan Umum | 8 | 0 | 0 | 67108864 |
Tujuan Umum | 16 | 0 | 0 | 134217728 |
Tujuan Umum | 32 | 0 | 0 | 134217728 |
Tujuan Umum | 64 | 0 | 0 | 134217728 |
Memori Dioptimalkan | 2 | 0 | 0 | 33554432 |
Memori Dioptimalkan | 4 | 0 | 0 | 67108864 |
Memori Dioptimalkan | 8 | 0 | 0 | 134217728 |
Memori Dioptimalkan | 16 | 0 | 0 | 134217728 |
Memori Dioptimalkan | 32 | 0 | 0 | 134217728 |
lower_case_table_names
lower_case_table_name
parameter diatur ke 1 secara default dan Anda dapat memperbarui parameter ini di MySQL 5.6 dan MySQL 5.7.
Tinjau Dokumentasi MySQL untuk mempelajari lebih lanjut tentang parameter ini.
Catatan
Di MySQL 8.0, lower_case_table_name
diatur ke 1 secara default, dan Anda tidak dapat mengubahnya.
innodb_strict_mode
Jika Anda menerima kesalahan yang mirip dengan, pertimbangkan untuk Row size too large (> 8126)
mematikan innodb_strict_mode
parameter. Anda tidak dapat memodifikasi innodb_strict_mode
secara global di tingkat server. Jika ukuran data baris lebih besar dari 8K, data terpotong, tanpa pemberitahuan kesalahan, yang menyebabkan potensi kehilangan data. Sebaiknya ubah skema agar sesuai dengan batas ukuran halaman.
Anda dapat mengatur parameter ini pada tingkat sesi, dengan menggunakan init_connect
. Untuk mengatur innodb_strict_mode
pada tingkat sesi, lihat parameter pengaturan yang tidak tercantum.
Catatan
Jika Anda memiliki server replika baca, pengaturan innodb_strict_mode
ke OFF
pada tingkat sesi di server sumber akan merusak replikasi. Kami menyarankan agar parameter tetap diatur ke ON
jika Anda telah membaca replika.
sort_buffer_size
Tinjau Dokumentasi MySQL untuk mempelajari lebih lanjut tentang parameter ini.
Tingkat harga | vCore | Nilai default (byte) | Nilai min (byte) | Nilai maks (byte) |
---|---|---|---|---|
Dasar | 1 | Tidak dapat dikonfigurasi dalam tingkat Dasar | T/A | T/A |
Dasar | 2 | Tidak dapat dikonfigurasi dalam tingkat Dasar | T/A | T/A |
Tujuan Umum | 2 | 524288 | 32768 | 4194304 |
Tujuan Umum | 4 | 524288 | 32768 | 8388608 |
Tujuan Umum | 8 | 524288 | 32768 | 16777216 |
Tujuan Umum | 16 | 524288 | 32768 | 33554432 |
Tujuan Umum | 32 | 524288 | 32768 | 33554432 |
Tujuan Umum | 64 | 524288 | 32768 | 33554432 |
Memori Dioptimalkan | 2 | 524288 | 32768 | 8388608 |
Memori Dioptimalkan | 4 | 524288 | 32768 | 16777216 |
Memori Dioptimalkan | 8 | 524288 | 32768 | 33554432 |
Memori Dioptimalkan | 16 | 524288 | 32768 | 33554432 |
Memori Dioptimalkan | 32 | 524288 | 32768 | 33554432 |
tmp_table_size
Tinjau Dokumentasi MySQL untuk mempelajari lebih lanjut tentang parameter ini.
Tingkat harga | vCore | Nilai default (byte) | Nilai min (byte) | Nilai maks (byte) |
---|---|---|---|---|
Dasar | 1 | Tidak dapat dikonfigurasi dalam tingkat Dasar | T/A | T/A |
Dasar | 2 | Tidak dapat dikonfigurasi dalam tingkat Dasar | T/A | T/A |
Tujuan Umum | 2 | 16777216 | 1024 | 67108864 |
Tujuan Umum | 4 | 16777216 | 1024 | 134217728 |
Tujuan Umum | 8 | 16777216 | 1024 | 268435456 |
Tujuan Umum | 16 | 16777216 | 1024 | 536870912 |
Tujuan Umum | 32 | 16777216 | 1024 | 1073741824 |
Tujuan Umum | 64 | 16777216 | 1024 | 1073741824 |
Memori Dioptimalkan | 2 | 16777216 | 1024 | 134217728 |
Memori Dioptimalkan | 4 | 16777216 | 1024 | 268435456 |
Memori Dioptimalkan | 8 | 16777216 | 1024 | 536870912 |
Memori Dioptimalkan | 16 | 16777216 | 1024 | 1073741824 |
Memori Dioptimalkan | 32 | 16777216 | 1024 | 1073741824 |
Pemanasan Kumpulan Buffer InnoDB
Setelah memulai ulang server Azure Database for MySQL, halaman data yang berada di disk dimuat saat tabel dikueri. Ini menyebabkan peningkatan latensi dan performa yang lebih lambat untuk eksekusi pertama kueri. Untuk beban kerja yang sensitif terhadap latensi, Anda mungkin menganggap performa yang lebih lambat ini tidak dapat diterima.
Anda dapat menggunakan InnoDB
buffer pool warmup untuk mempersingkat periode pemanasan. Proses ini memuat ulang halaman disk yang berada di kumpulan buffer sebelum restart, daripada menunggu operasi DML atau SELECT untuk mengakses baris yang sesuai. Untuk informasi selengkapnya, lihat Parameter server kumpulan buffer InnoDB.
Namun, peningkatan performa datang dengan mengorbankan waktu mulai yang lebih lama untuk server. Ketika Anda mengaktifkan parameter ini, waktu mulai dan mulai ulang server diharapkan meningkat, tergantung pada IOPS yang disediakan di server. Kami merekomendasikan untuk menguji dan memantau waktu hidupkan ulang untuk memastikan performa startup/mulai ulang dapat diterima karena server tidak tersedia selama waktu tersebut. Jangan gunakan parameter ini ketika jumlah IOPS yang disediakan kurang dari 1000 IOPS (dengan kata lain, ketika penyimpanan yang disediakan kurang dari 335 GB).
Untuk menyimpan status kumpulan buffer pada shutdown server, atur parameter server innodb_buffer_pool_dump_at_shutdown
ke ON
. Demikian, atur parameter server innodb_buffer_pool_load_at_startup
ke ON
untuk memulihkan status kumpulan buffer pada startup server. Anda dapat mengontrol dampak pada waktu start-up/hidupkan ulang dengan menurunkan dan menyempurnakan nilai parameter server innodb_buffer_pool_dump_pct
. Secara default, parameter ini diatur ke 25
.
Catatan
InnoDB
Parameter pemanasan kumpulan buffer hanya didukung di server penyimpanan tujuan umum dengan penyimpanan hingga 16 TB. Untuk informasi selengkapnya, lihat Azure Database for MySQL.
Zona Waktu
Setelah penyebaran awal, server Azure Database for MySQL menyertakan tabel sistem untuk informasi zona waktu, tetapi tabel ini tidak diisi. Anda dapat mengisi tabel dengan memanggil mysql.az_load_timezone
prosedur yang disimpan dari alat seperti baris perintah MySQL atau MySQL Workbench. Untuk informasi tentang cara memanggil prosedur yang disimpan dan mengatur zona waktu tingkat global atau sesi, lihat Bekerja dengan parameter zona waktu (portal Microsoft Azure) atau Bekerja dengan parameter zona waktu (Azure CLI).
binlog_expire_logs_seconds
Di Azure Database for MySQL, parameter ini menentukan jumlah detik layanan menunggu sebelum membersihkan file log biner.
Log biner berisi peristiwa yang menjelaskan perubahan database seperti operasi pembuatan tabel atau perubahan pada data tabel. Ini juga berisi peristiwa untuk pernyataan yang berpotensi membuat perubahan. Log biner digunakan terutama untuk dua tujuan, replikasi dan operasi pemulihan data.
Biasanya, log biner dibersihkan segera setelah handel bebas dari layanan, cadangan atau set replika. Jika ada beberapa replika, log biner menunggu replika terlambat untuk membaca perubahan sebelum dihapus menyeluruh. Jika Anda ingin log biner bertahan lebih lama, Anda dapat mengonfigurasi parameter binlog_expire_logs_seconds
. Jika Anda mengatur binlog_expire_logs_seconds
ke 0
, yang merupakan nilai default, itu membersihkan segera setelah handel ke log biner dibebaskan. Jika Anda mengatur binlog_expire_logs_seconds
ke lebih dari 0, maka log biner hanya membersihkan setelah periode waktu itu.
Untuk Azure Database for MySQL, fitur terkelola seperti pencadangan dan penghapusan menyeluruh replika baca file biner ditangani secara internal. Saat Anda mereplikasi data keluar dari layanan Azure Database for MySQL, parameter ini perlu diatur di primer untuk menghindari pembersihan log biner sebelum replika membaca dari perubahan dari primer. Jika Anda mengatur ke binlog_expire_logs_seconds
nilai yang lebih tinggi, maka log biner tidak akan segera dibersihkan. Hal ini dapat menyebabkan peningkatan tagihan penyimpanan.
event_scheduler
Di Azure Database for MySQL, event_schedule
parameter server mengelola pembuatan, penjadwalan, dan menjalankan peristiwa, yaitu, tugas yang berjalan sesuai dengan jadwal, dan dijalankan oleh utas penjadwal peristiwa khusus. event_scheduler
Saat parameter diatur ke AKTIF, utas penjadwal peristiwa dicantumkan sebagai proses daemon dalam output SHOW PROCESSLIST. Anda dapat membuat dan menjadwalkan peristiwa menggunakan sintaks SQL berikut:
CREATE EVENT <event name>
ON SCHEDULE EVERY _ MINUTE / HOUR / DAY
STARTS TIMESTAMP / CURRENT_TIMESTAMP
ENDS TIMESTAMP / CURRENT_TIMESTAMP + INTERVAL 1 MINUTE / HOUR / DAY
COMMENT ‘<comment>’
DO
<your statement>;
Catatan
Untuk informasi selengkapnya tentang membuat acara, lihat dokumentasi MySQL Event Scheduler di sini:
Mengonfigurasi parameter server event_scheduler
Skenario berikut mengilustrasikan salah satu cara untuk menggunakan event_scheduler
parameter di Azure Database for MySQL. Untuk menunjukkan skenario, pertimbangkan contoh berikut, tabel sederhana:
mysql> describe tab1;
+-----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| CreatedAt | timestamp | YES | | NULL | |
| CreatedBy | varchar(16) | YES | | NULL | |
+-----------+-------------+------+-----+---------+----------------+
3 rows in set (0.23 sec)
Untuk mengonfigurasi event_scheduler
parameter server di Azure Database for MySQL, lakukan langkah-langkah berikut:
Di portal Azure, navigasikan ke server Anda, lalu, di bawah Pengaturan, pilih Parameter server.
Pada bilah Parameter server, cari
event_scheduler
, di daftar drop-down VALUE , pilih AKTIF, lalu pilih Simpan.Catatan
Perubahan konfigurasi parameter server dinamis akan disebarkan tanpa menghidupkan ulang.
Kemudian untuk membuat peristiwa, sambungkan ke server MySQL, dan jalankan perintah SQL berikut:
CREATE EVENT test_event_01 ON SCHEDULE EVERY 1 MINUTE STARTS CURRENT_TIMESTAMP ENDS CURRENT_TIMESTAMP + INTERVAL 1 HOUR COMMENT ‘Inserting record into the table tab1 with current timestamp’ DO INSERT INTO tab1(id,createdAt,createdBy) VALUES('',NOW(),CURRENT_USER());
Untuk melihat Detail Event Scheduler, jalankan pernyataan SQL berikut:
SHOW EVENTS;
Output berikut muncul:
mysql> show events; +-----+---------------+-------------+-----------+-----------+------------+----------------+----------------+---------------------+---------------------+---------+------------+----------------------+----------------------+--------------------+ | Db | Name | Definer | Time zone | Type | Execute at | Interval value | Interval field | Starts | Ends | Status | Originator | character_set_client | collation_connection | Database Collation | +-----+---------------+-------------+-----------+-----------+------------+----------------+----------------+---------------------+---------------------+---------+------------+----------------------+----------------------+--------------------+ | db1 | test_event_01 | azureuser@% | SYSTEM | RECURRING | NULL | 1 | MINUTE | 2023-04-05 14:47:04 | 2023-04-05 15:47:04 | ENABLED | 3221153808 | latin1 | latin1_swedish_ci | latin1_swedish_ci | +-----+---------------+-------------+-----------+-----------+------------+----------------+----------------+---------------------+---------------------+---------+------------+----------------------+----------------------+--------------------+ 1 row in set (0.23 sec)
Setelah beberapa menit, kueri baris dari tabel untuk mulai menampilkan baris yang disisipkan setiap menit sesuai parameter yang
event_scheduler
Anda konfigurasi:mysql> select * from tab1; +----+---------------------+-------------+ | id | CreatedAt | CreatedBy | +----+---------------------+-------------+ | 1 | 2023-04-05 14:47:04 | azureuser@% | | 2 | 2023-04-05 14:48:04 | azureuser@% | | 3 | 2023-04-05 14:49:04 | azureuser@% | | 4 | 2023-04-05 14:50:04 | azureuser@% | +----+---------------------+-------------+ 4 rows in set (0.23 sec)
Setelah satu jam, jalankan pernyataan Pilih pada tabel untuk melihat hasil lengkap nilai yang disisipkan ke dalam tabel setiap menit selama satu jam saat
event_scheduler
dikonfigurasi dalam kasus kami.mysql> select * from tab1; +----+---------------------+-------------+ | id | CreatedAt | CreatedBy | +----+---------------------+-------------+ | 1 | 2023-04-05 14:47:04 | azureuser@% | | 2 | 2023-04-05 14:48:04 | azureuser@% | | 3 | 2023-04-05 14:49:04 | azureuser@% | | 4 | 2023-04-05 14:50:04 | azureuser@% | | 5 | 2023-04-05 14:51:04 | azureuser@% | | 6 | 2023-04-05 14:52:04 | azureuser@% | ..< 50 lines trimmed to compact output >.. | 56 | 2023-04-05 15:42:04 | azureuser@% | | 57 | 2023-04-05 15:43:04 | azureuser@% | | 58 | 2023-04-05 15:44:04 | azureuser@% | | 59 | 2023-04-05 15:45:04 | azureuser@% | | 60 | 2023-04-05 15:46:04 | azureuser@% | | 61 | 2023-04-05 15:47:04 | azureuser@% | +----+---------------------+-------------+ 61 rows in set (0.23 sec)
Skenario lain
Anda dapat menyiapkan peristiwa berdasarkan persyaratan skenario spesifik Anda. Beberapa contoh serupa dari penjadwalan pernyataan SQL untuk dijalankan pada interval waktu yang berbeda mengikuti.
Jalankan pernyataan SQL sekarang dan ulangi satu kali per hari tanpa akhir
CREATE EVENT <event name>
ON SCHEDULE
EVERY 1 DAY
STARTS (TIMESTAMP(CURRENT_DATE) + INTERVAL 1 DAY + INTERVAL 1 HOUR)
COMMENT 'Comment'
DO
<your statement>;
Menjalankan pernyataan SQL setiap jam tanpa akhir
CREATE EVENT <event name>
ON SCHEDULE
EVERY 1 HOUR
COMMENT 'Comment'
DO
<your statement>;
Menjalankan pernyataan SQL setiap hari tanpa akhir
CREATE EVENT <event name>
ON SCHEDULE
EVERY 1 DAY
STARTS str_to_date( date_format(now(), '%Y%m%d 0200'), '%Y%m%d %H%i' ) + INTERVAL 1 DAY
COMMENT 'Comment'
DO
<your statement>;
Parameter server yang tidak dapat dikonfigurasi
Parameter server di bawah tidak dapat dikonfigurasi dalam layanan:
Parameter | Nilai tetap |
---|---|
innodb_file_per_table di tingkatan dasar |
TIDAK AKTIF |
innodb_flush_log_at_trx_commit |
1 |
sync_binlog |
1 |
innodb_log_file_size |
256 MB |
innodb_log_files_in_group |
2 |
Variabel lain yang tidak tercantum di sini diatur ke nilai default MySQL. Lihat dokumen MySQL untuk versi 8.0, 5.7, dan 5.6 untuk nilai default.
Langkah berikutnya
- Pelajari cara mengonfigurasi parameter server menggunakan portal Microsoft Azure
- Pelajari cara mengonfigurasi parameter server menggunakan Azure CLI
- Pelajari cara mengonfigurasi parameter server menggunakan PowerShell