18 Eylül 2010 Cumartesi

Sihirli Kelime "Partitioning"

Selamlar,

Partitioning başlığı ile ilgili çok kısa bir yazı yazmak istiyorum. Amacı, bilgilendirme diyebilirim.

Partitioning üzerine son sürümlerde ciddi anlamda geliştirme sağlanmış ve 11g sürümü ile inanılmaz bir konuma gelmiştir. 11g ile birlike partitioning'in geldiği noktayı birkaç yazı önce belirtmiştim.

OTN forumlarını takip ederken bir başlık ile karşılaştım. Kullanıcı, tablolarının fragmente olduğunu ve sürekli insert ve delete işlemleri yaptığını söylüyordu. Bu durumda tablonun performansı negatif yönde etkileniyor ve belirli bir zaman sonra, tablo üzerinde koştuğu sorguların inanılmaz yavaşladığını görüyordu. Bu sebepten dolayı düzenli olarak tek bir tablo için seferber oluyor, tablonun HWM değerini düşürmek ve tahsis ettiği gereğinden fazla alanları bıraktırmak için uğraşıyordu. Bu şekilde koştuğu sorgular eski hızına kavuşuyor ancak yine belirli bir zaman sonra yavaşlamaya başlıyordu. Sonuç olarak otomatiğe bağlanamayan görevler ve başından kalkamadığı bir performans problemi ile mücadele etmek zorunda kalıyordu.

Oracle'ın sunduğu Partitioning özelliği ile yüksek performans elde ediliyor ve tablonun fragmente olması engelleniyor. Ancak bu özelliği kullanmanın bir lisans maliyeti var ve Enterprise Edition kullanmak zorundasınız. Geliştirilen veya geliştirdiğiniz uygulamanın Oracle ile çalışmasını istiyorsanız ve uygulamanızda insert / delete / update işlemleri yoğun ise mutlaka Partitioning özelliğini ciddi anlamda düşünmelisiniz.

Dip Not: Oracle tahsis ettiği alanları kendiliğinden bırakmaz. Bunun sebebi ise yeniden kullanabilme yeteneğinin olması.

Aşağıdaki komut ile yeni extent tahsis edilebilir;

SQL> ALTER TABLE TABLO_ADI ALLOCATE EXTENT [SIZE 10K];

Tahsis edilen ancak kullanılmayan alanın bıraktırılması içinse;

SQL> ALTER TABLE TABLO_ADI DEALLOCATE UNUSED;

İyi geceler.

Ogan

2 yorum:

Tonguç dedi ki...

OTN forum bağlantısını paylaşır mısın, merak ettim yazışmaları :)

Ogan Özdoğan dedi ki...

Selam,

http://forums.oracle.com/forums/thread.jspa?threadID=1130745&start=0&tstart=0

Jonathan Lewis'in yaptığı yorum bence en doğru olan yorum ve yine en mantıklı yol (eğer partitioning yoksa). :)

Takip et: @oganozdogan