Açık kaynak Çin OSC başlık numarasını takip edin ve en son teknik bilgileri alın
MySQL'deki günlükler şunları içerir: hata günlüğü, ikili günlük, genel sorgu günlüğü, yavaş sorgu günlüğü vb. İşte daha sık kullanılan iki işlev: genel sorgu günlüğü ve yavaş sorgu günlüğü.
1) Genel sorgu günlüğü: kurulan istemci bağlantısını ve yürütülen ifadeleri kaydedin.
2) Yavaş sorgu günlüğü: Yürütme süresi uzun sorgu süresi saniyelerini geçen tüm sorguları veya dizin kullanmayan sorguları kaydeder
(1) Genel sorgu günlüğü
Genel günlük sorgusunu öğrenirken, iki veritabanında yaygın olarak kullanılan komutları bilmeniz gerekir:
1) "% general%" gibi değişkenleri gösterin;
Geçerli genel günlük sorgusunun açık olup olmadığını, general_log değerinin AÇIK olup olmadığını, açık olup olmadığını ve KAPALI ise kapalı olup olmadığını kontrol edebilirsiniz (varsayılan olarak kapalıdır).
1) "% log_output%" gibi değişkenleri gösterin;
DOSYA (veritabanının veri dosyasında depolanan hostname.log) veya TABLE (veritabanında depolanan mysql.general_log) olabilen mevcut yavaş sorgu günlüğü çıktı biçimini görüntüleyin
Soru: MySQL genel sorgu günlüğü nasıl etkinleştirilir ve genel günlük çıktı biçimi çıktı olarak nasıl ayarlanır?
Genel günlük sorgusunu açın: global general_log = açık olarak ayarlayın;
Genel günlük sorgusunu kapat: global general_log = off;
Genel günlük çıktısını tablo moduna ayarlayın: global log_output = 'TABLE ;
Genel günlük çıktısını dosya moduna ayarlayın: global log_output = 'FILE ;
Genel günlük çıktısını tablo ve dosya moduna ayarlayın: global log_output = 'FILE, TABLE ;
(Not: Yukarıdaki komut yalnızca geçerli zaman için etkilidir. MySQL yeniden başladığında ve başarısız olduğunda, kalıcı olarak etkili olmak istiyorsanız, my.cnf'yi yapılandırmanız gerekir)
My.cnf dosyasının yapılandırması aşağıdaki gibidir:
general_log = 1 # 1, genel günlük sorgusunu aç, 0 değeri genel günlük sorgusunun kapatılması anlamına gelir
log_output = FILE, TABLE # Genel günlüğün çıktı biçimini dosya ve tabloya ayarlayın
(2) Yavaş sorgu günlüğü
MySQL'in yavaş sorgu günlüğü, MySQL tarafından sağlanan bir günlük kaydıdır. Yanıt süresi MySQL'deki eşiği aşan ifadeleri kaydetmek için kullanılır. Özellikle, çalışma süresi long_query_time değerini aşan SQL, yavaş sorgu günlüğüne kaydedilir (günlük yazılabilir) Dosyaları veya veritabanı tablolarını içe aktarın, yüksek performans gereksinimleriniz varsa, dosyalar yazmanız önerilir). Varsayılan olarak, MySQL veritabanı yavaş sorgu günlüğünü etkinleştirmez. Long_query_time'ın varsayılan değeri 10'dur (yani, 10 saniye, genellikle 1 saniyeye ayarlanır), yani 10 saniyeden fazla çalışan ifadeler yavaş sorgu ifadeleridir.
Genel olarak, büyük tablolarda yavaş sorgular meydana gelir (örneğin, bir tablodaki veri miktarı birkaç milyondur) ve sorgu koşullarının alanları dizine alınmaz. Şu anda, sorgu koşullarıyla eşleşmesi gereken alanlar tam bir tablo taraması gerçekleştirecek ve bu da zaman alıcıdır Long_query_time kontrol edildi,
Yavaş bir sorgu ifadesidir.
Soru: Yavaş sorgu günlüğünün mevcut durumu nasıl kontrol edilir?
MySQL'de komutu girin:
"% quer%" gibi değişkenleri gösterin;
Esas olarak aşağıdaki parametrelerde ustalaşın:
(1) slow_query_log Değer, yavaş sorgu günlüğünü açmak için AÇIK ve yavaş sorgu günlüğünü kapatmak için KAPALI'dır.
(2) slow_query_log_file Değer, dosyaya kaydedilen yavaş sorgu günlüğüdür ( Not: Varsayılan ad hostname.log'dur. Yavaş sorgu günlüğü belirtilen dosyaya yazılsa da, yavaş sorgunun çıktı günlük biçimini bir dosya olarak belirtmeniz gerekir. İlgili komut şudur: '% log_output%' gibi değişkenleri göster; çıktı biçimini kontrol etmek için).
(3) long_query_time Yavaş sorgu eşiği belirtilir, yani ifadenin yürütme süresi eşiği aşarsa, bu yavaş bir sorgu ifadesidir ve varsayılan değer 10 saniyedir.
(4) log_queries_not_using_indexes Değer AÇIK olarak ayarlanmışsa, dizini kullanmayan tüm sorgular kaydedilir ( Not: Yalnızca log_queries_not_using_indexes öğesi AÇIK olarak ve slow_query_log öğesi KAPALI olarak ayarlanmışsa, ayar şu anda etkili olmayacaktır, yani ayarın etkili olmasının nedeni, slow_query_log değerinin AÇIK olarak ayarlanmasıdır) ve performans ayarlaması sırasında geçici olarak açılacaktır.
Soru: MySQL yavaş sorgusunun çıktı günlük formatını dosya veya tabloya mı yoksa her ikisine birden mi ayarlayın?
Komut aracılığıyla: "% log_output%" gibi değişkenleri gösterin;
Çıktı formatı log_output değeri ile görüntülenebilir, yukarıdaki değer TABLO'dur. Elbette çıktı formatını metin olarak da ayarlayabiliriz veya hem metin hem de veritabanı tablolarını aynı anda kaydedebiliriz.Küme komutları aşağıdaki gibidir:
Tabloya #Slow sorgu günlüğü çıktısı (yani mysql.slow_log)
globallog_output = TABLE olarak ayarlayın;
# Yavaş sorgu günlüğü yalnızca metne verilir (yani: slow_query_log_file tarafından belirtilen dosya)
setglobal log_output = 'DOSYA';
# Yavaş sorgu günlüğü hem metne hem de tabloya verilir
setglobal log_output = 'DOSYA, TABLO';
Yavaş sorgu günlüğü tablosundaki verilerin veri biçimi analizi hakkında:
Myql.slow_log tablosundaki yavaş sorgu günlüğü kayıtları aşağıdaki biçime sahiptir:
Yavaş sorgu günlüğü, hostname.log dosyasına aşağıdaki biçimde kaydedilir:
İster tablo ister dosya olsun, özellikle kaydedildiği görülebilir: hangi ifade yavaş sorguya (sql_text), yavaş sorgu ifadesinin sorgu zamanına (sorgu_süresi), kilit tablo süresi (Lock_time) ve taranan satırların sayısına neden olmuştur. (Rows_examined) ve diğer bilgiler.
Soru: Geçerli sayıda yavaş sorgu ifadesi nasıl sorgulanır?
MySQL'de mevcut yavaş sorgu ifadelerinin sayısını kaydeden bir değişken vardır:
Komutu girin: "% slow%" gibi global durumu gösterin;
( Not: Yukarıdaki tüm komutlar için, parametreler MySQL kabuğundan ayarlanırsa, MySQL'i yeniden başlatırsanız, ayarlanan tüm parametreler geçersiz olacaktır. Kalıcı olarak etkili olmak istiyorsanız, yapılandırma parametrelerini my.cnf dosyasına yazmanız gerekir).
Tamamlayıcı bilgi noktaları: Günlükleri analiz etmek için MySQL'in kendi yavaş sorgu günlüğü analiz aracı mysqldumpslow nasıl kullanılır?
perlmysqldumpslow s c t 10 yavaş-query.log
Spesifik parametre ayarları aşağıdaki gibidir:
-s, sıralama yöntemini belirtir, c, t, l, r sırasıyla kayıt sayısına, zamana, sorgu zamanına göre sıralanır ve döndürülen kayıtlar, sırasıyla ac, at, al, ar, karşılık gelen geri dönüşleri gösterir;
-t top'un anlamını temsil eder ve aşağıdaki veriler öncekilerden kaçının döndürüldüğünü gösterir;
Normal ifade eşlemesi -g'den sonra yazılabilir ve büyük / küçük harfe duyarlı değildir.
Yukarıdaki parametrelerin anlamları aşağıdaki gibidir:
Sayı: 414 Cümle 414 kez çıktı;
Zaman = 3,51s (1454) En uzun yürütme süresi 3,51sn ve harcanan toplam süre 1454sn;
Kilit = 0,0 sn (0) Kilit için maksimum bekleme süresi 0 sn, kilit için toplam bekleme süresi ise 0 sn;
Satır = 2194,9 (9097604) İstemciye gönderilen maksimum satır sayısı 2194,9 ve istemciye gönderilen kümülatif işlev 90976404
( Not: Mysqldumpslow betiği perl dilinde yazılmıştır, mysqldumpslow'un özel kullanımı daha sonra tartışılacaktır)
sorun: Gerçek öğrenme sürecinde, yavaş sorgu kümesinin etkili olduğunu nasıl anlarsınız?
Çok basit, manuel olarak yavaş bir sorgu ifadesi oluşturabiliriz.Örneğin, yavaş sorgumuz log_query_time 1'e ayarlanmışsa, aşağıdaki ifadeyi çalıştırabiliriz:
uykuyu seçer (1);
Bu ifade yavaş bir sorgu ifadesidir.Bundan sonra, ilgili günlük çıktı dosyasında veya tabloda bu ifadenin olup olmadığını kontrol edebilirsiniz.
Blog yazarı: Framework Gold Digger
Günlük blog sütunu, her gün sizin için mükemmel blog yazarlarından yüksek kaliteli teknik makaleler önerir. Aynı zamanda, kullanıcılar katkıda bulunabilirler.Makale resmi hesaba dahil edildikten sonra, web sitesinin ana sayfasında önereceğiz. Dikkat Açık kaynak Çin OSC Her gün yüksek kaliteli itin, tıklayın " daha fazlasını anla "Orijinal makaleyi okuyun.