oracle sql tunning best practices

37
SQL TUNNING SEMINERİ YAPI KREDİ BANKASI 10 EKİM 2014

Upload: zekeriya-besiroglu

Post on 19-Jul-2015

179 views

Category:

Software


4 download

TRANSCRIPT

Page 1: Oracle Sql Tunning Best Practices

SQL TUNNING SEMINERİYAPI KREDİ BANKASI

10 EKİM 2014

Page 2: Oracle Sql Tunning Best Practices

Zekeriya Beşiroğlu

Page 3: Oracle Sql Tunning Best Practices

AGENDA

SQLTXPLAIN SQL TUNNING BEST PRACTICES

Page 4: Oracle Sql Tunning Best Practices

SQLT NASIL ULASIRIZ• MY ORACLE SUPPORT SAYFASINDAN DOWNLOAD

ETMEMIZ GEREKİYOR

• KNOWLEDGE-DIAGNOSTIC TOOLS

Page 5: Oracle Sql Tunning Best Practices

NASIL KURULUM YAPARIZ

• Download ettiğimiz zip dosyasını açıyoruz.

• Açılan dosyanın install directorysine gidiyoruz

• SQLPLUS / as sysdba şeklinde bağlanıyoruz

• sqcreate.sql çalıştırıyoruz

• Tablespace,user password gibi bilgiler istiyor.

Page 6: Oracle Sql Tunning Best Practices

İLK RAPORUMUZU NASIL ALIYORUZ

• Kurulumu yaptığımız userda bir folder gelecek sqlt/RUN/run gibi o directory gidiyoruz.

• SQL İD buluyoruz.

• sqlplus user/sifre girisi ve

• @sqlxtract sqlid diyoruz.

• sqlt_nnnn_main.html isimli ilk raporumuz hazır.

Page 7: Oracle Sql Tunning Best Practices

Raporda Neler Var?

Page 8: Oracle Sql Tunning Best Practices

SQL EXECUTION PLANI

Page 9: Oracle Sql Tunning Best Practices

Daha Fazla Detay

Page 10: Oracle Sql Tunning Best Practices

Daha Fazla Detay

Page 11: Oracle Sql Tunning Best Practices

Join Türleri hatırlatma• HASH JOİN

• TABLO büyük değilse kötü

• NESTED LOOP

• Küçük tablolarda daha iyi

• Sort Merge

• Cardinality yüksekse beklenebilir.

• Hangi Join’i neden Tercih ettiği 10053 Trace

Page 12: Oracle Sql Tunning Best Practices

CBO etkileyen Faktorler Sistem İstatistikleri

• Sistem istatistiklerinin ihmal edildiği birçok yerde görüyoruz.

• Önemlimidir? Sisteminizin genel davranış şeklini analiz ettiği istatistiktir. İndexlerin davranışını bile etkiler.

• SQLT ile sistem istatistiklerini kolayca anlayabiliriz.

• CBO System statistik diye bir sekme vardır.

Page 13: Oracle Sql Tunning Best Practices

Sistem İstatistikleri• Doğru alınıp alınmadığını kontrol edelim.

• Single block read time & multi block read time

Page 14: Oracle Sql Tunning Best Practices

CBO Parametreleri

• CBO yu etkileyen parametreleri bulmamız görmemiz son derece kolaydır.

Page 15: Oracle Sql Tunning Best Practices

Dün İyiydi Ama …

Page 16: Oracle Sql Tunning Best Practices

Örnek Senaryo

• Developer öğlen yemeğe gittiğini ve yemekten dödükten sonra hash join yapan sorgusunun bitmap indexe döndüğünü

• index yaratmadığını

• istatistik almadığını söylüyor.

Page 17: Oracle Sql Tunning Best Practices

Örnek Senaryo

Page 18: Oracle Sql Tunning Best Practices

Örnek Senaryo• İndexin ne zaman yaratıldığı görüyoruz.

• Eskiden yaratılmış.

Page 19: Oracle Sql Tunning Best Practices

Örnek Senaryo• Yeni index yok

• hint yok

• istatistik yok

• plan değişmiş

• Sistem istatistiği değişikliği

• CBO parametre değişikliği

Page 20: Oracle Sql Tunning Best Practices

Örnek Senaryo

• Observation Kısmından parametre değişikliği olduğunu görüyoruz.

• Optimizer_index_cost_adj parameters 1 yapılmış. Default 100.

Page 21: Oracle Sql Tunning Best Practices

SQLT ve Profile

• kurulum yaptığımız yerde utl diye bir folder var. /SQLT/sqlt/utl

• Bu directory’in altında sqltprofile.sql var.

Page 22: Oracle Sql Tunning Best Practices

SQLT ve Profile

SQL> exec dbms_sqltune.pack_stgtab_sqlprof(staging_table_name=>'STAGE', profile_name=>' sqlt_s89915_p3005811457’);

Gerekirse başka bir database göderebiliriz..

Page 23: Oracle Sql Tunning Best Practices

Adaptive Cursor Sharing

• İyi ve Kötü SQL planı gösterir

Page 24: Oracle Sql Tunning Best Practices

Bazı Önemli Tespitler

SQL> alter system set "_optimizer_use_feedback" = FALSE

Page 25: Oracle Sql Tunning Best Practices

SQLTEXECUTE• SQLTEXECUTE sayesinde detaylı compare

yapabiliriz.

Page 26: Oracle Sql Tunning Best Practices

BEST PRACTICES• Building Balanced Hardware Configuration

• High Throughput sağlamak You should consider configuring the following hardware components in order to create a balanced system:

• Number and speed of CPUs • Memory size • Number and size of disks • Number and speed of the I/O bandwidth components, such as:

– Host Bus Adapters(HBAs) – Switches – Disk Controllers

Page 27: Oracle Sql Tunning Best Practices

Hesap Basit• Cpu Core başına ortalama 100-300 mb/per second

• Core sayısı kadar HBA

• Fiber switch ortalama 800 mb/per second

• Bir Disk Array ortalama 200 mb/per second

• Küçük 15000 rpm disk. 10 tane disk bir arrayde.

• 4 gb memory per core 8 gb Compressde.

Page 28: Oracle Sql Tunning Best Practices

Optimizing Third Normal Form: Power, Partitioning, Parallelism

• Power bir önceki slayt

• Partition : Range- Hash partition hedefliyoruz.

• Hash sayısı cpus sayısı X 2

• Paralel degree power X 2 ve hedef parallel partition-wise join

Page 29: Oracle Sql Tunning Best Practices

Partition-Wise Join

Page 30: Oracle Sql Tunning Best Practices

Optimizing Star Queries: Tuning Star Queries

Page 31: Oracle Sql Tunning Best Practices

Data Loading Best Practices• Alter session enable parallel dml ve direct path

yapıp buffer cache pass gecelim.

• Create table as Select

• insert /*+ Append */ into

• External Table kullanıyoruz. SQLloader kullanmıyoruz.

– Allows a flat file to be accessed via SQL and PL/SQL as if it were a table in the database – Enables complex data transformations and data cleansing to occur “on the fly” – Supports parallel operations – Avoids wasted space

Page 32: Oracle Sql Tunning Best Practices

Connection Pool• Connection Pool sizeları son derece kritiktir.

• Bugun online application user sayısı yüksek olan bir sistemde

• Örnek vermek gerekirse 50.000 online application users

• 100 Application server

• 2 node rac 128 CPU per node OLMAMALI

• instanse basına 25-30.000 session çok yüksek rakamlar yüksek süreli beklemelere performans problerine neden olurlar.

Page 33: Oracle Sql Tunning Best Practices

12c Multitenant&In Memory• Complex OLTP ortamları Analytic indexlerle

beraber çok daha yavaş çalışırlar.

• OLTP den dolayı1-3 index +10-20 civarı Analytic index olduğunu düşünürseniz tabloya yapılan bir insert işleminin maliyetini yüksek ve yavaş olur.

• IN Memory Database Column Store özelliği Analytic indexin yerini alacaktır.Hem daha hızlı analiz hemde daha hızlı OLTP ve batch işlemleri demektir.

Page 34: Oracle Sql Tunning Best Practices

IN MEMORY• Uygulamalarınızda hiçbir değişiklik yapmazsınız.

• Bilinen Row formatı Transaction için en iyi formattır

• Insertler hızlı,birkaç row many columns hızlıdır

• Column formatı inmemory özelliğidir. Analytics için idealdir

• Region bazında satış raporu gibi,tek yada az kolon çok satır için idealdir.

• Son derece kolay ayarlanır.

• inmemory_size=xxx GB

• Kullanacağınız tabloda yada kolonda alter yapılır.

• Alter table yyy partition zzz inmemory

Page 35: Oracle Sql Tunning Best Practices

Dual Format Database• Row ve Column format aynı tabloda kullanabiliriz

• OLTP Row kullanır

• Analytics ve Raporlamada Column formatı

• Inmemory not persistent and no logging

• 2X -20X compress farkı yaratır.

• Buffer cacheden çok daha hızlıdır.

• Tablo ve Partition level yapılabilir.

• Her hardware platformda vardır.

• Her cpu core local olarak çalışabilir.

• Join tablolarda 10X hızlanma vardır.

Page 36: Oracle Sql Tunning Best Practices

In -memory Multitenant • Beraber harika çalışırlar.

• Multitenant ciddi bir konsolidasyon yapar. Memory ve Cpu Cycles

• Inmemory’in isteği memory ve cpu olduğu için daha yüksek performans gösterir.

• Inmemory CDB inherittir

• Örnek vermek gerekirse GL,OE,DW databaselerimiz olsun

• CDB inmemory_size=20gb

• GL 0 gb

• OE 4 db

• DW 16 gb ayarlayabiliriz.

• hatta over subscription bile izin verir. yani oe 10gb dw 16 gb ayarlanabilir.

Page 37: Oracle Sql Tunning Best Practices

Sorular & Cevaplar

• kaynaklar: SQLxplain Carlos Sierra

• OTN