Anasayfa » nasıl » MySQL Query Önbelleğe Alma ile Web Sitenizi Hızlandırın

    MySQL Query Önbelleğe Alma ile Web Sitenizi Hızlandırın

    Web uygulamanızı hızlandırmanın en iyi yollarından biri, veritabanında sorgu önbelleğe almayı etkinleştirmektir; bu, aynı isteği yapan bir sonraki sayfa tarafından hemen kullanılan anında erişim için SQL sorgularını bellekte önbelleğe alır..

    Bu yöntemin bu kadar güçlü olmasının nedeni, web uygulamanızda herhangi bir değişiklik yapmak zorunda olmamanız, sadece biraz hafızayı feda etmeniz gerekiyor. Bu, tüm sorunlarınızı çözmeyecek, ancak kesinlikle zarar veremez.

    Not: Uygulamanız tabloları sık sık güncellerse, sorgu önbelleği sürekli temizlenir ve bundan çok fazla fayda alamazsınız. Bu, WordPress blogu gibi veritabanına çoğunlukla okuyan bir uygulama için idealdir. Paylaşılan barındırmada çalışıyorsanız bu da işe yaramaz.

    Sunucu Çalışırken Önbelleğe Almayı Etkinleştirme

    Yapmak isteyeceğiniz ilk şey, MySQL kurulumunuzun gerçekten sorgu önbellekleme desteğine sahip olduğundan emin olmak. Çoğu dağıtım yapar, ancak yine de kontrol etmelisiniz.

    Bu komutu MySQL konsolunuzdan çalıştırmak isteyeceksiniz, bu da sorgu önbelleğe alma işleminin mümkün olup olmadığını size söyleyecektir..

    mysql> 'have_query_cache' gibi değişkenleri göster; + ------------------ + ------- + | Değişken_adı | Değer | + ------------------ + ------- + | have_query_cache | EVET | +------------------+-------+ 

    Bunu, sorgu önbelleğe almanın aslında etkin olduğu anlamına gelmez, çünkü çoğu barındırma sağlayıcısı bunu varsayılan olarak etkinleştirmez. İşin tuhafı, Ubuntu Feisty kurulumum zaten etkinleştirilmiş…

    Daha sonra sorgu önbelleğe almanın etkin olup olmadığını kontrol etmemiz gerekir. Birden fazla değişkeni kontrol etmemiz gerekeceğinden, değişken sorgusu% 'sini kontrol ederek hepsini bir kerede yapabiliriz

    mysql> 'query%' gibi değişkenler göster; + -------------------------------- + --------- + | Değişken_adı | Değer | + -------------------------------- + --------- + | query_alloc_block_size | 8192 | | query_cache_limit | 1048576 | | query_cache_min_res_unit | 4096 | | query_cache_size | 8388608 | | query_cache_type | AÇIK | | query_cache_wlock_invalidate | KAPALI | | query_prealloc_size | 8192 | +------------------------------+---------+ 

    İşte listedeki önemli öğeler ve ne anlama geldikleri:

    • query_cache_size - Bu, önbellekteki bayt cinsinden boyuttur. Bu değerin 0 olarak ayarlanması önbelleğe almayı etkin bir şekilde devre dışı bırakacaktır.
    • query_cache_type - Sorgu önbelleğe almanın varsayılan olarak etkin olması için bu değerin AÇIK veya 1 olması gerekir..
    • query_cache_limit - Bu, önbelleğe alınacak maksimum boyut sorgusu (bayt cinsinden).

    Query_cache_size değeri 0 olarak ayarlanmışsa veya sadece değiştirmek istiyorsanız, değerin bayt cinsinden olduğunu aklınızda tutarak aşağıdaki komutu çalıştırmanız gerekir. Örneğin, önbelleğe 8 MB tahsis etmek istiyorsanız, değer olarak 1024 * 1024 * 8 = 8388608 kullanırdık.

    SET GLOBAL query_cache_size = 8388608;

    Benzer şekilde, diğer seçenekler aynı sözdizimi ile ayarlanabilir:

    SET GLOBAL query_cache_limit = 1048576;
    KÜRESEL SET query_cache_type = 1;

    Şimdi gerçekten işe yarayıp yaramadığını nasıl anlarız? Kaputun altında neler olup bittiğini görmek için “Qc” ile başlayan tüm değişkenleri çekmek için SHOW STATUS komutunu kullanabilirsiniz..

    mysql> SHOW DURUM GİBİ 'Qc%'; + ------------------------- + -------- + | Değişken_adı | Değer | + ------------------------- + -------- + | Qcache_free_blocks | 65 | | Qcache_free_memory | 201440 | | Qcache_hits | 18868 | | Qcache_inserts | 2940 | | Qcache_lowmem_prunes | 665 | | Qcache_not_cached | 246 | | Qcache_queries_in_cache | 492 | | Qcache_total_blocks | 1430 | + -------------------------- 

    İstatistiklerinizde bol miktarda boş hafıza kaldığını fark edeceksiniz. Sunucunuz çok sayıda düşük bellek erik gösteriyorsa, bu değeri artırmayı düşünmeniz gerekebilir, ancak bir web sunucusu için sorgu önbelleğe almak için çok fazla bellek harcamam gerekir… bellek, apache, php, ruby ​​veya ne kullanıyorsan kullan.

    Yapılandırma Dosyasında Etkinleştir

    Bu değişikliklerin yeniden başlatılmasını sağlamak veya mysql sunucusunu yeniden başlatmak istiyorsanız, bunları MySQL için /etc/mysql/my.cnf yapılandırma dosyasına eklemeniz gerekir. Kurulumunuzda farklı bir konumda olabileceğini unutmayın..

    Dosyayı sudo veya root modunda bir metin editörü kullanarak açın ve daha önce dosyada mevcut değilse bu değerleri ekleyin. Varsa, sadece onları rahatsız etmek.

    query_cache_size = 268435456 query_cache_type = 1 query_cache_limit = 1048576

    Sorgu önbelleğe alma, özellikle uygulamanız çoğunlukla okuyorsa web uygulamanızın hızını önemli ölçüde artırabilir. Yukarıdaki yöntemleri kullanarak durumu izleyin ve zaman içinde nasıl çalıştığını görün.