Tüm Ürünler
Search
Belge Merkezi

ApsaraDB RDS:ApsaraDB RDS for MySQL sorgu önbelleği özelliğini nasıl yapılandırır ve kullanırım?

Son Güncelleme:Oct 03, 2026

Sorgu önbelleği, SELECT deyimlerinin sonuç kümelerini bellekte saklar; böylece aynı sorgular ayrıştırma ve çalıştırma aşamalarını tamamen atlayarak sonucu doğrudan önbellekten döndürür. Bu yaklaşım CPU kullanımını azaltır, IOPS değerlerini düşürür ve verilerin sabit olduğu, okuma ağırlıklı ve yazma işlemlerinin az olduğu iş yüklerinde sorgu yanıt sürelerini kısaltır. Yüksek yazma hacmine sahip iş yükleri veya çeşitli sorgu kalıpları için önbellek geçersiz kılma ek yükü genel aktarım hızını azaltabilir; bu nedenle üretim ortamında etkinleştirmeden önce gerçek iş yükünüzle test etmeniz önerilir.

Sorgu önbelleğinin ne zaman kullanılacağı

Sorgu önbelleği, aşağıdaki koşulların tümü geçerli olduğunda en iyi performansı sunar:

  • Tablo verileri nadiren değişir veya statiktir.

  • Aynı SELECT deyimi tekrar tekrar çalıştırılır.

  • Sorgu sonuç kümeleri 1 MB'ın altındadır.

Önemli

Sorgu önbelleği her zaman yararlı değildir. Sık tablo yazma işlemi içeren veya çeşitli sorgular barındıran iş yüklerinde, önbelleğin geçersiz kılınması ve yeniden doldurulmasıyla oluşan ek yük genel aktarım hızını düşürebilir. Üretim ortamında etkinleştirmeden önce gerçek iş yükünüzle test edin.

Çalışma mantığı

  1. ApsaraDB RDS for MySQL, istemciden alınan her SELECT deyimi için bir karma değeri hesaplar.

  2. Karma değeri önbellekteki bir girişle eşleşirse sonuç anında döndürülür; sorgu hiçbir zaman ayrıştırılmaz veya çalıştırılmaz.

  3. Eşleşme bulunamazsa sorgu normal şekilde çalıştırılır ve karma değeri ile sonuç önbelleğe kaydedilir.

  4. Herhangi bir tabloda değişiklik olduğunda, o tabloya referans veren tüm önbelleğe alınmış sorgular anında geçersiz kılınır ve önbellekten kaldırılır.

Sınırlamalar

Aşağıdaki sorgular önbelleğe alınmaz:

  • Yalnızca harf büyüklüğü, boşluk, veritabanı bağlamı, protokol sürümü veya karakter kümesi açısından farklılık gösteren sorgular ayrı sorgular olarak kabul edilir ve ayrı ayrı önbelleğe alınır.

  • Alt sorgu sonuç kümeleri — yalnızca dıştaki sorgunun nihai sonuç kümesi önbelleğe alınır.

  • Depolanan bir işlev, depolanan yordam, tetikleyici veya olay içinde yürütülen sorgular.

  • Şu deterministik olmayan işlevlerden herhangi birini çağıran sorgular: now(), curdate(), last_insert_id() veya rand().

  • mysql, information_schema veya performance_schema veritabanındaki tablolara referans veren sorgular.

  • Geçici tablolara referans veren sorgular.

  • Uyarı üreten sorgular.

  • SELECT … LOCK IN SHARE MODE, SELECT … FOR UPDATE veya SELECT * FROM … WHERE AUTOINCREMENT_COL IS NULL içeren sorgular.

  • Kullanıcı tanımlı bir değişkene referans veren sorgular.

  • SQL_NO_CACHE ipucunu kullanan sorgular.

Sorgu önbelleğini yapılandırma

ApsaraDB RDS konsolu nda aşağıdaki üç parametreyi ayarlayın:

Parametre Varsayılan Açıklama
query_cache_type — Önbelleğin aktif olup olmadığını kontrol eder. 0 = kapalı; 1 = açık (SELECT SQL_NO_CACHE kullanan sorgular hariç); 2 = yalnızca talep üzerine (yalnızca SELECT SQL_CACHE sorguları önbelleğe alınır).
query_cache_size 3 MB Önbelleğe ayrılan toplam bellek miktarı (bayt cinsinden). 1024'ün katı olmalıdır.
query_cache_limit 1 MB Tek bir önbelleğe alınmış sorgu için maksimum sonuç kümesi boyutu (bayt cinsinden). Bu değerin üzerindeki sonuçlar önbelleğe alınmaz.

Sol gezinme bölmesinde Parameters seçeneğine tıklayın. Parametre listesinde query_cache_type parametresini bulun ve değerini hedef değere değiştirin. Değişiklik yalnızca örnek yeniden başlatıldıktan sonra etkili olur. Gerektiğinde query_cache_limit (geçerli değerler: 1 ila 1048576) ve query_cache_size (geçerli değerler: 0 ila 104857600) gibi ilgili parametreleri de değiştirebilirsiniz. Bir parametrenin açıklamasını görüntülemek için parametre yanındaki bilgi simgesine tıklayın.

Önemli

query_cache_type değerini değiştirmek, RDS örneğinin otomatik olarak yeniden başlatılmasına neden olur. query_cache_size değerini 1024'ün katı olmayan bir değere ayarlarsanız konsol The specified parameter is invalid hatasını döndürür ve hata kodu InvalidParameters.Malformed olur.

Önbelleği etkinleştirme ve devre dışı bırakma

query_cache_size > 0 ve query_cache_type değeri 1 veya 2 olduğunda önbellek etkin durumdadır.

query_cache_size = 0 veya query_cache_type = 0 olduğunda önbellek devre dışı bırakılmış olur.

Öneriler

  • query_cache_size değerini çok büyük ayarlamayın. Aşırı büyük bir önbellek, örneğin diğer bellek yapılarından bellek çalmanın yanı sıra önbellek aramalarının ek yükünü de artırır. Örnek türünüze göre 10 MB ile 100 MB arasında bir değerle başlayın, ardından gözlemlenen kullanıma göre ayarlayın.

  • Sorgu önbelleğini açıp kapatmak için query_cache_type yerine query_cache_size değerini ayarlayın; çünkü query_cache_type üzerindeki değişiklikler yalnızca örnek yeniden başlatıldıktan sonra etkili olur.

  • Sorgu önbelleği yalnızca belirli iş yüklerine fayda sağlar. Performans düşüşü veya diğer sorunları önlemek için etkinleştirmeden önce gerçek iş yükünüzle kapsamlı testler yapın.

Önbellek performansını izleme ve doğrulama

Önbellek istatistiklerini kontrol etme

Önbellek kullanımını kontrol etmek için aşağıdaki deyimi çalıştırın:

SHOW GLOBAL STATUS LIKE 'Qcache%';

Çıktı şu durum değişkenlerini içerir:

Değişken Açıklama
Qcache_hits Önbellekten sunulan sorgu sayısı
Qcache_inserts Önbelleğe eklenen sorgu sayısı
Qcache_not_cached Önbelleğe alınamayan sorgu sayısı
Qcache_queries_in_cache Şu anda önbellekte bulunan sorgu sayısı

Örnek çıktı:

mysql>show global status like 'Qca%';
+-------------------------+------------+
| Variable_name           | Value      |
+-------------------------+------------+
| Qcache_free_blocks      | 2763       |
| Qcache_free_memory      | 10115160   |
| Qcache_hits             | 365589713  |
| Qcache_inserts          | 612280336  |
| Qcache_lowmem_prunes    | 1257159    |
| Qcache_not_cached       | 1805250864 |
| Qcache_queries_in_cache | 9318       |
| Qcache_total_blocks     | 22409      |
+-------------------------+------------+

ApsaraDB RDS konsolunu kullanarak doğrulama

Sol gezinme bölmesinde Autonomy Service (formerly CloudDBA) > Performance Trends seçeneğini belirleyin. MySQL CPU/Memory Utilization grafiğini görüntüleyin ve hem CPU kullanımının hem de bellek kullanımının normal aralıkta kaldığını doğrulayın.