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-threads
güncelleştirinthread_handling
. Varsayılan olarak, bu parametre olarak one-thread-per-connection
ayarlanı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_bin
parametresi olarak ON
ayarlanı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_creators
TRUE
.
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_connect
bir 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_mode
OFF
ç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 ON
ayarlayın. Benzer şekilde, sunucu başlatma sırasında arabellek havuzu durumunu geri yüklemek için sunucu parametresini innodb_buffer_pool_load_at_startup
ON
olarak ayarlayın. Sunucu parametresinin innodb_buffer_pool_dump_pct
değerini düşürerek ve ince ayar yaparak başlatma veya yeniden başlatma üzerindeki etkiyi denetleyebilirsiniz. Varsayılan olarak, bu parametre olarak 25
ayarlanı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_seconds
yapılandırabilirsiniz. varsayılan değer olan değerini olarak ayarlarsanız binlog_expire_logs_seconds
0
, 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:
Azure portalında sunucunuza gidin ve Ayarlar altında Sunucu parametreleri'ni seçin.
Sunucu parametreleri dikey penceresinde, DEĞER açılan listesinde öğesini arayın
event_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.
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());
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)
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)
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
- Azure portalını kullanarak sunucu parametrelerini yapılandırmayı öğrenin
- Azure CLI kullanarak sunucu parametrelerini yapılandırmayı öğrenin
- PowerShell kullanarak sunucu parametrelerini yapılandırmayı öğrenin