INDEX Performance Tuning – INDEX Performans Çalışmaları

Merhaba, yakın zamanda yaptığım bir çalışma ve araştırmanın notunu paylaşamak istedim.

Sadece INSERT işlemi uygulanan tablolarda performans çalışması nasıl yapılır ?

Bu çalışma aslında LOG, GUNLUKLEME tablolarında en etkili sonucu doğuracaktır. Sorumuz gayet basit. Peki bu performans çalışmasını nasıl yapabiliriz ? Bizim için avantajları ya da dezavantajlarımız nedir ? Öncelikle INSERT işlemini nasıl hızlandırabiliriz ? Elimden geldiğince açıklamaya çalışacağım. Umarım yardımcı olabilirim.

  • DROP INDEX – Indexlerin Kaldırılması

Sadece INSERT alan tablolarda INDEX’lerin kullanımı anlamsız olacaktır. Sorgulama (SELECT) ya da veri değişimi (DELETE, UPDATE) işlemleri uygulanmadığı için kullanacağınız her INDEX, INSERT işlemi sırasında INDEX’inde boyutunu arttıracaktır ve Oracle INDEX’e INSERT’ten gelen verileri ekleyecektir.

  • SQL HINT – PARALLEL

Eğer sisteminiz ağır yük altında çalışmıyorsa INSERT işlemleriniz öncesinde PARALLEL HINT’i kullanabilirsiniz. Sistem üzerindeki CPU kullanımınız artacaktır ancak INSERT işlemi daha kısa sürede tamamlanacaktır. Eğer sistem üzerinde ciddi bir LOG tutuyorsanız ve INSERT işlemi sırasında WAIT’lere denk geliyorsanız denemenizde fayda olacaktır.

  • SQL HINT – APPEND

DIRECT-PATH ile INSERT ile gelen data tablonun en sonuna basılacaktır. Bu yüzden devamlı bir “High Water Mark, HWM” de artış gözlemleyebilirsiniz. Ancak bu işlem sırasında direct-path uygulandığından dolayı işlem çok hızlı tamamlanacaktır. Aynı zamanda APPEND kullandığınız zaman tablo üzerinde eğer TRIGGER varsa tetiklenmeyecektir. Bu durum CONTRAINT ve TRIGGER’lar üzerinden “data logical corrupt” a neden olabileceği için Oracle’in pek önerdiği bir method değil. O yüzden direct-path yerine conventional-path (HINT kullanılmazsa) daha sağlıklıdır. Aynı zamanda tablonuzdaki büyüme daha hızlı olacaktır. SHRINK, MOVE, EXPORT-IMPORT yada ONLINE TABLE REDEFINITION yapmanız gerekebilir.

  • LOGGING / NOLOGGING

Eğer bulk insert basılıyorsa tabloyu kısa süreli LOGGING mode’dan NOLOGGING moda geçirebilirsiniz. Ancak şunu unutmamak gerek NOLOGGING moda aldığınızda, tablo üzerinde yapılan işlemler sırasında REDOLOG üretilmeyecektir. Bu yüzden ROLL işlemlerini kullanamazsınız. Eğer standby – dataguard yapılandırmanız varsa bu işlem karşıya işlemleyecektir.

  • INITTRANS

Tablo yapılandırmasında INITTRANS parametresinini değiştirebiliriz. DEFAULT değerler TABLO için 1, INDEX için 2’dir.  INITTRANS, “Initial Transaction Slots (ITLs)’u kontrol eder. Bu slotlara, OBJE üzerindeki BLOCK’ların değştirilmesi için SESSION’lar tarafından kullanılmak üzere ihtiyaç vardır. Birden fazla SESSION aynı anda concurrent INSERT işlemi uyguluyorsa INITTRANS değerini arttırmakta fayda vardır. Araştırmam sırasında çok fazla yük alan sistemlerde bu değerin düşük olmasından dolayı “ORA-00060 deadlock detected” oluştuğunu okudum.

 

Benim çalışma sırasında uyguladığım ve araştırdığım bazı notlar bunlar. Lütfen bu notlardan esinlenerek direk ÜRETİM- PRODUCTION sisteminizde çalışma yapmayın. Öncelikli olarak TEST ortamında denemenizde size avantaj sağlayacaktır.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Time limit is exhausted. Please reload the CAPTCHA.