13 Ocak 2012 Cuma

Oracle Indexes 2

Bitmap Index:
Bitmap indeksler tablodaki değerleri bit şeklinde depolarlar. Veriler, başlangıç bitiş rowid ‘ler arasında oluştulan bitmaplar içinde depolanır.
Örnek:
create bitmap index person_region on person (region);

Row Region North East West South
1 North
1 0 0 0
2 East
0 1 0 0
3 West
0 0 1 0
4 West
0 0 1 0
5 South
0 0 0 1
6 North
1 0 0 0
Avantajları:
Örnekte de görüldüğü gibi düşük çeşitliğe sahip (low cardinality) Region columnu için bir Bitmap indeks oluşturulmuştur. Column değerleri ne kadar az çeşitse Bitmap okadar kısa olacak ve verinin bitlerden okunup getirilme işi o kadar hızlı olacaktır. Low cardinality columnlar için b tree indeksler yerine Bitmap indeks kullanmak daha verimli olacaktır.
Bitmap indeksler Bitmap sıkıştırılması mümkün olabilmektedir. Sıkıştırılmış bitmapin decompress(çözümleme) işi extra cpu kaynağı ve geniş bant genişliği ihtiyacını gerektirmektedir. Fakat sıkıştırılmış yapının diskten okunma hızı hızlı olmaktadır.
“Where” cümlesinde kullanılan “and” yada ” or “ operatörleri ile şartlar çoğaltıldığında Bitmap indeks kullanmak çok daha avantajlıdır.
Bitmap indeksler datawarehouse yapıdaki veritabanı sistemleri için idealdir. Hiç yok denecek kadar az transaction yapılar için kullanılması avantajdır. Aksi durumu performans kaybı olur. B tree indeksler ise OLTP transctional yapılar için uygun indeks yapılarıdır.
Dezavantajları:
Read only table or no DML:
Eğer tablomuz read-only değilde yani dml aktivesi varsa kesinlikle Bitmap index tercih etmeyiniz. Bunu sebebinde dml esnasında Bitmap oluşturma yada var olan bitmapın update edilmesi cpu bazında extra zaman demektir ve dolayısıyla kaynak tüketimini artıracaktır. Bir değere sebep ise dml esnasında dml deadlock’ ların oluşma sebebidir.
Kullanımı sadece datawarehouse sistemler için sınırlandırılmıştır. Diğer sistemler için kullanılması Bitmap modifikasyonu olacağından istenilmeyen performans kaybı yaşatır.

0 yorum:

Yorum Gönder