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

Oracle Sql Tunning Best Practices

Jul 19, 2015

Download

Software

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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