Dynamics AX 2012 Caching 1
Merhaba,
AX 2012′deki ön bellek (cach) yapısıyla ilgili bir kaç konuyu ele almayı planlıyorum. Bir çok yapıda olduğu gibi ön bellek yapısı da AX 2012 ile birlikte geliştirilmiş ve yeni özellikler eklenmiş.
AX iki tip ön bellek yapısı destekliyor. Single-Recod Caching ve Set-Based Caching. AX ile çalışırken biz hangi ön bellek yapısının kullanıldığını önemsemeyiz sistem sizin yazdığınız koda göre en uygunu bulup kullanır. Bizim performanslı bir sistem kurabilmek için bu yapıları iyi kavramamız gerekiyor.
Single-Recod Caching (Kayıt bazlı ön bellekleme)
Üç tip kayıt bazlı ön bellek mevcut. Eski versiyondan da bildiğiniz gibi bunlar NotInTTS, Found, FoundAndEmpty. Tablo üzerindeki CacheLookup özelliğinden tanımlama yapıyoruz. Ön belleğin bir select ifadesinde çalışabilmesi için öncelike;
- CacheLookup tanımlı olmalı.
- Record-Buffer (Tablo değişkeni ) disableCache metodu false olmalı.
- Where ifadesinde tekil dizin (unique index) olmalı tekil dizin dışında bir karşılaştırma kullanılırsa ön bellek çalışmaz.
- Karşılaştırma “==” kullanılmalı. >=, <=, > gibi ifadelerde ön bellek çalışmaz.
Ön bellek hem istemcide (client) hem de sunucuda (server) olabilir. AX çalışma zamanında ön belleği duruma göre yeniler. istemcideki ön bellek sadece kendi tarafından kullanılabilir. İstemcideki ön bellek istemcide çalışacak bir select ifadesinde kullanılır. Sistem öncelikle istemciye bakar burada bulamazsa sunucuya orada da bulamazsa veri tabanına bakar. Kaç kaydın ön bellekte tutulacağını server configuration formundan tanımlayabilirsiniz. Eski versiyonlarda bu 100 olarak geliyordu ve değiştirilemiyordu. Forma System administration > Area page > Setup > System > Server configuration yolundan ulaştıktan sonra Performance Optimization > Performance Settings > Client record cache factor kısmından tanım yapabilirsiniz.
Sunucu ön belleği de sunucuda çalışan select ifadelerinde kullanılır. En çok kaç kaydın ön belleğe alınacağının tanımını Server configuration ‘daki Cache Limits alanından yapabilirsiniz. 2000 tanımlı olarak geliyor.
Ön bellek tanımları tek bir AOS için yapılacağı gibi birden çok AOS olan durumlarda her bir AOS için farklı farklı da yapılabilir.
AX 2012 ile gelen özelliklere bakalım.
- Select’te ifadesinde kullanılan where ifadesinde tekil dizine && ile ilave kriter eklenebilir. || ile yapılan eklemelerde ön bellek çalışmaz. select * from tabCustTable where tabCustTable.AccountNum == “4000″ &&tabCustTable.CustGroup == “Gold”;
- Join de öne bellek çalışır. Where ifadesi yine tekil dizine uygun olmalı. Select from tabCustTable join tabCustGroup
where tabCustTable.AccountNum == “4000″ && tabCustTable.CustGroup == tabCustGroup.CustGroup; - Eğer tek bir şirket işin içindeyse CrossCompany anahatar sözcüğünde de ön bellek desteklenir.
- Eğer Container bir alanınız tekil dizindeyse ön bellek desteklenir.
- Tablo kalıtımında (Table inheritance ) ön bellek desteklenir.
- Tarih kontrollü (Valid time state) tablolarda ön bellek desteklenir.
Şimdilik bu kadar. Sonraki yazımda CacheLookup özelliğini anlatacağım.
Selamlar.
Kaynaklar : Inside Microsoft Dynamics Ax 2012 ve MSDN