İstatistiklerin Test Edildikden Sonra Yayınlanması

Burada bahsedeceğimiz bu özellik 11g ile beraber gelen zaman zaman dayanlış yapmamızın önüne geçen güzel bir özellik aslında ama yeteri kadar bilinmediği kaanatindeyim.

Önce kısaca ne olduğundan bahsedelim. Kimi zaman aktif olarak çalışan bazı sql’ lerin performanslarında ciddi yavaşlamalar görürüz. Bunu ya biz farkederiz yada kullanıcılardan gelen şikeyetler doğrultusunda farkederiz. Bu tarz durularda öncelikle sorgunun execution planını incelemekle işe başlarız sonrasında select edilmeye çalışılan data miktarı, sorgu içerisindeki where conditionları olmak üzere bazı noktaları gözden geçiririz. İşte bunlardan biride ki çoğu zaman aldığımız ilk aksiyon da budur diyebiliriz, istatistiklerin güncel olup olmadığını kontrol etmek veya hemen bir istatistik alıp sorgunun performansına ondan sonra bakmak oluyor. İşte tam bu noktada özelliklede üzerinde çalıştığınız tablolar çok büyük ise istatistikleri güncelenin etkilerini önce siz gördükden sonra ve sorgunun performansına olumlu etkileri test ettikten bu istatistikleri diğer kullanıcılarında kullanımına sunmak sizi oluşabilecek daha kötü bir senaryodan koruyacaktır.
Continue reading

System Partitioning …

System partitioning şimdiye kadar benim hiç kullanmadığım ve 11g ile birlikte gelen yeni bir özellik, öncesinde özetle ne olduğundan bahsedelim, sonrasında kullanılması durumunda ne gibi avantajları olduğu üzerinde konuşuruz.

System partitioning data’ nın tablespace’lere yerleşiminde, veritabanını kontrolü olmadan tamamen uygulamanın kontrolünde datanın dağıtılmasını sağlar. Bu işlemi çok basitçe şöyle anlatabiliriz, database sadece tablonun partitionlara ayrılmasında yardımcı oluyor ama datanın hangi partitiona gideceğini bilmiyor ve dolayısıyla da yönetmiyor, bu kısım sadece uygulamanın kontrolünde gerçekleşiyor. Bu işlemin gerçekleşmesi içinde parititoning’in tümüyle uygulama tarafından kontrol edilmesi gereksinimini doğuruyor. Yani system partitioning yapılmış olan bir tabloya bir kayıt insert etmeye çalışıldığında eğer insert statementı içerisinde hangi partitiona insert edileceği açıkca belirtilmediği süre insert işlemi hata alacaktır.
Continue reading

Interval Partitioning …

Partitioning ile ilgili olarak tablo ve indexlerin nasıl partitionlanması gerektiğinden ( http://www.kamilturkyilmaz.com/2012/04/28/oracle-partitioning/ ) bir önceki yazımda bahsetmiştim. Şimdi partitioning kavramının biraz daha detayından ve 11g yeni gelen bir başka özelliğinden bahsedeceğiz. İnterval partitioning, çok yalın bir ifadeyle tabloyu create ederken oluşturmuş olduğunuz partition aralıklarının dışında bir kayıt geldiğinde sizin öncesinde belirlemiş olduğunuz kritere göre oracle’ ın otomatik olarak sizin adınıza yeni bir partition açmasıdır şeklinde özetleyebiliriz. Peki bundan önceki versiyonlarda nasıldı bu durum aslında sürekli bir takip gerektiriyordu. Ve tablonun hata almaması için yeni partitionları öncesinde create etmeniz gerekiyordu. Bu özellik dba’ lere ciddi bir kolaylık getirdi. Düşünsenize production ortamınızda çok kritik bir tablonuz var ve yıllık dönemler bazında partitionlı, yılbaşı gecesi yeni yıla ait gelen tüm kayıtlar adreslendiği bir partition olmadığı için sürekli olarak hata alıyor. Bir sonraki gün şirkete geldiğiniz de alınan bu hataların neden kaynaklandığını açıklamak zorunda kalıyor olabilirsiniz.
Continue reading

Oracle Partitioning …

Merhabalar, yine uzun zamandır yazmayı planladığım konulardan biri oracle’ da partitioning kavramı nedir, nasıl yapılır, çeşitleri nelerdir, avatajları ve dezavantajları nelerdir, hangi partitining metodu hangi durumda kullanılmalıdır gibi bazı temel sorulara cevap vermeye çalışacağım.

Öncesinde birkaç gün önce karşılaştığım bir problem den bahsetmek istiyorum. Aix üzerinde çalışan 10g database’ lerimizden birini geçen hafta işletim sistemi SLES11 olacak şekilde 11.2.0.2 upgrade ettik. Upgrade sonrasında clob kolon içeren bir tablo üzerinde yoğun xml file yazım işlemi yapıldığından dolayı bu tablodan kaynaklı çok fazla “enq: HW – contention” eventları oluşuyordu. Continue reading

İndex Kullanımı, Oluşturulması, Çeşitleri, Faydaları Üzerine …

İndex konusu uzun bir zamandır yazmayı planladığım birkaç konudan birisi idi. Umarım faydalı olur.

Oracle ‘ da indexler olmazsa olmazlarımızdan dır diyebiliriz. Aslında exdata gibi yeni teknolojilerle tanıştıkca yeni değişimler olsada hala indexsiz bir yaşam düşünemiyoruz. Peki çok klasik bir soruyle başlayalım o zaman ;
Nedir İndex ? Tablo üzerinde yapılan Select, İnsert, Update gibi işlemlerin daha performansla çalışması için oluşturulan nesnelerdir. Bir örnekle açıklayalım, çok büyük bir tablo üzerinde işlem yapıyorsanız ve çalıştığınız data miktarı tablonun toplam data size’ ının %5-6 ından büyük değilse ; böyle bir durumda eğer index kullanmıyorsanız çalıştığınız sorgu tablonun yer aldığı tüm blokları okumaya çalışacaktır. Eğer index kullanırsanız da sadece ilgili blokları okumayacağı çalışacağından sorgunuz daha performanslı çalışması sağlayacaktır.

İndexler genel olarak Select sorguları, Where cümleciği içeren Update sorguları ve yine Where cümleciği içeren Delete sorgularında ciddi performans artışları sağlarlar. İndexler Insert sorgularında ise performance düşürücü bir etkiye sahiptirler.Yine indexsli kolonlar üzerinde yapılacak update – delete işlemleride nispeten yavaş olacaktır.

Database’ de yer alan indexleri sorgulamak için aşağıdaki sorgulardan faydalanabiliriz ;
Continue reading