Neden query_cache_type MySQL 5.6'dan başlatılıyor?


28

MySQL 5.6'ya yükselttik ve db sunucusunun yüklenmesinin önemli ölçüde arttığını görmeye başladık ve nihayet query_cache_type5.6'dan itibaren varsayılan olarak kapalı olduğunu öğrendim .

Yeniden etkinleştirdik ve yükleme azaldığını gördük, neden bu değer varsayılan olarak MySQL 5.6'dan başlatılıyor? Bu sorunu etkin olarak göremiyorum.

Yanıtlar:


39

Nedenini anlamak için InnoDB tarihçesine ihtiyacınız var. İşte gidiyor:

SAVAŞ HİKAYESİ

InnoDB ve sorgu önbelleği sürekli bir savaş durumundadır. InnoDB Tampon Havuzundaki değişiklikleri incelerken ve aynı değişiklikler için Sorgu Önbelleği'ni çapraz kontrol ederken InnoDB çok elle kullanılma eğilimindedir.

BARIŞ ANTLAŞMASI

MySQL 5.0'dan önce, sorgu önbelleği InnoDB için devre dışı bırakıldı. Şimdi, InnoDB onunla etkileşime giriyor. Konuları basitleştirmek için Query Cache'yi sadece query_cache_size değerini 0'a ayarlayarak devre dışı bırakabilirsiniz .

Query_cache_time hakkındaki MySQL Belgesine göre

Eğer sunucu 0 olarak ayarlanmış query_cache_type ile başlatılmışsa , sorgu önbellek muteksini hiç almaz, yani sorgu önbellek çalışma zamanında etkin olamaz ve sorgu çalıştırmada genel giderler azalır.

GÖNDERENİN KOŞULLARI

Query_cache_size ayarı değerini 0 olarak tek bedene uyan bir çözüm değildir.

Savaşın nedeni, ilk başta, genel gider. InnoDB her zaman değişiklikleri denetleyecektir. Daha büyük bir sorgu önbelleği InnoDB'nin bu kadar zor çalışmasına neden olur. Sorgu önbelleğini devre dışı bırakmak InnoDB ve Query Cache'yi mutlu edelim. Ancak, siz (Geliştirici / DBA), böyle bir barış anlaşması olsa bile, kötü sorgulama performansı ile bu savaşın zayiatı olabilirsiniz.

Aşağıdakilere bağlı olarak

  • İş yoğunluğu
  • Değişim Sıklığı
  • Aynı verileri okuma sıklığı

query_cache_size ayarını yapmalısınız değerini, performansın arttığını düşündüğünüz herhangi bir sayıya (Bu bir yeraltı hareketi başlatmak için eşittir).

SONSÖZ

Bu savaş hikayesini nereden bulduğumu merak ediyorsanız, lütfen eski yazıma bakın

Bunu dikkatlice okudum çünkü bunu Yüksek Performanslı MySQL'in (2. Baskı) 209-215. Sayfalarından öğrendim.

Sorgu önbelleğini daha önce başkalarına devre dışı bırakmanızı tavsiye ettim.

NOT: Sorunun query_cache_type ile ilgili olduğunu anladım . Sorgu önbelleği üzerinde bir etkisi yoktur. Önbelleğin devre dışı bırakılması InnoDB'nin üzerindeki hakimiyetini engelliyor. Query_cache_type öğesini elle ayarlamak, Geliştirici / DBA'yı sorgu önbelleğinin karşılaşacağı sorgu türlerini dikkatlice düşünmeye zorlar.


Merhaba, bütün bağlantılarını okudum. Aslında tekrar sorgu önbelleğini kapatmaya çalıştım ve yükleme artışını önemli ölçüde tekrar görüyoruz ... bu yüzden tekrar açmamız gerekiyor. Söylediklerinizin yanlış olduğunu söylemiyorum, belki de sadece uygulamamız yoğun okunur ve sorgu önbelleği yüklemeyi azaltmak için çok yararlıdır .. (sitemiz WordPress kullanıyor)
Yoga

3
Eğer sadece daha fazla SO mesajı bu şekilde okunursa (eğlence analojisi için teşekkürler)! Rolando'nun şanslı çocuklarına her gece MySQL yatmadan önce hikayeler anlatıldığına bahse girerim! ;)
rinogo 9:15

2
"Yüksek Performanslı MySQL Sayfa 209-215 (2. Baskı)", "Sorgu Önbelleği Yararlı Olduğunda" kısmına ve sonuna kadar, "MySQL Sorgu Önbelleği" adlı bir bölümü ifade eder. Bu, 3. Baskı'daki 320-329. Sayfalara tekabül eder.
Peter V. Mørch


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.