Önbellek İsabetleri Hakkında

Önbelleğe alma etkinleştirildiğinde her sorgu, önbellek isabetine uygun olup olmadığını belirlemek için değerlendirilir.

Önbellek isabeti, Oracle Analitik Bulutu'nun sorguyu yanıtlamak için önbelleği kullanabildiği ve veritabanına hiç gitmediği anlamına gelir. Oracle Analitik Bulutu, aynı veya daha yüksek birleştirme düzeyinde sorguları yanıtlamak için sorgu önbelleğini kullanabilir.

Önbelleğin isabetli olup olmadığını belirleyen birçok faktör vardır. Aşağıdaki tabloda bu faktörler açıklanır.

Faktör veya Kural Açıklama

SELECT listesindeki sütunların bir alt kümesi eşleşmelidir

Yeni bir sorgunun SELECT listesindeki tüm sütunların, önbellek isabetine uygun olmaları için önbelleğe alınan sorguda mevcut olmaları veya sorgudaki sütunlardan hesaplanabilmeleri gerekir.

Bu kural minimum önbelleğe isabet etme gereksinimini karşılar, ancak bu kuralın karşılanması önbellek isabetini garanti etmez. Bu tabloda listelenen diğer kurallar da geçerlidir.

SELECT listesindeki sütunlar, önbelleğe alınan sorguların sütunlarındaki ifadelerden oluşabilir

Oracle Analitik Bulutu yeni sorguyu yanıtlamak için önbelleğe alınan sonuçlardaki ifadeleri hesaplayabilir, ancak tüm sütunların önbelleğe alınan sonuçta olması gerekir. Örneğin, şu sorgu:

SELECT product, month, averageprice FROM sales WHERE year = 2000

şu sorgudaki önbelleğe isabet eder:

SELECT product, month, dollars, unitsales FROM sales WHERE year = 2000

çünkü averageprice değeri, dollars ve unitsales değerinden hesaplanabilir (averageprice = dollars/unitsales).

WHERE yantümcesi anlamsal olarak aynı veya mantıksal bir alt küme olmalıdır

Sorgunun önbellek isabeti olması için WHERE yantümcesi kısıtlamalarının önbelleğe alınan sonuçlarla eşdeğer olması veya önbelleğe alınan sonuçların bir alt kümesi olması gerekir.

Önbelleğe alınan bir sorgunun mantıksal alt kümesi olan bir WHERE yantümcesi, alt kümenin şu koşullardan birini karşılaması durumunda önbellek isabeti için uygundur:

  • IN listesi değerlerinin bir alt kümesi. Bir IN listesi önbelleğe alınan sorgusunun daha az sayıda öğesini isteyen sorgular önbelleği isabeti için uygundur. Örneğin aşağıdaki sorgu:

    SELECT employeename, region
    FROM employee, geography
    WHERE region in ('EAST', 'WEST')

    şu önbelleğe alınan sorguda isabet olarak uygundur:

    SELECT employeename, region
    FROM employee, geography
    WHERE region in ('NORTH', 'SOUTH', 'EAST', 'WEST')
  • Önbelleğe alınan sonuçtan daha az (ama eşit) OR kısıtlaması içerir.

  • Sabit değer karşılaştırmasının mantıksal bir alt kümesini içerir. Örneğin aşağıdaki ön koşul:

    WHERE revenue < 1000

    şu ön koşula sahip bir karşılaştırılabilir sorguda önbellek isabeti olarak uygundur:

    WHERE revenue < 5000
  • WHERE yantümcesi yok. Bir sorguda hiçbir WHERE yantümcesi önbelleğe alınmazsa, tüm diğer önbellek isabeti kurallarını karşılayan sorgular, WHERE yantümcelerine bakılmaksızın önbellek isabeti olarak uygundur.

Ayrıca, WHERE yantümcesinde kullanılan sütunların projeksiyon listesinde olmaları gerekir. Örneğin aşağıdaki sorgu:

SELECT employeename
FROM employee, geography
WHERE region in ('EAST', 'WEST')

REGION projeksiyon listesinde olmadığından önceki listedeki temel verili hale getirme sorgusu için önbellek isabeti ile sonuçlanmaz.

Sadece boyut sorguları tam eşleşme olmalıdır

Bir sorgu sadece boyutsa (yani sorguda olgu veya ölçü yoksa) sadece önbelleğe alınan sorgunun tam eşleşen projeksiyon sütunları önbelleğe isabet eder. Bu davranış, bir boyut tablosu için birden çok mantıksal kaynak olduğunda hatalı pozitifleri önler.

Özel fonksiyonlar içeren sorgular tam eşleşme olmalıdır

Zaman serisi fonksiyonları (AGO, TODATE ve PERIODROLLING), sınır ve öteleme fonksiyonları (OFFSET ve FETCH), ilişki fonksiyonları (ISANCESTOR, ISLEAF, ISROOT ve ISSIBLING), harici birleştirme sorguları gibi özel fonksiyonlar içeren diğer sorgular ve genellikle filtre metrikleri de önbelleğe alınan sorgudaki projeksiyon sütunları ile tam eşleşme olmalıdır. Bu durumlarda filtre de tam eşleşme olmalıdır. Filtre metriklerinde, filtre metriği bir WHERE yantümcesi olarak yeniden yazılabiliyorsa alt küme önbelleğinden yararlanılabilir.

Mantıksal tablo grubu eşleşmelidir

Önbellek isabeti olarak uygun olması için tüm gelen sorguların önbellek girişiyle aynı mantıksal tablo grubunu içermesi gerekir. Bu kural, yanlış önbellek isabetlerini önler. Örneğin, SELECT * FROM product ile SELECT * FROM product, sales eşleşmez.

Oturum değişkeni değerleri eşleşmelidir (güvenlik oturum değişkenleri dahil)

Mantıksal SQL veya fiziksel SQL komutu bir oturum değişkenini referans gösteriyorsa, oturum değişkeni değerleri eşleşmelidir. Aksi takdirde önbelleğe isabet edilmez.

Ayrıca, mantıksal SQL komutunun kendisi oturum değişkenlerini referans göstermese de, güvenliğe duyarlı olan oturum değişkenlerinin değeri, semantik modelinde tanımlı güvenlik oturum değişkeni değerleriyle eşleşmelidir. Satır Düzeyi Veritabanı Güvenliği Kullanırken Doğru Veritabanı Sonuçları Sağlama konusuna bakın.

Eşdeğer birleştirme koşulları

Yeni bir sorgu isteğinin ortaya çıkan birleştirilmiş mantıksal tablosu, önbellek isabetine uygun olması için önbelleğe alınan sonuçlarla aynı (veya sonuçların alt kümesi) olmalıdır.

DISTINCT özelliği aynı olmalıdır

Önbelleğe alınan bir sorgu DISTINCT işlemi ile (örneğin, SELECT DISTINCT...) tekrarlanan kayıtları ortadan kaldırırsa, önbelleğe alınan sütunlara yönelik istekler de DISTINCT işlemini içermelidir. DISTINCT içermeyen aynı sütuna yönelik bir istek önbellek sapmasıdır.

Sorgular uyumlu birleştirme düzeyleri içermelidir

Birleştirilmiş bir bilgi düzeyi isteyen sorgular, önbelleğe alınan sonuçları daha düşük bir birleştirme düzeyinde kullanabilir. Örneğin şu sorgu; tedarikçi, bölge ve şehir düzeyinde satılan miktarı ister:

SELECT supplier, region, city, qtysold
FROM suppliercity

Şu sorgu, şehir düzeyinde satılan miktarı ister:

SELECT city, qtysold
FROM suppliercity

İkinci sorgu, ilk sorguda önbellek isabetiyle sonuçlanır.

Sınırlı ek birleştirme

Örneğin, qtysold sütununu içeren bir sorgu önbelleğe alınırsa, RANK(qtysold) için yapılan bir istek önbellek sapmasıyla sonuçlanır. Ayrıca, ülke düzeyinde qtysold isteyen bir sorgu, ülke ve bölge düzeyinde qtysold isteyen bir sorgudan önbellek isabeti alabilir.

ORDER BY yantümcesi, select listesindeki sütunlardan oluşmalıdır

Select listesinde yer almayan sütunlara göre sıralama yapan sorgular önbellek sapmasıyla sonuçlanır.

Önbellek isabeti davranışına tanı koyma

Önbellek isabeti davranışını daha iyi değerlendirmek için aşağıdaki örnekte gösterildiği gibi ENABLE_CACHE_DIAGNOSTICS oturum değişkenini 4 olarak ayarlayın:

ENABLE_CACHE_DIAGNOSTICS=4