MySQL için Azure Veritabanı - Esnek Sunucuda sunucu parametreleri
Bu makalede, MySQL için Azure Veritabanı - Esnek Sunucuda sunucu parametrelerini yapılandırmaya yönelik önemli noktalar ve yönergeler sağlanır.
Not
Bu makalede, Microsoft'un artık kullanmadığı bağımlı terimine başvurular yer alır. Terim yazılımdan kaldırıldığında, bu makaleden kaldıracağız.
Sunucu parametreleri nedir?
MySQL altyapısı, altyapı davranışını yapılandırmak ve ayarlamak için kullanabileceğiniz birçok sunucu parametresi (değişkenler olarak da adlandırılır) sağlar. Bazı parametreler çalışma zamanı sırasında dinamik olarak ayarlanabilir. Diğerleri statiktir ve siz ayarladıktan sonra sunucunun yeniden başlatılmasını gerektirir.
MySQL için Azure Veritabanı - Esnek Sunucu'da, Azure portalını kullanarak MySQL için Azure Veritabanı - Esnek Sunucuda sunucu parametrelerini yapılandırma ve 'de sunucu parametrelerini yapılandırma'yı kullanarak çeşitli MySQL sunucu parametrelerinin değerini değiştirebilirsiniz MySQL için Azure Veritabanı - İş yükünüzün gereksinimlerini karşılamak için Azure CLI kullanan Esnek Sunucu.
Yapılandırılabilir sunucu parametreleri
Sunucu parametrelerini kullanarak MySQL için Azure Veritabanı Esnek Sunucu yapılandırmasını yönetebilirsiniz. Sunucu parametreleri, sunucuyu oluşturduğunuzda varsayılan ve önerilen değerlerle yapılandırılır. Azure portalındaki Sunucu parametreleri bölmesinde hem değiştirilebilir hem de değiştirilemeyen parametreler gösterilir. Değiştirilemeyen sunucu parametreleri kullanılamıyor.
Desteklenen sunucu parametreleri listesi sürekli büyüyor. Sunucu parametrelerinin tam listesini düzenli aralıklarla görüntülemek ve değerleri yapılandırmak için Azure portalını kullanabilirsiniz.
Portalı kullanarak statik sunucu parametresini değiştirirseniz değişikliklerin etkili olması için sunucuyu yeniden başlatmanız gerekir. Otomasyon betiklerini (Azure Resource Manager şablonları, Terraform veya Azure CLI gibi araçlar aracılığıyla) kullanıyorsanız, oluşturma deneyiminin bir parçası olarak yapılandırmayı değiştirseniz bile, betiğinizde ayarların geçerli olması için hizmeti yeniden başlatmaya yönelik bir sağlama olmalıdır.
Ortamınız için değiştirilemez bir sunucu parametresini değiştirmek istiyorsanız, topluluk geri bildirimi aracılığıyla bir fikir gönderin veya geri bildirimin zaten mevcut olup olmadığını oylayın (öncelik belirlememize yardımcı olabilir).
Aşağıdaki bölümlerde, yaygın olarak güncelleştirilen sunucu parametrelerinin sınırları açıklanmaktadır. Sınırları sunucunun işlem katmanı ve boyutu (sanal çekirdekler) belirler.
lower_case_table_names
MySQL sürüm 5.7 için varsayılan değeri lower_case_table_names
MySQL için Azure Veritabanı - Esnek Sunucu'dadır1
. Desteklenen değeri 2
olarak değiştirmek mümkün olsa da, geri dönüşe 2
1
izin verilmez. Varsayılan değeri değiştirmeyle ilgili yardım için bir destek bileti oluşturun.
MySQL sürüm 8.0+ için yalnızca sunucuyu başlatırken yapılandırabilirsinizlower_case_table_names
. Daha fazla bilgi edinin. lower_case_table_names
Sunucu başlatıldıktan sonra ayarı değiştirmek yasaktır.
MySQL sürüm 8.0 için desteklenen değerler MySQL için Azure Veritabanı - Esnek Sunucu'dadır 1
2
. Varsayılan değer şudur: 1
. Sunucu oluşturma sırasında varsayılan değeri değiştirmeyle ilgili yardım için bir destek bileti oluşturun.
innodb_tmpdir
yeniden derleyen çevrimiçi ALTER TABLE
işlemler sırasında oluşturulan geçici sıralama dosyalarının dizinini tanımlamak için MySQL için Azure Veritabanı - Esnek Sunucu'da innodb_tmpdir parametresini kullanırsınız.
innodb_tmpdir
için varsayılan değer /mnt/temp
değeridir. Bu konum geçici depolama alanına (SSD) karşılık gelir ve her sunucu işlem boyutuyla birlikte gibibaytlar (GiB) cinsinden kullanılabilir. Bu konum, büyük miktarda alan gerektirmeyen işlemler için idealdir.
Daha fazla alana ihtiyacınız varsa olarak ayarlayabilirsiniz innodb_tmpdir
/app/work/tmpdir
. Bu ayar, MySQL için Azure Veritabanı Esnek Sunucunuzdaki kullanılabilir depolama kapasitesini kullanır. Bu ayar, daha fazla geçici depolama gerektiren daha büyük işlemler için yararlı olabilir.
Kullanmanın /app/work/tmpdir
varsayılan geçici depolama (SSD) /mnt/temp
değerine kıyasla daha yavaş performansa neden olduğunu unutmayın. İşlemlerin belirli gereksinimlerine göre seçim yapın.
için innodb_tmpdir
sağlanan bilgiler, aşağıdaki durumlarda innodb_temp_tablespaces_dir, tmpdir ve slave_load_tmpdir parametreleri için geçerlidir:
- Varsayılan değer
/mnt/temp
ortaktır. - Alternatif dizin
/app/work/tmpdir
, belirli işletimsel gereksinimlere göre performans açısından bir denge oluşturarak daha yüksek geçici depolamayı yapılandırmak için kullanılabilir.
log_bin_trust_function_creators
MySQL için Azure Veritabanı - Esnek Sunucu'da ikili günlükler her zaman etkindir (yani olarak log_bin
ayarlanırON
). log_bin_trust_function_creators
parametresi esnek sunucularda varsayılan olarak olarak ayarlanırON
.
İkili günlük biçimi her zaman ROW
olur ve sunucu bağlantıları her zaman satır tabanlı ikili günlük kaydı kullanır. Satır tabanlı ikili günlük kaydı ile güvenlik sorunları yoktur ve ikili günlük kaydı bozulamaz, bu nedenle olarak ON
kalmasına güvenle izin vekleyebilirsinizlog_bin_trust_function_creators
.
olarak ayarlanırsa log_bin_trust_function_creators
OFF
ve tetikleyici oluşturmaya çalışırsanız şuna benzer hatalar alabilirsiniz: "SÜPER ayrıcalığınız yok ve ikili günlük etkinleştirildi (daha az güvenli log_bin_trust_function_creators
değişkeni kullanmak isteyebilirsiniz)."
innodb_buffer_pool_size
Parametresi hakkında innodb_buffer_pool_size
bilgi edinmek için MySQL belgelerini gözden geçirin.
Aşağıdaki tabloda yer alan fiziksel bellek boyutu, MySQL için Azure Veritabanı Esnek Sunucunuzda gigabayt (GB) cinsinden kullanılabilir rastgele erişim belleğini (RAM) temsil eder.
İşlem boyutu | Sanal çekirdek | Fiziksel bellek boyutu (GB) | Varsayılan değer (bayt) | En düşük değer (bayt) | Maksimum değer (bayt) |
---|---|---|---|---|---|
Seri hale getirme | |||||
Standard_B1s | 1 | 1 | 134217728 | 33554432 | 268435456 |
Standard_B1ms | 1 | 2 | 536870912 | 134217728 | 1073741824 |
Standard_B2s | 2 | 4 | 2147483648 | 134217728 | 2147483648 |
Standard_B2ms | 2 | 8 | 4294967296 | 134217728 | 5368709120 |
Standard_B4ms | 4 | 16 | 12884901888 | 134217728 | 12884901888 |
Standard_B8ms | 8 | 32 | 25769803776 | 134217728 | 25769803776 |
Standard_B12ms | 12 | 48 | 51539607552 | 134217728 | 32212254720 |
Standard_B16ms | 16 | 64 | 2147483648 | 134217728 | 51539607552 |
Standard_B20ms | 20 | 80 | 64424509440 | 134217728 | 64424509440 |
Genel Amaçlı | |||||
Standard_D2ads_v5 | 2 | 8 | 4294967296 | 134217728 | 5368709120 |
Standard_D2ds_v4 | 2 | 8 | 4294967296 | 134217728 | 5368709120 |
Standard_D4ads_v5 | 4 | 16 | 12884901888 | 134217728 | 12884901888 |
Standard_D4ds_v4 | 4 | 16 | 12884901888 | 134217728 | 12884901888 |
Standard_D8ads_v5 | 8 | 32 | 25769803776 | 134217728 | 25769803776 |
Standard_D8ds_v4 | 8 | 32 | 25769803776 | 134217728 | 25769803776 |
Standard_D16ads_v5 | 16 | 64 | 51539607552 | 134217728 | 51539607552 |
Standard_D16ds_v4 | 16 | 64 | 51539607552 | 134217728 | 51539607552 |
Standard_D32ads_v5 | 32 | 128 | 103079215104 | 134217728 | 103079215104 |
Standard_D32ds_v4 | 32 | 128 | 103079215104 | 134217728 | 103079215104 |
Standard_D48ads_v5 | 48 | 192 | 154618822656 | 134217728 | 154618822656 |
Standard_D48ds_v4 | 48 | 192 | 154618822656 | 134217728 | 154618822656 |
Standard_D64ads_v5 | 64 | Kategori 256 | 206158430208 | 134217728 | 206158430208 |
Standard_D64ds_v4 | 64 | Kategori 256 | 206158430208 | 134217728 | 206158430208 |
İş Açısından Kritik | |||||
Standard_E2ds_v4 | 2 | 16 | 12884901888 | 134217728 | 12884901888 |
Standard_E2ads_v5, Standard_E2ds_v5 | 2 | 16 | 12884901888 | 134217728 | 12884901888 |
Standard_E4ds_v4 | 4 | 32 | 25769803776 | 134217728 | 25769803776 |
Standard_E4ads_v5, Standard_E4ds_v5 | 4 | 32 | 25769803776 | 134217728 | 25769803776 |
Standard_E8ds_v4 | 8 | 64 | 51539607552 | 134217728 | 51539607552 |
Standard_E8ads_v5, Standard_E8ds_v5 | 8 | 64 | 51539607552 | 134217728 | 51539607552 |
Standard_E16ds_v4 | 16 | 128 | 103079215104 | 134217728 | 103079215104 |
Standard_E16ads_v5, Standard_E16ds_v5 | 16 | 128 | 103079215104 | 134217728 | 103079215104 |
Standard_E20ds_v4 | 20 | 160 | 128849018880 | 134217728 | 128849018880 |
Standard_E20ads_v5, Standard_E20ds_v5 | 20 | 160 | 128849018880 | 134217728 | 128849018880 |
Standard_E32ds_v4 | 32 | Kategori 256 | 206158430208 | 134217728 | 206158430208 |
Standard_E32ads_v5, Standard_E32ds_v5 | 32 | Kategori 256 | 206158430208 | 134217728 | 206158430208 |
Standard_E48ds_v4 | 48 | 384 | 309237645312 | 134217728 | 309237645312 |
Standard_E48ads_v5, Standard_E48ds_v5 | 48 | 384 | 309237645312 | 134217728 | 309237645312 |
Standard_E64ds_v4 | 64 | 504 | 405874409472 | 134217728 | 405874409472 |
Standard_E64ads_v5, Standard_E64ds_v5 | 64 | 512 | 412316860416 | 134217728 | 412316860416 |
Standard_E80ids_v4 | 80 | 504 | 405874409472 | 134217728 | 405874409472 |
Standard_E96ds_v5 | 96 | 672 | 541165879296 | 134217728 | 541165879296 |
innodb_file_per_table
MySQL, InnoDB tablosunu, tablo oluşturma sırasında sağladığınız yapılandırmaya göre farklı tablo boşluklarında depolar. Sistem tablo alanı, InnoDB veri sözlüğü için depolama alanıdır. Tablo başına dosya tablo alanı, tek bir InnoDB tablosunun verilerini ve dizinlerini içerir ve kendi veri dosyasında dosya sisteminde depolanır. innodb_file_per_table sunucusu parametresi bu davranışı denetler.
OFF
ayarıinnodb_file_per_table
, InnoDB'nin sistem tablo alanında tablolar oluşturmasına neden olur. Aksi takdirde, InnoDB tablo başına dosya tablo boşluklarında tablolar oluşturur.
MySQL için Azure Veritabanı - Esnek Sunucu, tek bir veri dosyasında en fazla 8 terabayt (TB) destekler. Veritabanınızın boyutu 8 TB'tan büyükse tabloyu tablespace içinde innodb_file_per_table
oluşturmanız gerekir. 8 TB'tan büyük tek bir tablo boyutunuz varsa bölüm tablosunu kullanmanız gerekir.
innodb_log_file_size
innodb_log_file_size değeri, bir günlük grubundaki her günlük dosyasının boyutudur (bayt cinsinden). Günlük dosyalarının birleşik boyutu (innodb_log_file_size * innodb_log_files_in_group) 512 GB'tan biraz daha az olan en yüksek değeri aşamaz.
Daha büyük bir günlük dosyası boyutu performans için daha iyidir, ancak bunun dezavantajı kilitlenmeden sonraki kurtarma süresinin yüksek olmasıdır. Nadir kilitlenme olayı için kurtarma süresini dengelemeniz ve yoğun işlemler sırasında aktarım hızını en üst düzeye çıkarmanız gerekir. Daha büyük bir günlük dosyası boyutu da yeniden başlatma sürelerinin daha uzun olmasına neden olabilir.
MySQL için Azure Veritabanı - Esnek Sunucu için 256 megabayt (MB), 512 MB, 1 GB veya 2 GB olarak yapılandırabilirsinizinnodb_log_size
. Parametre statiktir ve yeniden başlatma gerektirir.
Not
Parametresini innodb_log_file_size
varsayılan değerden değiştirdiyseniz, yeniden başlatma gecikmesini önlemek için değerinin show global status like 'innodb_buffer_pool_pages_dirty'
30 saniye boyunca 0
kalıp kalmadiğini denetleyin.
max_connections
Sunucunun bellek boyutu değerini max_connections
belirler. Aşağıdaki tabloda yer alan fiziksel bellek boyutu, MySQL için Azure Veritabanı Esnek Sunucunuzdaki kullanılabilir RAM'i gigabayt cinsinden temsil eder.
İşlem boyutu | Sanal çekirdek | Fiziksel bellek boyutu (GB) | Default value | En düşük değer | En yüksek değer |
---|---|---|---|---|---|
Seri hale getirme | |||||
Standard_B1s | 1 | 1 | 85 | 10 | 171 |
Standard_B1ms | 1 | 2 | 171 | 10 | 341 |
Standard_B2s | 2 | 4 | 341 | 10 | 683 |
Standard_B2ms | 2 | 4 | 683 | 10 | Kategori 1365 |
Standard_B4ms | 4 | 16 | Kategori 1365 | 10 | 2731 |
Standard_B8ms | 8 | 32 | 2731 | 10 | 5461 |
Standard_B12ms | 12 | 48 | 4097 | 10 | 8193 |
Standard_B16ms | 16 | 64 | 5461 | 10 | 10923 |
Standard_B20ms | 20 | 80 | 6827 | 10 | 13653 |
Genel Amaçlı | |||||
Standard_D2ads_v5 | 2 | 8 | 683 | 10 | Kategori 1365 |
Standard_D2ds_v4 | 2 | 8 | 683 | 10 | Kategori 1365 |
Standard_D4ads_v5 | 4 | 16 | Kategori 1365 | 10 | 2731 |
Standard_D4ds_v4 | 4 | 16 | Kategori 1365 | 10 | 2731 |
Standard_D8ads_v5 | 8 | 32 | 2731 | 10 | 5461 |
Standard_D8ds_v4 | 8 | 32 | 2731 | 10 | 5461 |
Standard_D16ads_v5 | 16 | 64 | 5461 | 10 | 10923 |
Standard_D16ds_v4 | 16 | 64 | 5461 | 10 | 10923 |
Standard_D32ads_v5 | 32 | 128 | 10923 | 10 | 21845 |
Standard_D32ds_v4 | 32 | 128 | 10923 | 10 | 21845 |
Standard_D48ads_v5 | 48 | 192 | 16384 | 10 | 32768 |
Standard_D48ds_v4 | 48 | 192 | 16384 | 10 | 32768 |
Standard_D64ads_v5 | 64 | Kategori 256 | 21845 | 10 | 43691 |
Standard_D64ds_v4 | 64 | Kategori 256 | 21845 | 10 | 43691 |
İş Açısından Kritik | |||||
Standard_E2ds_v4 | 2 | 16 | Kategori 1365 | 10 | 2731 |
Standard_E2ads_v5, Standard_E2ds_v5 | 2 | 16 | Kategori 1365 | 10 | 2731 |
Standard_E4ds_v4 | 4 | 32 | 2731 | 10 | 5461 |
Standard_E4ads_v5, Standard_E4ds_v5 | 4 | 32 | 2731 | 10 | 5461 |
Standard_E8ds_v4 | 8 | 64 | 5461 | 10 | 10923 |
Standard_E8ads_v5, Standard_E8ds_v5 | 8 | 64 | 5461 | 10 | 10923 |
Standard_E16ds_v4 | 16 | 128 | 10923 | 10 | 21845 |
Standard_E16ads_v5, Standard_E16ds_v5 | 16 | 128 | 10923 | 10 | 21845 |
Standard_E20ds_v4 | 20 | 160 | 13653 | 10 | 27306 |
Standard_E20ads_v5, Standard_E20ds_v5 | 20 | 160 | 13653 | 10 | 27306 |
Standard_E32ds_v4 | 32 | Kategori 256 | 21845 | 10 | 43691 |
Standard_E32ads_v5, Standard_E32ds_v5 | 32 | Kategori 256 | 21845 | 10 | 43691 |
Standard_E48ds_v4 | 48 | 384 | 32768 | 10 | 65536 |
Standard_E48ads_v5, Standard_E48ds_v5 | 48 | 384 | 32768 | 10 | 65536 |
Standard_E64ds_v4 | 64 | 504 | 43008 | 10 | 86016 |
Standard_E64ads_v5, Standard_E64ds_v5 | 64 | 512 | 43691 | 10 | 87383 |
Standard_E80ids_v4 | 80 | 504 | 43008 | 10 | 86016 |
Standard_E96ds_v5 | 96 | 672 | Kategori 50000 | 10 | 100000 |
Bağlantılar sınırı aştığında şu hatayı alabilirsiniz: "HATA 1040 (08004): Çok fazla bağlantı var."
MySQL'e yeni istemci bağlantıları oluşturmak zaman alır. Bu bağlantıları kurduktan sonra, boşta olsalar bile veritabanı kaynaklarını kaplarlar. Çoğu uygulama, bu durumu oluşturan birçok kısa süreli bağlantı istemektedir. Sonuç, gerçek iş yükünüz için daha az kaynak kullanılabilir olduğundan performansın düşmesine neden olur.
Boşta kalan bağlantıları azaltan ve mevcut bağlantıları yeniden kullanan bir bağlantı havuzu oluşturucu bu sorunu önlemenize yardımcı olur. En iyi deneyim için, bağlantıları verimli bir şekilde yönetmek için ProxySQL gibi bir bağlantı havuzu oluşturucu kullanmanızı öneririz. ProxySQL'i ayarlama hakkında bilgi edinmek için bu blog gönderisine bakın.
Not
ProxySQL bir açık kaynak topluluk aracıdır. Microsoft bunu en iyi çaba temelinde destekler. Yetkili yönergelerle üretim desteği almak için ProxySQL ürün desteğine başvurun.
innodb_strict_mode
"Satır boyutu çok büyük (> 8126)" gibi bir hata alırsanız, sunucu parametresini innodb_strict_mode
kapatmak isteyebilirsiniz. Satır veri boyutu 8K'dan büyükse veriler hata olmadan kesildiğinden, bu parametre sunucu düzeyinde genel olarak değiştirilemez. Bu kesme işlemi olası veri kaybına neden olabilir. Şemayı sayfa boyutu sınırına uyacak şekilde değiştirmenizi öneririz.
kullanarak bu parametreyi oturum düzeyinde init_connect
ayarlayabilirsiniz. Daha fazla bilgi için bkz . Değiştirilemez sunucu parametrelerini ayarlama.
Not
Okuma amaçlı bir çoğaltma sunucunuz varsa, bir kaynak sunucuda oturum düzeyinde olarak ayarlanması innodb_strict_mode
OFF
çoğaltmayı bozar. Okuma amaçlı çoğaltmalarınız varsa parametresini olarak ayarlamanızı ON
öneririz.
time_zone
İlk dağıtımdan sonra MySQL için Azure Veritabanı - Esnek Sunucu örneği saat dilimi bilgileri için sistem tabloları içerir, ancak bu tablolar doldurulmaz. MySQL komut satırı veya MySQL Workbench gibi bir araçtan saklı yordamı çağırarak mysql.az_load_timezone
saat dilimi tablolarını doldurabilirsiniz. Ayrıca saklı yordamı çağırabilir ve Azure portalını veya Azure CLI'yı kullanarak genel veya oturum düzeyinde saat dilimlerini ayarlayabilirsiniz.
binlog_expire_logs_seconds
MySQL için Azure Veritabanı - Esnek Sunucu'da binlog_expire_logs_seconds
parametresi, hizmetin ikili günlük dosyasını silmeden önce bekleyeceği saniye sayısını belirtir.
İkili günlük, tablo oluşturma işlemleri veya tablo verisinde yapılan değişiklikler gibi veritabanı değişikliklerini açıklayan olaylar içerir. İkili günlük ayrıca, değişiklik yapmış olabilecek deyimlerin olaylarını da içerir. İkili günlük esas olarak iki amaçla kullanılır: çoğaltma ve veri kurtarma işlemleri.
Genellikle, tanıtıcı hizmetten, yedeklemeden veya çoğaltma kümesinden çıkar çıkmaz ikili günlükler silinir. Birden çok çoğaltma varsa, ikili günlükler silinmeden önce en yavaş çoğaltmanın değişiklikleri okumasını bekler.
İkili günlükleri daha uzun süre kalıcı hale getirmek istiyorsanız parametresini binlog_expire_logs_seconds
yapılandırabilirsiniz. varsayılan değerine 0
ayarlanırsabinlog_expire_logs_seconds
, tanıtıcı serbest bırakılır silinmez ikili günlük silinir. değeri binlog_expire_logs_seconds
değerinden 0
büyükse, ikili günlük, yapılandırılan saniye sayısından sonra silinir.
MySQL için Azure Veritabanı - Esnek Sunucu, ikili dosyaların yedek ve okuma amaçlı çoğaltma silinmesi gibi yönetilen özellikleri dahili olarak işler. verileri MySQL için Azure Veritabanı - Esnek Sunucudan çoğalttığınızda, çoğaltmanın birincil sunucudaki değişikliklerden okuması için ikili günlüklerin silinmesini önlemek için bu parametrenin birincil sunucuda ayarlanması gerekir. Daha yüksek bir değere ayarlarsanız binlog_expire_logs_seconds
ikili günlükler yeterince yakında silinmez. Bu gecikme, depolama faturalamasında artışa neden olabilir.
event_scheduler
MySQL için Azure Veritabanı - Esnek Sunucu'da event_scheduler
sunucu parametresi olayları oluşturmayı, zamanlamayı ve çalıştırmayı yönetir. Yani parametresi, özel bir MySQL Olay Zamanlayıcı iş parçacığı tarafından zamanlamaya göre çalışan görevleri yönetir. event_scheduler
parametresi olarak ayarlandığındaON
, Event Scheduler iş parçacığı çıkışında SHOW PROCESSLIST
bir daemon işlemi olarak listelenir.
MySQL sürüm 5.7 sunucuları için, yedekleme başlatıldığında sunucu parametresi event_scheduler
otomatik olarak 'KAPALI' olarak kapatılır ve yedekleme başarıyla tamamlandıktan sonra sunucu parametresi event_scheduler
'AÇILDI' olarak geri döner. MySQL için Azure Veritabanı - Esnek Sunucu için MySQL sürüm 8.0'da, yedeklemeler sırasında event_scheduler etkilenmez. Daha sorunsuz işlemler sağlamak için, ana sürüm yükseltmesi kullanarak MySQL 5.7 sunucularınızı sürüm 8.0'a yükseltmeniz önerilir.
Aşağıdaki SQL söz dizimini kullanarak olayları oluşturabilir ve zamanlayabilirsiniz:
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>;
Olay oluşturma hakkında daha fazla bilgi için MySQL başvuru kılavuzundaki Olay Zamanlayıcı hakkında aşağıdaki belgelere bakın:
event_scheduler sunucusu parametresini yapılandırma
Aşağıdaki senaryo, MySQL için Azure Veritabanı - Esnek Sunucu'da parametresini event_scheduler
kullanmanın bir yolunu göstermektedir.
Senaryoyu göstermek için aşağıdaki basit tablo örneğini göz önünde bulundurun:
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) |
| ``` |
| To configure the `event_scheduler` server parameter in Azure Database for MySQL - Flexible Server, perform the following steps: |
1. In the Azure portal, go to your Azure Database for MySQL - Flexible Server instance. Under **Settings**, select **Server parameters**.
1. On the **Server parameters** pane, search for `event_scheduler`. In the **VALUE** dropdown list, select **ON**, and then select **Save**.
> [!NOTE]
> Deployment of the dynamic configuration change to the server parameter doesn't require a restart.
1. To create an event, connect to the Azure Database for MySQL - Flexible Server instance and run the following SQL command:
```sql
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());
```
1. To view the Event Scheduler details, run the following SQL statement:
```sql
SHOW EVENTS;
```
The following output appears:
```sql
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) |
| ``` |
1. After a few minutes, query the rows from the table to begin viewing the rows inserted every minute according to the `event_scheduler` parameter that you configured:
```azurecli
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) |
| ``` |
| 1. After an hour, run a `select` statement on the table to view the complete result of the values inserted into table every minute for an hour (as `event_scheduler` is configured in this case): |
```azurecli
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) |
| ``` |
#### Other scenarios
You can set up an event based on the requirements of your specific scenario. A few examples of scheduling SQL statements to run at various time intervals follow.
To run a SQL statement now and repeat one time per day with no end:
```sql
CREATE EVENT <event name>
ON SCHEDULE
EVERY 1 DAY
STARTS (TIMESTAMP(CURRENT_DATE) + INTERVAL 1 DAY + INTERVAL 1 HOUR)
COMMENT 'Comment'
DO
<your statement>;
Sql deyimini bitiş olmadan saatte bir çalıştırmak için:
CREATE EVENT <event name>
ON SCHEDULE
EVERY 1 HOUR
COMMENT 'Comment'
DO
<your statement>;
Her gün sonu olmayan bir SQL deyimi çalıştırmak için:
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>;
Sınırlamalar
Yüksek kullanılabilirlik yapılandırmasına sahip sunucular için yük devretme gerçekleştiğinde event_scheduler
sunucu parametresi olarak ayarlanmış OFF
olabilir. Bu durumda, yük devretme tamamlandığında parametresini değerini ON
olarak ayarlayacak şekilde yapılandırın.
Değiştirilemez sunucu parametreleri
Azure portalındaki Sunucu parametreleri bölmesinde hem değiştirilebilir hem de değiştirilemeyen sunucu parametreleri gösterilir. Değiştirilemeyen sunucu parametreleri kullanılamıyor. Azure portalında veya Azure CLI'da kullanarak init_connect
oturum düzeyinde değiştirilemez bir sunucu parametresi yapılandırabilirsiniz.