HANA Table Partition

Bilindiği üzere HANA sisteminde, tablolarda iki milyar kayıt sınırı bulunmaktadır. Yani herhangi bir işlem yapmadan iki milyar satır kayıt olan bir tabloya artık erişmeniz imkansız . Özellikle MATDOC, ACDOCA, CDPOS gibi ana tablolar bu durumda en çok risk altında olan tablolar. Örnek olarak ACDOCA tablosunda iki milyar kaydınız varsa, artık sistem üzerinde muhasebe belgesi oluşturamayacaksınız anlamına geliyor ki bu durum da genel olarak SAP sisteminin kullanılamaması anlamına gelmektedir.

Peki SAP gibi bir yazılım, iki milyar satırdan fazla tabloya geldiğinizde kaldırıp atacağınız bir yazılım mı? Tabii ki  hayır. Çözüm olarak Hana Table partition ( Tablo bölme) sunuluyor. Table partitioning ( Tablo Bölme), veri tabanında mevcut bir tabloyu alt tablolara bölerek, daha yönetilebilir tablo yapısı oluşturularak iki milyar sorununun ortadan kaldırılması anlamına geliyor. Veritabanında 1 tablo değilde, ilgili tablo kaça bölünmüşse o kadar tablo varmış gibi sistem davranmaya başlıyor. Hemen akıllara acaba yazma ya da okumada bir performans kaybı oluyor mu sorusu geliyor olabilir, benim gözlemlediğim ölçümlenebilir bir performans kaybı yaşanmadı. Aynı raporları işlem öncesi ve sonrasında aynı kriterlerle çektiğimizde rapor çalışma süreleri birbirine çok yakındı. Tablo böldükten sonra DBACOCKPIT gibi işlem kodlarında partition yapılan tabloların partlarını görürsünüz.

Hana Table Partition

Tabloları bölerken birden fazla yöntem var, şirketinize ve süreçlerine uygun olanı seçebilirsiniz. Fazla teknik detaya girmeden anlatmak gerekirse:

  • Hash Partitioning : Tablo, tablo bölümlerine eşit dağıtılmak isteniyorsa kullanılması önerilen yöntemdir. Eğer tablonun anahtar alanları varsa, hash ile böleceğiniz alanlar bu anahtar alanlardan biri olmak zorunda. Şirketimizde biz de ACDOCA tablosunu Hash olarak BELNR alanından partition yaptık.
  • Range Partitioning : Belirli alan değerlerine göre tabloyu bölme yöntemidir. Range yöntemi ile böleceğiniz kolon yine tablo anahtarı olmak zorundadır. Yine ACDOCA için örnek vermek gerekirse, Mali yıl ( GJAHR ) alanı bazında tabloyu range yöntemi ile bölebilirsiniz. Yıl bazında kayıt sayınız değişeceğinden, bu yöntem ile yapılan bölme işlemi asimetrik olacaktır. Yani farklı partlar için farklı miktarda kayıt sayısı olacaktır.
  • Round Robin Partitioning : Kolon belirtmeden eşit kayıt sayısı içeren partlar oluşturmak için kullanılır. Hash bölmeye çok benzese de, bazı dezavantajları bulunmaktadır.

Eğer Hana Table Partition sürecine başlamanız gerekiyorsa, bu konudaki SAP Administration Guide’ı okumanızı tavsiye ederim.

https://help.sap.com/viewer/6b94445c94ae495c83a19646e7c3fd56/2.0.00/en-US/c2ea130bbb571014b024ffeda5090764.html

Daha kompleks tablo bölme ihtiyaçlarını giderebilmek adına, çok katmanlı bölme( Multi-Level Partitioning) opsiyonu da bulunmaktadır.  Bu konu da yukarıdaki Guide içinde detaylandırılmıştır.

Hana ile ilgili daha önceki yazıyı okumak için :