MySQL'deki loglar arasında hata logları, ikili kayıtlar, genel sorgu günlükleri, yavaş sorgu günlükleri vb. bulunur. İşte yaygın olarak kullanılan iki fonksiyon vardır: genel sorgu günlüğü ve yavaş sorgu günlüğü.
1) Sorgu kayıtlarını yavaşlat:long_query_time saniyeden fazla yürütülen veya indeks kullanmayan tüm sorguları kaydedin
2) Genel sorgu günlüğü:Kurulan ve yürütülen müşteri bağlantılarını kaydedin.
1: MySQL yavaş sorgulama hakkında:
MySQL'in yavaş sorgu günlüğü, MySQL tarafından sağlanan bir tür günlük olup, MySQL'deki yanıt süresinin eşiği aştığını belirtmek için kullanılır; özellikle long_query_time değerden fazla çalışma süresine sahip SQL için kullanılır ve bu işlem yavaş sorgu günlüğüne kaydedilir (loglar dosyalara veya veritabanı tablolarına yazılabilir, performans gereksinimleri yüksekse dosya yazılması önerilir). Varsayılan olarak, MySQL veritabanı yavaş sorgu günlüklerini etkinleştirmez ve long_query_time'nin varsayılan değeri 10'dur (yani 10 saniye, genellikle 1 saniye olarak ayarlanır), yani 10 saniyeden uzun çalışan ifadeler yavaş sorgu ifadeleridir.
Genel olarak, yavaş sorgular büyük tablolarda gerçekleşir (örneğin, bir tabloda milyonlarca veri bulunur) ve sorgu koşullarının alanları indekslenmez; bu sırada, sorgu koşullarına uyacak alanlar tüm tabloda taranır ve bu da long_query_time kontrol etmek zaman alır.
Yavaş bir sorgu ifadesidir.
Soru: Yavaş sorgu günlüğünün mevcut açılma durumunu nasıl kontrol edebilirim?
MySQL'de komutu girin:
Aşağıdaki parametreler ağırlıklı olarak ele alınır:
(1) Yavaş sorgu günlüğünü açmak için slow_query_log değeri AÇIK, KAPALı ise yavaş sorgu günlüğünü kapatmak içindir.
(2) slow_query_log_file'nin değeri, dosyaya kaydedilen yavaş sorgu günlüğüdür (not: varsayılan adı hostname.log, yavaş sorgu günlüğü belirtilen dosyaya yazılıp yazmadığında, yavaş sorgu çıkış logu formatını dosya olarak belirtmeniz gerekir ve ilgili komut şudur: '%log_output%' gibi değişkenleri göster; çıktının formatını görmek için).
(3) long_query_time, yavaş sorgu için eşik sınırını belirler; yani, yürütme süresi bu eşiği aşarsa, yavaş sorgu ifadesi olur ve varsayılan değer 10 saniyedir.
(4) log_queries_not_using_indexes Değer ON'a ayarlanırsa, indeks kullanılmayan tüm sorgular kaydedilir (Not: Eğer log_queries_not_using_indexes sadece ON, slow_query_log OFF olarak ayarlanmışsa, bu zaman ayar geçerli olmaz; yani, slow_query_log'ın değeri ON'a ayarlandığında ayar geçerli) , bu genellikle performans ayarlandığında geçici olarak açılır.
2. Genel sorgu kaydı
Eğer general_log'nin değeri iseON açık, içinKAPALı(Varsayılan olarak kapalı).
Mevcut yavaş sorgu günlüğü çıktısının formatını kontrol edin; bu FILE (dijital veritabanında bir veri dosyasında saklanan hostname.log) veya TABLE (mysql.general_log veritabanında saklanabilir) olabilir
(Not: Yukarıdaki komut yalnızca şu anda MySQL yeniden başlatmaları geçersiz olduğunda geçerlidir; kalıcı olarak etki göstermesini istiyorsanız my.cnf yapılandırmanız gerekir)
Log çıktısının render şekli şöyledir:
my.cnf dosyası şu şekilde yapılandırılmıştır:
general_log=1 #为1表示开启通用日志查询, 0 değeri genel log sorgusunun kapalı olduğunu gösterir
log_output=FILE,TABLE# Genel günlüğün çıktı formatını dosya ve tablo olarak ayarlar
|