Real World Performance Tour, Türkiye

Herkese Selam,

Bu yazıda sizlerle, 9 Şubat’da TROUG’un düzenlediği “Real World Performance”  etkinliğinde, aldığım notlar üzerinden akılda kalanları, konuşmacıların (Tom Kyte, Andrew Holdsworth, Graham Wood) önerilerini ve konu başlıklarını paylaşacağım.

Real World Perfomance Tour’un ne olduğunu ve neden yapılığını anlayabilmek için Tom Kyte’ın aşağıdaki kısa videoyusunu  izleyebilirsiniz.

 

Öncelikle konu başlılarına bakıcak olursak. Programın 2 ana başlık altında toplandığını görmekteyiz.

1 – OLAP

2- OLTP

Şimdi bu başlıklar altında neler anlatıldığını kısaca anlatmaya başlayabişiriz.

OLAP

OLAP başlığında uzunca bir süre data loading problemi üzerinde duruldu ve data loading’in nasıl daha performanslı yapılacağı hakkında bilgiler verildi. Data Loading ile alakalı verilen bilgilere göz atıcak olursak;

* Data loading yaparken tablodaki datanın tamamına yakınını çekmeye çalıştığımzıda, tabloya indexle erişmek daha fazla I/O yapmamıza neden olduğundan bu tarz durumlarda full table scan ile tabloya erişmenin perferomans anlamında daha faydalı olacağı aşikardır. Özellikle büyük boyutlu tablolarda performans kazanımı daha belirgin olacaktır.

* Data’yı compress etmek tablonun size’ını küçülttüğünden sorgulamalarda yapılacak I/O miktarıda düşecektir buda performansı(Hız) arttırıcı bir etken olarak karşımıza çıkacak opsiyonlardan biridir (Özellikle DWH sistemlerinde tercih edilebilecek iyi bir yöntem olduğu üzerinde duruldu. OLTP sistemlerde bu yöntem’in çok da efektif olamıyacağı bilgiside verildi.).  Data extraction veya migration işlemlerinde performanslı sonuçlar elde edilebilir.

* Data Loading de performansı etkileyen bir diğer konunda network hızıdır. Network’un hızına göre data loading süreleride değişebilmektedir.

* Data Loading işleminde erişilen storage’ların data transfer hızlarıda oldukça önemlidir. Storage cihazının hızına ve teknolojisine göre data loading işleminin performansı değişebilir (DBFS tarzı kaynakların (Exadata gibi) en hızlı seçenek olarak karşımıza çıktığından bahsedildi.)

* External table’ ile paralel SQL cümleleri kullanmanın performansı arttırıcı bir etkisi vardır (Tom Kyte bu konuyu işlerken external table kullanımının DWH sistemlerinde oldukça önemli ve performans kazancı sağlayan bir ayrıntı olduğunu vurguladı. Bu sistemlerde external table’ları sık bir şekilde kullanmamızı önerdi. Bunun nedenini ise External Table’ların daha az kaynak tükettiğine bağladı(Disk/CPU/Memory).). Data loading’i bu yolla yapmak bizi hızlandıracaktır.

* Bulk loading partition’lı tablo yapılarında data loading zamanını arttırıcı bir etki göstermekte. CPU Time, Elapsed Time gibi değerlerin üzerinde negatif bir etki yaratarak bu sürelerin uzamasına neden olmakta. Faydasına bakıcak olursakta bakımının ve yönetiminin oldukça kolay olması olarak nitelendirebiliriz.

OLAP başlığı altında değinilen bir diğer konuda tablo istatikleri idi.

* Tablo üzerinde istatistik toplamak oldukça önemlidir. Tablolar üzerinde güncel istatistik bulunması Oracle optimizer’ın doğru execution plan çıkarması için en önemli donelerden biridir. İstatistikler cardinality hesaplaması için önemlidirler, cardinality’nin doğru hesaplanmasıda sorguların tablolara nasıl erişeceklerini belirleyen faktörlerden biridir. Örneğin güncel istatistik bulunmayan büyük bir tabloda, tablodaki datanın büyük bir kısmına erilmesi gerektiği durumunu düşünürsek, tablodaki istatistik güncel olmadığı için cardinality yanlış hesaplanabilir bunun sonucundada full table scan yerine indexli erişim tercih edilebilir. Bu durumda performansımız oldukça düşecektir. Bu yüzden tablolarımız üstünde belirli period lar ile istatistik toplama işini gerçeklemeliyiz.( Tom,  Tablo istatisikleri içinde en önemli 2 parametrenin NumberOfRows ve Distinct Values parametreleri olduğunu vurguladı, bu parametre değerlerinin güncel tutulması gerektiğini ayrıntılı bir şekilde açıkladı. )

* Oracle 11g de, 10g ye göre istatistik toplama işlemi çok daha hızlı yapılabilmekte.

* Özellikle partition’lı tablolarda distinct value istatistiğinin doğru hesaplanması oldukça önemlidir. Oracle 10g’de partitionlı tabloalarda distinct value değeri yanlış hesaplanıyordu. Oracle 11g de gelen Synopsis yapısı ile beraber artık partition’lı tablolarda distinct değer istatistiği doğru hesaplanabilmekte.

Tablo Kaynağı: Synopsis Example   (32. Slayt)

Toplantıda tartışılan bir diğer konuda Resource Management’dı.

* Günümüzde bilgisayar mimarisi ve OS seviyesinde kaynak paylaşımı oldukça önemlidir. Kaynakları doğru paylaştırmak ve sistemi stabil şekilde çalıştırmak günümüz IT dünyasının en önemli sorunlarından biridir. Kaynakların doğru  paylaştırılması ve efektif kullanılması çok kritik bu konu. Kaynakların efektif kullanılması adına Set based ve row based processing’in üzerinde durabiliriz.

* İşleyeceğimiz datayı set(toplu) şeklinde işlemek kaynaklarımızı daha efektif kullanmamız anlamına gelmektedir. Bu şekilde hem CPU zamanını daha etkin kullanmış olacağız, hemde performansımızı arttırmış olacağız. OLAP sistemlerde özellikle işlemlerimizi set based halletmek oldukça kritik bir nokta. Aksi takdirde işlemlerimizi Row by Row (Tom Kyte’ın deyimi ile Slow by Slow 🙂 ) yapmak zorunda kalacağız ve zaman ve performans kaybına sebeiyet vereceğiz.

* İşlemlerimizi set based halletmek için set based kodlama tekniklerini kullanmamız bize kolaylık sağlayacaktır. Örneğin Create table as select veya insert into/*+append */…  tarzı komutlar, işlerimizi set şeklinde yapmamıza olanak sağlar.

* Parallel Querry kullanımı çok kaynak tükettiğinden, aynı db ye erişen user’ların response time larında sapmalar değişmeler ve uzamalar meydana gelebilir. Parallel sorgu çalıştırma bazı user lar için performans kazandırırken  aynı sisteme erişen bazı userlar içinde sürelerin çok uzamasına ve performansın düşmesine sebebiyet verebilir bu yüzden parallel sorgularda kaynak paylaşımı ve kullanımı ile ilgili DBA’lerin çeşitli önlem ve kısıtlamalar almak durumunda kalabilirler. DBA’ler dml’lerin paralellik seviyelerine kısıtlar getirerek, sisteme erişen userların response timelarını birbirine yaklaştırabilir. Bu her user’ın ortalama sürelerde sorgularına cevap almasını sağlayacaktır. Kaynakların kullanımı ve paylaşımı adil olarak dağıtılabilecektir.

* Graham Wood, OLAP sistemleri kaynak tüketimi açısından “Greedy” olarak nitelendiriyor.

OLTP

OLTP konusundaki sunumun ilk cümlesi çok hoşuma gitmişti. Cümle şöyle idi:”OLTP is Computer Science” :).  OLTP konusunda konuşmacıların en çok zaman harcadığı konu işlemci ve proses ilişkisi oldu diyebilirim. Tom, Andrew ve Graham çeşitli CPU Core Sayısı ve Core başına düşen proses sayıları üzerinden farklı örnekler vererek bu konu üzerinde önemle durdurlar.

Core – Processor ilişkisi üzerinde örnekler anlatılırken genel olarak çıkarılan sonuç şöyle idi. Core başına düşen proses sayısı arttıkça sistemin genel througput’unda düşüşler yaşanabileceği idi. Bu konuda verilen bir örneği paylaşmam gerekirse. Core başına 1 proses düşen 32 core’lu bir sistemde birim zamanda 16000 birim işlem yapılırken, Core başına minimum 50 proses bulunan 32 core lu bir sistemde birim zamanda 2000 den daha az birim işlem yapılabildiğiydi. Bu konuda verilen örneğin tamamına buradan (45. Slayt) erişebilirsiniz.

OLTP balığında işlenen bir diğer konuda hard parsing ve soft parsing üzerineydi. Tom’un şiddetle performans kaybının en önemli sebebi olarak gösterilen hard parsing den kaçınılması gerektiği konusunda önemle duruldu. Hard parsing yerine bind variable kullanarak aynı sürede çok daha fazla transaction işliyebileceğimiz anlatıldı. Soft parsing performans geliştirme, iyileştirme anlamında yapacağımız ilk iş olarak dikte edildi konuşmacılar tarafından. Ayrıca bind variable kullanmanın SQL enjeksyonlarına karşıda iyi bir önelem olduğu dipnot olarak paylaşıldı. Bu konu ile ilgili ayrıntılı bilgiyi önceki yazımda bulabilirsiniz.

Bunların haricinde etkinlikte SQL statmentların yapılarından join mekanizmasının doğru anlaşılmasından ve Queuing yapısından da bahsedildi.

Bu konuların her biri Expert Oracle kitabında uzun uzun ve ayrıntılı olarak işlendiğinden bu yazıda yalnızca kısa kısa bilgiler vererek geçmek durumnda kaldım. İlerleyen zamanlarda her konuyu kendi içinde ayrıntılı bir şekilde işlemeyi düşünmekteyim.

Etkinlikte kullanılan sunuma buradan erişebilirsiniz.

Genel anlamda çok faydalı bir organizasyon geçirdiğimizi söyleyebilirim. Farkındalık anlamında oldukça güzel örnekler ve bilgiler aldık. TROUG’a böyle bir etkinlik düzenlediği için tekrardan çok teşekkür ediyorum. Bu tarz etkinliklerin devamının olması dileği ile.

Advertisements

About ... from Emrah METE

Bilgisayar Mühendisi
This entry was posted in Oracle, Root, Uncategorized and tagged , , , , , , , , , , , , , , , , , , . Bookmark the permalink.

One Response to Real World Performance Tour, Türkiye

  1. Fuat sungur says:

    Cok iyi bir yazi, tesekkurler Emrah.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s