MySQL için Azure Veritabanı'de sunucu parametreleri

ŞUNLAR IÇIN GEÇERLIDIR: MySQL için Azure Veritabanı - Tek Sunucu

Önemli

MySQL için Azure Veritabanı tek sunucu kullanımdan kaldırma yolundadır. Esnek MySQL için Azure Veritabanı sunucuya yükseltmenizi kesinlikle öneririz. MySQL için Azure Veritabanı esnek sunucuya geçiş hakkında daha fazla bilgi için bkz. MySQL için Azure Veritabanı Tek Sunucu'ya neler oluyor?

Bu makalede, MySQL için Azure Veritabanı'da sunucu parametrelerini yapılandırmaya yönelik önemli noktalar ve yönergeler sağlanır.

Sunucu parametreleri nedir?

MySQL altyapısı, altyapı davranışını yapılandırmak ve ayarlamak için kullandığınız birçok farklı sunucu değişkeni ve parametresi sağlar. Bazı parametreler çalışma zamanı sırasında dinamik olarak ayarlanabilirken, diğerleri statiktir ve uygulamak için sunucunun yeniden başlatılmasını gerektirir.

MySQL için Azure Veritabanı kullanarak çeşitli MySQL sunucu parametrelerinin değerini değiştirme özelliğini kullanıma sunarİş yükünüzün gereksinimlerini karşılamak için Azure portalı, Azure CLI ve PowerShell.

Yapılandırılabilir sunucu parametreleri

Desteklenen sunucu parametreleri listesi sürekli büyüyor. Azure portalında sunucu parametreleri sekmesini kullanarak tam listeyi görüntüleyin ve sunucu parametreleri değerlerini yapılandırın.

Yaygın olarak güncelleştirilen birkaç sunucu parametresinin sınırları hakkında daha fazla bilgi edinmek için aşağıdaki bölümlere bakın. Sınırlar, sunucunun fiyatlandırma katmanına ve sanal çekirdeklerine göre belirlenir.

İş parçacığı havuzları

MySQL geleneksel olarak her istemci bağlantısı için bir iş parçacığı atar. Eş zamanlı kullanıcı sayısı arttıkça buna karşılık gelen performans düşüşü olur. Birçok etkin iş parçacığı, artan bağlam geçişi, iş parçacığı çekişmesi ve CPU önbellekleri için kötü yerellik nedeniyle performansı önemli ölçüde etkileyebilir.

Sunucu tarafı bir özellik olan ve bağlantı havuzundan farklı olan iş parçacığı havuzları, dinamik bir çalışan iş parçacığı havuzu sunarak performansı en üst düzeye çıkarır. Bu özelliği, sunucuda çalışan etkin iş parçacıklarının sayısını sınırlamak ve iş parçacığı değişim oranını en aza indirmek için kullanırsınız. Bu, bir bağlantı patlamasının sunucunun kaynaklarının veya belleğinin yetersiz olmasına neden olmamasını sağlamaya yardımcı olur. İş parçacığı havuzları, OLTP iş yükleri gibi kısa sorgular ve YOĞUN CPU kullanan iş yükleri için en verimli yöntemdir.

Daha fazla bilgi için bkz. MySQL için Azure Veritabanı iş parçacığı havuzlarını tanıtma.

Dekont

İş parçacığı havuzları MySQL 5.6 için desteklenmez.

İş parçacığı havuzunu yapılandırma

İş parçacığı havuzunu etkinleştirmek için sunucu parametresini olarak pool-of-threadsgüncelleştirinthread_handling. Varsayılan olarak, bu parametre olarak one-thread-per-connectionayarlanır, yani MySQL her yeni bağlantı için yeni bir iş parçacığı oluşturur. Bu statik bir parametredir ve sunucunun yeniden başlatılmasını gerektirir.

Aşağıdaki sunucu parametrelerini ayarlayarak havuzdaki iş parçacığı sayısı üst sınırını ve en düşük sayısını da yapılandırabilirsiniz:

  • thread_pool_max_threads: Bu değer havuzdaki iş parçacığı sayısını sınırlar.
  • thread_pool_min_threads: Bu değer, bağlantılar kapatıldıktan sonra bile ayrılmış iş parçacığı sayısını ayarlar.

İş parçacığı havuzundaki kısa sorguların performans sorunlarını geliştirmek için toplu yürütmeyi etkinleştirebilirsiniz. Bir sorgu çalıştırdıktan hemen sonra iş parçacığı havuzuna geri dönmek yerine, iş parçacıkları bu bağlantı üzerinden bir sonraki sorguyu beklemek için kısa bir süre etkin kalır. İş parçacığı daha sonra sorguyu hızlı bir şekilde çalıştırır ve bu işlem tamamlandığında iş parçacığı bir sonrakini bekler. Bu işlem, harcanan genel süre eşiği aşana kadar devam eder.

Aşağıdaki sunucu parametrelerini kullanarak toplu yürütme davranışını belirlersiniz:

  • thread_pool_batch_wait_timeout: Bu değer, bir iş parçacığının başka bir sorgunun işlenmesini beklediği süreyi belirtir.
  • thread_pool_batch_max_time: Bu değer, bir iş parçacığının sorgu yürütme döngüsünü tekrarlayıp sonraki sorguyu bekleme süresini belirler.

Önemli

Üretimde iş parçacığı havuzunu test edene kadar açmayın.

log_bin_trust_function_creators

MySQL için Azure Veritabanı'de ikili günlükler her zaman etkinleştirilir (log_binparametresi olarak ONayarlanır). Tetikleyicileri kullanmak istiyorsanız, aşağıdakine benzer bir hata alırsınız: 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)..

İkili günlük kaydı biçimi her zaman SATIR'dır ve sunucuya yapılan tüm bağlantılar her zaman satır tabanlı ikili günlük kaydı kullanır. Satır tabanlı ikili günlük, güvenliğin korunmasına yardımcı olur ve ikili günlük kaydı bozulamaz, böylece güvenli bir şekilde olarak ayarlayabilirsiniz log_bin_trust_function_creatorsTRUE.

innodb_buffer_pool_size

Bu parametre hakkında daha fazla bilgi edinmek için MySQL belgelerini gözden geçirin.

Genel amaçlı depolama v1 üzerindeki sunucular (4 TB'a kadar destekler)

Fiyatlandırma katmanı sanal çekirdekler Varsayılan değer (bayt) En düşük değer (bayt) Maksimum değer (bayt)
Temel 1 872415232 134217728 872415232
Temel 2 2684354560 134217728 2684354560
Genel Amaçlı 2 3758096384 134217728 3758096384
Genel Amaçlı 4 8053063680 134217728 8053063680
Genel Amaçlı 8 16106127360 134217728 16106127360
Genel Amaçlı 16 32749125632 134217728 32749125632
Genel Amaçlı 32 66035122176 134217728 66035122176
Genel Amaçlı 64 132070244352 134217728 132070244352
Bellek İçin İyileştirilmiş 2 7516192768 134217728 7516192768
Bellek İçin İyileştirilmiş 4 16106127360 134217728 16106127360
Bellek İçin İyileştirilmiş 8 32212254720 134217728 32212254720
Bellek İçin İyileştirilmiş 16 65498251264 134217728 65498251264
Bellek İçin İyileştirilmiş 32 132070244352 134217728 132070244352

Genel amaçlı depolama v2 üzerindeki sunucular (16 TB'a kadar destekler)

Fiyatlandırma katmanı sanal çekirdekler Varsayılan değer (bayt) En düşük değer (bayt) Maksimum değer (bayt)
Temel 1 872415232 134217728 872415232
Temel 2 2684354560 134217728 2684354560
Genel Amaçlı 2 7516192768 134217728 7516192768
Genel Amaçlı 4 16106127360 134217728 16106127360
Genel Amaçlı 8 32212254720 134217728 32212254720
Genel Amaçlı 16 65498251264 134217728 65498251264
Genel Amaçlı 32 132070244352 134217728 132070244352
Genel Amaçlı 64 264140488704 134217728 264140488704
Bellek İçin İyileştirilmiş 2 15032385536 134217728 15032385536
Bellek İçin İyileştirilmiş 4 32212254720 134217728 32212254720
Bellek İçin İyileştirilmiş 8 64424509440 134217728 64424509440
Bellek İçin İyileştirilmiş 16 130996502528 134217728 130996502528
Bellek İçin İyileştirilmiş 32 264140488704 134217728 264140488704

innodb_file_per_table

MySQL, tablo oluşturma sırasında sağladığınız yapılandırmaya göre tabloyu farklı tablo boşluklarında depolar InnoDB . Sistem tablo alanı, veri sözlüğü için InnoDB depolama alanıdır. Tablo başına dosya tablo alanı, tek InnoDB bir tablonun verilerini ve dizinlerini içerir ve kendi veri dosyasında dosya sisteminde depolanır.

Sunucu parametresini kullanarak bu davranışı denetleyebilirsiniz innodb_file_per_table . OFF Sistem tablo alanında tablo oluşturma nedenlerine InnoDB ayarinnodb_file_per_table. Aksi takdirde tablo InnoDB başına dosya tablo boşluklarında tablolar oluşturur.

Dekont

Yalnızca genel amaçlı depolama v2 ve genel amaçlı depolama v1 üzerinde genel amaçlı ve bellek için iyileştirilmiş fiyatlandırma katmanlarında güncelleştirme innodb_file_per_table yapabilirsiniz.

MySQL için Azure Veritabanı, genel amaçlı depolama v2'de tek bir veri dosyasında 4 TB 'ı (en büyükte) destekler. Veritabanınızın boyutu 4 TB'tan büyükse, tabloyu innodb_file_per_table tablo alanında oluşturmanız gerekir. 4 TB'tan büyük tek bir tablo boyutunuz varsa bölüm tablosunu kullanmanız gerekir.

join_buffer_size

Bu parametre hakkında daha fazla bilgi edinmek için MySQL belgelerini gözden geçirin.

Fiyatlandırma katmanı sanal çekirdekler Varsayılan değer (bayt) En düşük değer (bayt) Maksimum değer (bayt)
Temel 1 Temel katmanda yapılandırılamaz Geçersiz Geçersiz
Temel 2 Temel katmanda yapılandırılamaz Geçersiz Geçersiz
Genel Amaçlı 2 262144 128 268435455
Genel Amaçlı 4 262144 128 536870912
Genel Amaçlı 8 262144 128 1073741824
Genel Amaçlı 16 262144 128 2147483648
Genel Amaçlı 32 262144 128 4294967295
Genel Amaçlı 64 262144 128 4294967295
Bellek İçin İyileştirilmiş 2 262144 128 536870912
Bellek İçin İyileştirilmiş 4 262144 128 1073741824
Bellek İçin İyileştirilmiş 8 262144 128 2147483648
Bellek İçin İyileştirilmiş 16 262144 128 4294967295
Bellek İçin İyileştirilmiş 32 262144 128 4294967295

max_connections

Fiyatlandırma katmanı sanal çekirdekler Varsayılan değer En düşük değer En büyük değer
Temel 1 50 10 50
Temel 2 Kategori 100 10 100
Genel Amaçlı 2 300 10 600
Genel Amaçlı 4 625 10 1250
Genel Amaçlı 8 1250 10 2500
Genel Amaçlı 16 2500 10 Kategori 5000
Genel Amaçlı 32 Kategori 5000 10 10000
Genel Amaçlı 64 10000 10 20000
Bellek İçin İyileştirilmiş 2 625 10 1250
Bellek İçin İyileştirilmiş 4 1250 10 2500
Bellek İçin İyileştirilmiş 8 2500 10 Kategori 5000
Bellek İçin İyileştirilmiş 16 Kategori 5000 10 10000
Bellek İçin İyileştirilmiş 32 10000 10 20000

Bağlantı sayısı sınırı aştığında bir hata alabilirsiniz.

Bahşiş

Bağlantıları verimli bir şekilde yönetmek için ProxySQL gibi bir bağlantı havuzu oluşturucu kullanmak iyi bir fikirdir. ProxySQL'i ayarlama hakkında bilgi edinmek için MySQL için Azure Veritabanı'da ProxySQL kullanarak okuma amaçlı çoğaltmaları yük dengeleme blog gönderisine bakın. ProxySQL'in açık kaynak bir topluluk aracı olduğunu unutmayın. Microsoft tarafından en iyi çaba temelinde desteklenir.

max_heap_table_size

Bu parametre hakkında daha fazla bilgi edinmek için MySQL belgelerini gözden geçirin.

Fiyatlandırma katmanı sanal çekirdekler Varsayılan değer (bayt) En düşük değer (bayt) Maksimum değer (bayt)
Temel 1 Temel katmanda yapılandırılamaz Geçersiz Geçersiz
Temel 2 Temel katmanda yapılandırılamaz Geçersiz Geçersiz
Genel Amaçlı 2 16777216 16384 268435455
Genel Amaçlı 4 16777216 16384 536870912
Genel Amaçlı 8 16777216 16384 1073741824
Genel Amaçlı 16 16777216 16384 2147483648
Genel Amaçlı 32 16777216 16384 4294967295
Genel Amaçlı 64 16777216 16384 4294967295
Bellek İçin İyileştirilmiş 2 16777216 16384 536870912
Bellek İçin İyileştirilmiş 4 16777216 16384 1073741824
Bellek İçin İyileştirilmiş 8 16777216 16384 2147483648
Bellek İçin İyileştirilmiş 16 16777216 16384 4294967295
Bellek İçin İyileştirilmiş 32 16777216 16384 4294967295

query_cache_size

Sorgu önbelleği varsayılan olarak kapalıdır. Sorgu önbelleğini etkinleştirmek için parametresini query_cache_type yapılandırın.

Bu parametre hakkında daha fazla bilgi edinmek için MySQL belgelerini gözden geçirin.

Dekont

Sorgu önbelleği MySQL 5.7.20 itibarıyla kullanım dışıdır ve MySQL 8.0'da kaldırılmıştır.

Fiyatlandırma katmanı sanal çekirdekler Varsayılan değer (bayt) En düşük değer (bayt) En büyük değer
Temel 1 Temel katmanda yapılandırılamaz Geçersiz Geçersiz
Temel 2 Temel katmanda yapılandırılamaz Geçersiz Geçersiz
Genel Amaçlı 2 0 0 16777216
Genel Amaçlı 4 0 0 33554432
Genel Amaçlı 8 0 0 67108864
Genel Amaçlı 16 0 0 134217728
Genel Amaçlı 32 0 0 134217728
Genel Amaçlı 64 0 0 134217728
Bellek İçin İyileştirilmiş 2 0 0 33554432
Bellek İçin İyileştirilmiş 4 0 0 67108864
Bellek İçin İyileştirilmiş 8 0 0 134217728
Bellek İçin İyileştirilmiş 16 0 0 134217728
Bellek İçin İyileştirilmiş 32 0 0 134217728

lower_case_table_names

lower_case_table_name Parametresi varsayılan olarak 1 olarak ayarlanır ve bu parametreyi MySQL 5.6 ve MySQL 5.7'de güncelleştirebilirsiniz.

Bu parametre hakkında daha fazla bilgi edinmek için MySQL belgelerini gözden geçirin.

Dekont

MySQL 8.0'da varsayılan lower_case_table_name olarak 1 olarak ayarlanır ve değiştiremezsiniz.

innodb_strict_mode

gibi Row size too large (> 8126)bir hata alırsanız parametresini kapatmayı innodb_strict_mode göz önünde bulundurun. Sunucu düzeyinde genel olarak değiştiremezsiniz innodb_strict_mode . Satır veri boyutu 8K'dan büyükse, veriler hata bildirimi olmadan kesilir ve bu da olası veri kaybına neden olur. Şemayı sayfa boyutu sınırına uyacak şekilde değiştirmek iyi bir fikirdir.

Bu parametreyi kullanarak init_connectbir oturum düzeyinde ayarlayabilirsiniz. Oturum düzeyinde ayarlamak innodb_strict_mode için parametreyi listede olmayan ayarlama bölümüne bakın.

Dekont

Okuma amaçlı bir çoğaltma sunucunuz varsa, bir kaynak sunucudaki oturum düzeyinde olarak ayarlanması innodb_strict_modeOFF çoğaltmayı bozar. Okuma amaçlı çoğaltmalarınız varsa parametresini olarak ayarlamanızı ON öneririz.

sort_buffer_size

Bu parametre hakkında daha fazla bilgi edinmek için MySQL belgelerini gözden geçirin.

Fiyatlandırma katmanı sanal çekirdekler Varsayılan değer (bayt) En düşük değer (bayt) Maksimum değer (bayt)
Temel 1 Temel katmanda yapılandırılamaz Geçersiz Geçersiz
Temel 2 Temel katmanda yapılandırılamaz Geçersiz Geçersiz
Genel Amaçlı 2 524288 32768 4194304
Genel Amaçlı 4 524288 32768 8388608
Genel Amaçlı 8 524288 32768 16777216
Genel Amaçlı 16 524288 32768 33554432
Genel Amaçlı 32 524288 32768 33554432
Genel Amaçlı 64 524288 32768 33554432
Bellek İçin İyileştirilmiş 2 524288 32768 8388608
Bellek İçin İyileştirilmiş 4 524288 32768 16777216
Bellek İçin İyileştirilmiş 8 524288 32768 33554432
Bellek İçin İyileştirilmiş 16 524288 32768 33554432
Bellek İçin İyileştirilmiş 32 524288 32768 33554432

tmp_table_size

Bu parametre hakkında daha fazla bilgi edinmek için MySQL belgelerini gözden geçirin.

Fiyatlandırma katmanı sanal çekirdekler Varsayılan değer (bayt) En düşük değer (bayt) Maksimum değer (bayt)
Temel 1 Temel katmanda yapılandırılamaz Geçersiz Geçersiz
Temel 2 Temel katmanda yapılandırılamaz Geçersiz Geçersiz
Genel Amaçlı 2 16777216 1024 67108864
Genel Amaçlı 4 16777216 1024 134217728
Genel Amaçlı 8 16777216 1024 268435456
Genel Amaçlı 16 16777216 1024 536870912
Genel Amaçlı 32 16777216 1024 1073741824
Genel Amaçlı 64 16777216 1024 1073741824
Bellek İçin İyileştirilmiş 2 16777216 1024 134217728
Bellek İçin İyileştirilmiş 4 16777216 1024 268435456
Bellek İçin İyileştirilmiş 8 16777216 1024 536870912
Bellek İçin İyileştirilmiş 16 16777216 1024 1073741824
Bellek İçin İyileştirilmiş 32 16777216 1024 1073741824

InnoDB arabellek havuzu ısınması

MySQL için Azure Veritabanı yeniden başlattıktan sonra, tablolar sorgulandığından diskte bulunan veri sayfaları yüklenir. Bu, sorguların ilk çalıştırması için daha fazla gecikme süresine ve daha yavaş performansa yol açar. Gecikme süresine duyarlı iş yükleri için bu yavaş performansı kabul edilemez bulabilirsiniz.

Isınma süresini kısaltmak için arabellek havuzu ısınmasını kullanabilirsiniz InnoDB . Bu işlem, DML veya SELECT işlemlerinin ilgili satırlara erişmesini beklemek yerine yeniden başlatmadan önce arabellek havuzundaki disk sayfalarını yeniden yükler. Daha fazla bilgi için bkz . InnoDB arabellek havuzu sunucu parametreleri.

Ancak, iyileştirilmiş performans, sunucu için daha uzun bir başlangıç süresi harcamadan gelir. Bu parametreyi etkinleştirdiğinizde, sunucuda sağlanan IOPS'ye bağlı olarak sunucu başlatma ve yeniden başlatma sürelerinin artması beklenir. Sunucu bu süre boyunca kullanılamadığından başlatma veya yeniden başlatma performansının kabul edilebilir olduğundan emin olmak için yeniden başlatma süresini test etmek ve izlemek iyi bir fikirdir. Sağlanan IOPS sayısı 1000 IOPS'den az olduğunda (başka bir deyişle sağlanan depolama alanı 335 GB'tan az olduğunda) bu parametreyi kullanmayın.

Sunucu kapatma sırasında arabellek havuzunun durumunu kaydetmek için sunucu parametresini innodb_buffer_pool_dump_at_shutdown olarak ONayarlayın. Benzer şekilde, sunucu başlatma sırasında arabellek havuzu durumunu geri yüklemek için sunucu parametresini innodb_buffer_pool_load_at_startupON olarak ayarlayın. Sunucu parametresinin innodb_buffer_pool_dump_pctdeğerini düşürerek ve ince ayar yaparak başlatma veya yeniden başlatma üzerindeki etkiyi denetleyebilirsiniz. Varsayılan olarak, bu parametre olarak 25ayarlanır.

Dekont

InnoDB arabellek havuzu ısınma parametreleri yalnızca 16 TB'a kadar depolama alanı olan genel amaçlı depolama sunucularında desteklenir. Daha fazla bilgi için bkz. MySQL için Azure Veritabanı depolama seçenekleri.

time_zone

İlk dağıtımdan sonra, MySQL için Azure Veritabanı çalıştıran bir sunucu saat dilimi bilgileri için sistem tabloları içerir, ancak bu tablolar doldurulmaz. MySQL komut satırı veya MySQL Workbench gibi araçlardan saklı yordamı çağırarak mysql.az_load_timezone tabloları doldurabilirsiniz. Saklı yordamları çağırma ve genel veya oturum düzeyinde saat dilimlerini ayarlama hakkında bilgi için bkz . Saat dilimi parametresiyle çalışma (Azure portalı) veya Saat dilimi parametresiyle çalışma (Azure CLI).

binlog_expire_logs_seconds

MySQL için Azure Veritabanı bu parametre, hizmetin ikili günlük dosyasını temizlemeden ö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. Ayrıca, değişiklik yapma olasılığı olan deyimler için olaylar içerir. İkili günlük çoğunlukla iki amaçla kullanılır: çoğaltma ve veri kurtarma işlemleri.

Genellikle, tanıtıcı hizmetten, yedeklemeden veya çoğaltma kümesinden serbest olduğunda ikili günlükler temizlenir. Birden çok çoğaltma varsa, ikili günlükler temizlenmeden önce en yavaş çoğaltmanın değişiklikleri okumasını bekler. İkili günlüklerin daha uzun süre kalıcı olmasını istiyorsanız parametresini binlog_expire_logs_secondsyapılandırabilirsiniz. varsayılan değer olan değerini olarak ayarlarsanız binlog_expire_logs_seconds0, ikili günlük tutamacı serbest bırakılır kaldırılmaz temizlenir. 0'dan büyük olarak ayarlarsanız binlog_expire_logs_seconds , ikili günlük yalnızca bu süre sonunda temizlenir.

MySQL için Azure Veritabanı için, ikili dosyaların yedeklenmesi ve okuma amaçlı çoğaltma temizlemesi gibi yönetilen özellikler dahili olarak işlenir. verileri MySQL için Azure Veritabanı hizmetinden çoğalttığınızda, çoğaltma birincildeki değişikliklerden okumadan önce ikili günlüklerin temizlenmesini önlemek için bu parametreyi birincilde ayarlamanız gerekir. değerini binlog_expire_logs_seconds daha yüksek bir değere ayarlarsanız, ikili günlükler yeterince yakında temizlenmez. Bu, depolama faturalamasında artışa yol açabilir.

event_scheduler

MySQL için Azure Veritabanı'da event_schedule sunucu parametresi olayları oluşturmayı, zamanlamayı ve çalıştırmayı yönetir; örneğin, bir zamanlamaya göre çalışan görevler ve özel bir olay zamanlayıcı iş parçacığı tarafından çalıştırılır. event_scheduler Parametresi ON olarak ayarlandığında, olay zamanlayıcı iş parçacığı SHOW PROCESSLIST çıkışında bir daemon işlemi olarak listelenir. 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>;

Dekont

Olay oluşturma hakkında daha fazla bilgi için buradaki MySQL Olay Zamanlayıcı belgelerine bakın:

event_scheduler sunucu parametresini yapılandırma

Aşağıdaki senaryo, MySQL için Azure Veritabanı parametresini event_scheduler kullanmanın bir yolunu gösterir. Senaryoyu göstermek için basit bir tablo olan aşağıdaki örneği 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)

sunucu parametresini event_scheduler MySQL için Azure Veritabanı yapılandırmak için aşağıdaki adımları uygulayın:

  1. Azure portalında sunucunuza gidin ve Ayarlar altında Sunucu parametreleri'ni seçin.

  2. Sunucu parametreleri dikey penceresinde, DEĞER açılan listesinde öğesini arayınevent_scheduler, ON'ı ve ardından Kaydet'i seçin.

    Dekont

    Dinamik sunucu parametresi yapılandırma değişikliği yeniden başlatma olmadan dağıtılır.

  3. Ardından bir olay oluşturmak için MySQL sunucusuna bağlanın ve aşağıdaki SQL komutunu çalıştırın:

    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());
    
  4. Olay Zamanlayıcı Ayrıntılarını görüntülemek için aşağıdaki SQL deyimini çalıştırın:

    SHOW EVENTS;
    

    Aşağıdaki çıkış görüntülenir:

    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)
    
  5. Birkaç dakika sonra, yapılandırdığınız parametreye göre dakikada bir eklenen satırları görüntülemeye başlamak için tablodaki event_scheduler satırları sorgula:

    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)
    
  6. Bir saat sonra, tabloya eklenen değerlerin tam sonucunu bir saat event_scheduler boyunca görüntülemek için tabloda select deyimini çalıştırın.

    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)
    

Diğer senaryolar

Belirli senaryonuzun gereksinimlerine göre bir olay ayarlayabilirsiniz. SQL deyimlerini farklı zaman aralıklarında çalışacak şekilde zamanlamanın birkaç benzer örneği aşağıda verilmiştir.

Şimdi bir SQL deyimi çalıştırın ve sonu olmayan günde bir kez tekrarlayın

CREATE EVENT <event name>
ON SCHEDULE
EVERY 1 DAY
STARTS (TIMESTAMP(CURRENT_DATE) + INTERVAL 1 DAY + INTERVAL 1 HOUR)
COMMENT 'Comment'
DO
<your statement>;

Bitişi olmayan saatte bir SQL deyimi çalıştırma

CREATE EVENT <event name>
ON SCHEDULE
EVERY 1 HOUR
COMMENT 'Comment'
DO
<your statement>;

Her gün sonu olmayan bir SQL deyimi çalıştırma

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>;

Yapılandırılamayan sunucu parametreleri

Aşağıdaki sunucu parametreleri hizmette yapılandırılamaz:

Parametre Sabit değer
innodb_file_per_table temel katmanda KAPALI
innodb_flush_log_at_trx_commit 1
sync_binlog 1
innodb_log_file_size 256 MB
innodb_log_files_in_group 2

Burada listelenmeyen diğer değişkenler varsayılan MySQL değerlerine ayarlanır. 8.0, 5.7 ve 5.6 sürümleri için MySQL belgelerine bakın.

Sonraki adımlar