Oracle Analitik Bulutu, sorgu önbelleğindeki sorgu sonucu kümelerinin yerel bir önbelleğini saklar.
Konular:
Sorgu önbelleği, Oracle Analitik Bulutu'nun arka uç veri kaynaklarına erişmeden birçok sonraki sorgu isteğini karşılamasını sağlar ve bu sorgu performansını artırır. Ancak, sorgu önbelleği girişleri, arka uç veri kaynaklarında güncellemeler yapıldıkça eskiyebilir.
Bir sorguyu işlemenin en hızlı yolu, işlemenin büyük kısmını atlamak ve önceden hesaplanmış bir cevap kullanmaktır.
Oracle Analitik Bulutu, sorgu önbelleğe alma ile sorguların önceden hesaplanmış sonuçlarını yerel bir önbellekte saklar. Bu sonuçları başka bir sorgu kullanıyorsa, bu sorgudaki tüm veritabanı işlemleri ortadan kaldırılır. Bu, ortalama sorgu yanıt süresini ciddi oranda iyileştirebilir.
Performansı iyileştirmenin yanı sıra, yerel bir önbellekten gelen bir sorguyu yanıtlayabilmek, veritabanı sunucusundaki ağ kaynaklarını ve işlem süresini korur. Ara sonuçlar Oracle Analitik Bulutu'na döndürülmediğinden ağ kaynakları korunur. Sorguyu veritabanında çalıştırmamak, veritabanı sunucusunu başka işler yapması için serbest bırakır. Veritabanı bir geri ödeme sistemi kullanıyorsa, daha az sorgu çalıştırmak da bütçedeki maliyetleri azaltabilir.
Bir sorguyu yanıtlamak için önbelleği kullanmanın bir başka avantajı, Oracle Analitik Bulutu'nda işlem süresindeki tasarruftur (özellikle sorgu sonuçları birden çok veritabanından alınmışsa). Sorguya bağlı olarak, sunucuda önemli ölçüde birleştirme ve sıralama işlemi olabilir. Sorgu önceden hesaplanmışsa bu işlem önlenir ve sunucu kaynaklarını diğer görevler için serbest bırakır.
Özetlemek gerekirse; sorgu önbelleğe alma, sorgu performansını önemli ölçüde artırabilir ve ağ trafiğini, veritabanı işleme ve işleme ek yükünü azaltabilir.
Sorgu önbelleğe almanın birçok avantajla birlikte belirli maliyetleri de vardır.
Önbelleğe alınan sonuçların eski olma potansiyeli
Önbelleği yönetmek için idari maliyetler
Önbellek yönetimi ile avantajlar genellikle maliyetlerden çok daha üstündür.
Bazı yönetim görevleri, önbelleğe alma ile ilişkilidir. Her fiziksel tablo için tablonun ne sıklıkla güncellendiğini bilerek önbellekte tutma süresini ayarlamanız gerekir.
Güncelleme sıklığı değişiklik gösterdiğinde, değişikliklerin gerçekleşme zamanını takip etmeniz ve gerektiğinde önbelleği manuel olarak temizlemeniz gerekir.
Temel veritabanlarındaki veriler değiştiğinde önbellek girişleri temizlenmezse, sorgular potansiyel olarak güncel olmayan sonuçlar döndürebilir.
Bunun kabul edilebilir olup olmadığını değerlendirmeniz gerekir. Önbelleğin bazı eski veriler içermesine izin vermek kabul edilebilir. Hangi eski veri düzeyinin kabul edilebilir olduğuna karar vermeniz ve ardından bu düzeyleri yansıtacak bir dizi kuralı konfigüre etmeniz (ve uygulamanız) gerekir.
Örneğin, bir uygulamanın büyük bir holdingden gelen kurumsal verileri analiz ettiğini ve şirketteki farklı bölümlerin yıllık özetlerini gerçekleştirdiğinizi varsayın. Yeni veriler, sorguları bariz bir şekilde etkilemez; çünkü yeni veriler sadece gelecek yılın özetlerini etkiler. Bu durumda, önbelleği temizleyip temizlememeye kararının sonuçları, girişleri önbellekte bırakmayı tercih edebilir.
Ancak, veritabanlarının günde üç kez güncellendiğini ve bugünün etkinlikleri hakkında sorgular yaptığınızı varsayın. Bu durumda önbelleği çok daha sık temizlemelisiniz veya belki de önbelleği hiç kullanmamayı düşünmelisiniz.
Diğer bir senaryo da, veri kümesini periyodik aralıklarla (örneğin haftada bir) baştan yeniden oluşturmanızdır. Bu örnekte, veri kümesini yeniden oluşturma sürecinin bir parçası olarak tüm önbelleği temizleyebilir ve önbellekte hiçbir zaman eski verilerin bulunmamasını sağlayabilirsiniz.
Durumunuz ne olursa olsun, kullanıcılara döndürülen güncel olmayan bilgiler için nelerin kabul edilebilir olduğunu değerlendirmelisiniz.
Belirli bir bağlantı havuzu için paylaşımlı oturum açma etkinleştirilirse, önbellek kullanıcılar arasında paylaşılabilir ve her kullanıcı için önbelleğin temel verili hale getirilmesi gerekmez.
Paylaşımlı oturum açma etkinleştirilmezse ve kullanıcıya özel bir veritabanı girişi kullanılırsa, her kullanıcı kendi önbellek girişini oluşturur.
Oracle Analitik Bulutu'nda sorgu önbelleği öndeğer olarak etkindir. Sistem Ayarları sayfasında sorgu önbelleğe almayı etkinleştirebilir veya devre dışı bırakabilirsiniz.
Temel veritabanlarındaki değişiklikleri yönetmek ve önbellek girişlerini izlemek için bir önbellek yönetimi stratejisi geliştirmelisiniz.
Önbellek girişini oluşturan temel tablolardaki veriler değiştiğinde önbellek girişlerini geçersiz kılmak için bir işleme ve istenmeyen önbellek girişlerini izlemek, belirlemek ve kaldırmak için bir işleme ihtiyacınız vardır.
Bu bölüm, aşağıdaki konuları içerir:
Önbellek yönetim stratejisi tercihi, temel veritabanlarındaki verilerin oynaklığına ve bu oynaklığa neden olan değişikliklerin öngörülebilirliğine bağlıdır.
Ayrıca, önbelleğinizi oluşturan sorguların sayısı ile tiplerine ve bu sorguların aldığı kullanıma bağlıdır. Bu bölümde, çeşitli önbellek yönetimi yaklaşımlarına genel bakış sağlanmaktadır.
Tüm yeni önbellek girişlerini durdurmak ve yeni sorguların mevcut önbelleği kullanmasını durdurmak amacıyla tüm sistem için önbelleğe almayı devre dışı bırakabilirsiniz. Önbelleğe almayı devre dışı bırakmak, önbellekte saklanan herhangi bir girişi kaybetmeden daha sonra etkinleştirebilmenizi sağlar.
Önbelleğe almayı geçici olarak devre dışı bırakmak, eski önbellek girişleri olduğundan şüphelenebileceğiniz, ancak bu girişleri veya tüm önbelleği temizlemeden önce gerçekten eski olup olmadıklarını doğrulamak istediğiniz durumlarda yararlı bir stratejidir. Önbellekte saklanan verilerin hala uygun olduğunu fark etmeniz durumunda veya sorunlu girişleri güvenli bir şekilde temizledikten sonra önbelleği güvenli bir şekilde etkinleştirebilirsiniz. Gerekirse önbelleği yeniden etkinleştirmeden önce tüm önbelleği veya belirli bir iş modeliyle ilişkili önbelleği temizleyin.
Her fiziksel tablo için önbelleğe alınabilir bir özellik ayarlayarak, o tabloya ilişkin sorguların gelecekteki sorguları yanıtlamak için önbelleğe alınıp alınmayacağını belirtebilirsiniz.
Bir tablo için önbelleğe almayı etkinleştirirseniz, tabloyu içeren sorgular önbelleğe alınır. Tüm tablolar öndeğer olarak önbelleğe alınabilir, ancak bazı tablolar, uygun önbellekte tutma süresi ayarlarını belirlemediğiniz sürece önbelleğe dahil edilmek için uygun olmayabilir. Örneğin, her dakika güncellenen borsa takip ekranı verilerini depolayan bir tablonuz olduğunu varsayın. Bu tablo için her 59 saniyede bir girişleri temizlemek istediğinizi belirtebilirsiniz.
Bu tablo için girişlerin sorgu önbelleğinde ne kadar süreyle saklanacağını belirtmek için önbellekte tutma ayarlarını da kullanabilirsiniz. Bu, sık sık güncellenen veri kaynakları için kullanışlıdır.
Model Yönetim Aracı'ndaki Fiziksel katmanda fiziksel tabloya çift tıklayın.
Semantik Modelleyici kullanıyorsanız, bkz Fiziksek Bir Tablonun Genel Nitelikleri Nelerdir?.
Fiziksel Tablo nitelikleri iletişim kutusundaki Genel sekmesinde şu seçimlerden birini yapın:
Önbelleğe almayı etkinleştirmek için Önbelleğe Alınabilir'i seçin.
Bir tablonun önbelleğe alınmasını engellemek için Önbelleğe Alınabilir seçimini kaldırın.
Önbellek geçerlilik bitiş zamanı ayarlamak için bir Önbellekte tutma süresi ve ölçü birimi (gün, saat, dakika veya saniye) belirleyin. Önbellek girişlerinin otomatik olarak sona ermesini istemiyorsanız Önbellek hiçbir zaman sona ermez'i seçin.
Tamam'a tıklayın.
Semantik Modelleyici veya Model Yönetim Aracı'nı kullanarak semantik modelleri değiştirirken, değişikliklerin önbellekte saklanan girişler için etkileri olabilir. Örneğin, bir fiziksel nesnenin veya dinamik bir semantik model değişkeninin tanımını değiştirirseniz bu nesneyi ya da değişkeni referans alan önbellek girişleri artık geçerli olmayabilir. Bu değişiklikler önbelleğin temizlenmesini gerektirebilir. Dikkat edilmesi gereken iki senaryo vardır: Mevcut semantik modelinizi değiştirmeniz ve yeni bir semantik model oluşturmanız (veya yüklemeniz).
Semantik Modelde Yapılan Değişiklikler
Bir semantik modeli değiştirdiğinizde veya farklı bir .rpd dosyası yüklediğinizde, önbellek girişlerini etkileyen tüm değişiklikleriniz, değişen nesneleri referans gösteren tüm önbellek girişlerinin temizlenmesiyle sonuçlanır. Temizleme işlemi, değişiklikleri yüklediğinizde gerçekleşir. Örneğin semantik modelden bir fiziksel tabloyu silerseniz, teslim edildiğinde tabloyu referans gösteren tüm önbellek girişleri temizlenir. Mantıksal katmanda bir semantik modelde yapılan herhangi bir değişiklik, o semantik model için tüm önbellek girişlerini temizler.
Global Semantik Model Değişkenlerinde Yapılan Değişiklikler
Genel semantik model değişkenlerinin değerleri, sorgulardan döndürülen veriler tarafından yenilenir. Global emantik modeli değişkeni tanımlarken bir başlatma bloğu oluşturur veya Yapılandırılmış Sorgulama Dili sorgusu içeren mevcut bir başlatma bloğunu kullanırsınız. Ayrıca, sorguyu çalıştırmak ve değişkenin değerini periyodik olarak yenilemek için bir çizelge konfigüre edersiniz.
Bir global semantik modeli değişkeninin değeri değişirse bu değişkeni bir sütunda kullanan önbellek girişleri eskir ve söz konusu girişteki verilere yeniden ihtiyaç duyulduğunda yeni bir önbellek girişi oluşturulur. Eski önbellek girişi hemen kaldırılmaz; normal önbelleğe alma mekanizması ile temizlenene kadar kalır.
Sorgu önbelleğe almanın başlıca avantajlarından biri, görünür sorgu performansının iyileşmesidir.
Sorgu önbelleğe alma, sorguları çalıştırıp sorgu sonuçlarını önbelleğe alarak devre dışı saatlerde önbelleği temel verili hale getirmek için önemli olabilir. İyi bir temel verili hale getirme stratejisi, önbellek isabetlerinin ne zaman gerçekleştiğini bilmenizi gerektirir.
Tüm kullanıcılarınız için önbelleği temel verili hale getirmek isterseniz, önbelleği şu sorgu ile temel verili hale getirebilirsiniz:
SELECT User, SRs
SELECT User, SRs
kullanarak önbelleği temel verili hale getirdikten sonra, aşağıdaki sorgular önbellek isabetleridir:
SELECT User, SRs WHERE user = valueof(nq_SESSION.USER) (and the user was USER1) SELECT User, SRs WHERE user = valueof(nq_SESSION.USER) (and the user was USER2) SELECT User, SRs WHERE user = valueof(nq_SESSION.USER) (and the user was USER3)
Bu bölüm, aşağıdaki konuları içerir:
Ö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 |
---|---|
|
Yeni bir sorgunun 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. |
|
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ü |
|
Sorgunun önbellek isabeti olması için Önbelleğe alınan bir sorgunun mantıksal alt kümesi olan bir
Ayrıca, 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ı ( |
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, |
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. Bkz. Satır Düzeyi Veritabanı Güvenliği Kullanırken Doğru Veritabanı Sonuçları Sağlama. |
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. |
|
Önbelleğe alınan bir sorgu |
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, |
|
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 |
Sanal Özel Veritabanı gibi bir satır düzeyi veritabanı güvenliği stratejisi kullanırken, döndürülen veri sonuçları kullanıcının yetkilendirme kimlik bilgilerine bağlıdır.
Bu nedenle Oracle Analitik Bulutu, bir veri kaynağının satır düzeyi veritabanı güvenliği kullanıp kullanmadığını ve hangi değişkenlerin güvenlikle ilgili olduğunu bilmelidir.
Önbellek isabetlerinin sadece tüm güvenliğe duyarlı değişkenleri içeren ve bunlarla eşleşen önbellek girişlerinde gerçekleşmesini sağlamak üzere, Model Yönetim Aracı'nda veritabanı nesnesini ve oturum değişkeni nesnelerini aşağıda belirtildiği gibi doğru konfigüre etmelisiniz:
Veritabanı nesnesi. Fiziksel katmanda, Veritabanı iletişim kutusunun Genel sekmesinde Sanal Özel Veritabanı'n seçerek veri kaynağının satır düzeyi veritabanı güvenliğini kullandığını belirtin.
Paylaşımlı önbelleğe alma ile satır düzeyi veritabanı güvenliği kullanıyorsanız, güvenliğe duyarlı değişkenleri eşleşmeyen önbellek girişlerinin paylaşılmasını önlemek için bu seçeneği belirlemeniz gerekir.
Oturum Değişkeni nesnesi. Güvenlikle ilgili değişkenler için Oturum Değişkeni iletişim kutusunda Güvenliğe Duyarlı'yı seçerek, satır düzeyi veritabanı güvenliği stratejisi kullanırken bunların güvenliğe duyarlı olduklarını belirleyin. Bu seçenek, önbellek girişlerinin güvenliğe duyarlı değişkenlerle işaretlenmesini ve güvenliğe duyarlı değişkenin tüm gelen sorgularda eşleşmesini sağlar.
Potansiyel önbellek isabeti sayısını en yüksek seviyeye çıkarmak için önbelleği doldurmak üzere bir sorgu grubu çalıştırılabilir.
Aşağıda, önbelleği temel verili hale getirmek için bir sorgu grubu oluştururken kullanılacak sorgu tiplerine yönelik bazı öneriler yer alır.
Yaygın önceden oluşturulmuş sorgular. Yaygın olarak çalıştırılan sorgular (özellikle işlenmesi pahalı olanlar) mükemmel önbellek temel verili hale getirme sorgularıdır. Sonuçları kumanda tablolarına gömülü sorgular, yaygın sorgulara iyi örneklerdir.
İfade içermeyen SELECT listeleri. SELECT
listesi sütunlarındaki ifadelerin ortadan kaldırılması, önbellek isabetlerinin olasılığını artırır. İfade içeren, önbelleğe alınmış bir sütun sadece aynı ifadeyi içeren yeni bir sorguyu yanıtlayabilir. İfade içermeye, önbelleğe alınmış bir sütun o sütun için herhangi bir ifade içeren bir isteği yanıtlayabilir. Örneğin, önbelleğe alınmış şunun gibi bir istek:
SELECT QUANTITY, REVENUE...
şunun gibi yeni bir sorguyu yanıtlayabilir:
SELECT QUANTITY/REVENUE...
ancak tersi olamaz.
WHERE yantümcesi yok. Önbelleğe alınan sonuçta WHERE
yantümcesi yoksa, projeksiyon listesindeki sütunları içeren herhangi bir WHERE
yantümcesini içeren select listesi için önbellek isabeti kurallarına uyan sorguları yanıtlamak için kullanılabilir.
Genellikle önbelleği temel verili hale getirmek için kullanılabilecek en iyi sorgular, veritabanı işleme kaynaklarını yoğun şekilde kullanan ve yeniden gönderilmesi muhtemel olan sorgulardır. Önbelleği çok sayıda satır döndüren basit sorgularla temel verili hale getirmemeye dikkat edin. Bu sorgular (örneğin, SELECT * FROM PRODUCTS
, burada PRODUCTS
doğrudan tek veritabanı tablosuna eşlenir) çok az veritabanı işlemesi gerektirir. Dezavantajları, önbelleğe almanın azaltmadığı faktörler olan ağ ve disk ek yüküdür.
Oracle Analitik Bulutu, semantik modeli değişkenlerini yenilediğinde, bu semantik modeli değişkenlerini referans gösterip göstermediklerini belirlemek için iş modellerini inceler. Referans gösteriyorlarsa, Oracle Analitik Bulutu bu iş modelleri için tüm önbelleği temizler. Bkz. Semantik Model Değişiklikleri Sorgu Önbelleğini Nasıl Etkiler.
Oracle Analitik Bulutu sorgu önbelleğini temel verili hale getirmek için aracıları konfigüre edebilirsiniz.
Önbelleği temel verili hale getirmek, kullanıcılar analiz çalıştırırken veya kumanda tablolarına gömülü analizleri görüntülerken yanıt sürelerini iyileştirebilir. Bu verileri yenileyen istekleri çalıştırmak için aracıları çizelgeleyerek bunu yapabilirsiniz.
Önbellek temel verili hale getirme aracılarının diğer aracılardan tek farkı, önceki önbelleği otomatik olarak temizlemeleri ve kumanda tablosunda uyarı olarak görünmemeleridir.
Not:
Önbellek temel verili hale getirme aracıları sadece tam eşleştirme sorgularını temizler; bu nedenle eski veriler halen var olabilir. Aracı sorguları özel sorguları veya detaya gitmeleri dikkate almadığından, önbelleğe alma stratejisinin her zaman önbellek temizlemeyi içerdiğine emin olun.Önbelleği temizlemek, girişleri sorgu önbelleğinden temizler ve içeriğinizi güncel tutar. Model Yönetim Aracı'nda her tablo için Önbellekte Tutma Süresi alanını ayarlayarak belirli tablolar için önbellek girişlerini otomatik olarak temizleyebilirsiniz.
Not:
Semantik Modelleyici kullanıyorsanız, bkz. Fiziksek Bir Tablonun Genel Nitelikleri Nelerdir?
Bu, sık sık güncellenen veri kaynakları için kullanışlıdır. Örneğin, her dakika güncellenen borsa takip ekranı verilerini saklayan bir tablonuz varsa bu tabloya yönelik girişleri 59 saniyede bir temizlemek için Önbellekte Tutma Süresi ayarını kullanabilirsiniz. Bkz. Belirli Fiziksel Tablolar İçin Önbellek ve Önbellekte Tutma Süresi.