oracle sql tunning best practices
Post on 19-Jul-2015
179 Views
Preview:
TRANSCRIPT
SQL TUNNING SEMINERİYAPI KREDİ BANKASI
10 EKİM 2014
Zekeriya Beşiroğlu
AGENDA
SQLTXPLAIN SQL TUNNING BEST PRACTICES
SQLT NASIL ULASIRIZ• MY ORACLE SUPPORT SAYFASINDAN DOWNLOAD
ETMEMIZ GEREKİYOR
• KNOWLEDGE-DIAGNOSTIC TOOLS
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.
İ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.
Raporda Neler Var?
SQL EXECUTION PLANI
Daha Fazla Detay
Daha Fazla Detay
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
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.
Sistem İstatistikleri• Doğru alınıp alınmadığını kontrol edelim.
• Single block read time & multi block read time
CBO Parametreleri
• CBO yu etkileyen parametreleri bulmamız görmemiz son derece kolaydır.
Dün İyiydi Ama …
Ö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.
Örnek Senaryo
Örnek Senaryo• İndexin ne zaman yaratıldığı görüyoruz.
• Eskiden yaratılmış.
Ö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
Ö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.
SQLT ve Profile
• kurulum yaptığımız yerde utl diye bir folder var. /SQLT/sqlt/utl
• Bu directory’in altında sqltprofile.sql var.
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..
Adaptive Cursor Sharing
• İyi ve Kötü SQL planı gösterir
Bazı Önemli Tespitler
SQL> alter system set "_optimizer_use_feedback" = FALSE
SQLTEXECUTE• SQLTEXECUTE sayesinde detaylı compare
yapabiliriz.
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
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.
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
Partition-Wise Join
Optimizing Star Queries: Tuning Star Queries
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
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.
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.
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
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.
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.
Sorular & Cevaplar
• kaynaklar: SQLxplain Carlos Sierra
• OTN
top related