joomla templates Data Warehouse Türkiye

Tue02222011

Last update01:32:32 PM GMT

Back Kategoriler Oracle Dba SQL Optimize Nedir ?
Çarşamba, 01 Aralık 2010 17:11

SQL Optimize Nedir ?

Yazan&Gönderen  Muhammet Ali YURTÇİÇEK
Bu Öğeyi Derecelendir
(4 Oylar)

Bu yazimda Sql performans iyilestirme için ve veritabanina ulasimi optimize etmek amaçli kullanilan SQL optimizeri ana hatlari ile ve basit birkaç örnek vererek açiklamaya çalisacagim

Herhangi bir SQL sorgusu çalistirildiginda, istenilen bilgiye nasil ulasilacagina “Optimizer” adi verilen
veri tabani optimizasyon birleseni karar vermektedir. Oracle, kullanicilarina tahminler üzerine çalisan
“Rule-Based Optimizer” ve daha çok akil yürütme yöntemi ile çalisan “Cost-Based Optimizer” olmak
üzere iki adet optimizasyon seçenegi sunmaktadir.
Rule-Based Optimizer



Veri tabanina ulasilirken, Rule-Based Optimizer (RBO) ile önceden tanimlanmis kurallar seti
kullanilarak hangi yolun izlenecegine karar verilir. Burada bahsedilen kurallar “SELECT /*+ RULE
*/. . .” seklinde kullanilmaktadir ve böylece veri tabaninda hangi indeksin kullanilacagi gibi ek
bilgiler verilmektedir. Eger bu yöntem kullanilacaksa, RDBMS‘de asagidaki tanimlamalarin yapilmasi
gerekmektedir:
• INIT.ORA ya da SPFILE dosyasinda OPTIMIZER_MODE = RULE degisikligi yapilmalidir.
• ALTER SESSION SET OPTIMIZER_MODE = RULE komutu sistemde çalistirilmalidir.
Cost-Based Optimizer

Cost-Based Optimizer’in (CBO) Rule-Based Optimizer‘a göre daha kapsamli ve karisik bir çalisma
prensibi bulunmaktadir. Kullanilacak olan en iyi yöntemi belirlenirken, çesitli veri tabani bilgileri (tablo
boyutlari, kayit sayilari, verilerin dagilimi vs.) kullanilmaktadir.
Cost-Based Optimizer‘inin ihtiyaci olan veriyi saglamak için veri tabani objelerinin DBMS_STATS
prosedürü kullanilarak analiz edilmeleri ve istatistiklerinin toplatilmasi gerekmektedir. Eger bir tablonun
analizi yapilmamissa, Rule-Based Optimizer‘in kurallari kullanilarak yolu belirlenir. Ayni sorguda bazi
tablolar analiz edilmis ve bazilari analiz edilmemis ise, sistem öncelikli olarak Cost-Based Optimizer‘ini
kullanir. Eger bu yöntem kullanilacaksa; RDBMS‘de asagidaki tanimlamalarin yapilmasi
gerekmektedir:
• INIT.ORA/SPFILE dosyasinda OPTIMIZER_MODE = CHOOSE degisikligi yapilmalidir ve
sorgudaki tablolardan en az bir tanesinin istatistik bilgilerinin mevcut olmasi gerekmektedir.
• ALTER SESSION SET OPTIMIZER_MODE = CHOOSE komutu sistemde çalistirilmalidir ve
sorgudaki tablolardan en az bir tanesinin istatistik bilgilerinin mevcut olmasi gerekmektedir.
• ALTER SESSION SET OPTIMIZER_MODE = FIRST_ROWS ( veya ALL_ROWS ) komutu
sistemde çalistirilmalidir ve sorgudaki tablolardan en az bir tanesinin istatistik bilgilerinin
hesaplanmis olmasi gerekmektedir.

SQL OPTIMIZASYON ÖNERILERI
Birden fazla sorgu kullanilmasi

Önerilmez

SELECT name
FROM products
WHERE product_id = 1;

SELECT type_name
FROM product_type
WHERE product_type_id = 1;

Önerilir

SELECT p.name,
pt.type_name
FROM products p,
product_type pt
WHERE p.product_type_id = pt.product_type_id
AND p.product_id = 1;

Önerilmez

SELECT product_id,
product_type_id,
name
FROM products
UNION
SELECT product_id,
product_type_id,
name
FROM more_products;

Önerilir

SELECT product_id,
product_type_id,
name
FROM products
UNION ALL
SELECT product_id,
product_type_id,
name
FROM more_products;

* not: sql tunning adli kaynaktan yararlanilmistir.

 

Son Düzenleme Pazartesi, 14 Şubat 2011 12:18
Muhammet Ali YURTÇİÇEK

Muhammet Ali YURTÇİÇEK

1987 / Van doğumluyum. İlköğretimimi Vanda tamamladım. Lise öğrenimime İstanbul Haydarpaşa Anadolu Lisesinde başladım ve Milli Piyango Anadolu lisesinde tamamladım. 2006 yılında Sakarya Üniversitesi Bilgisayar Mühendisliği Bölümüne başladım ve 2010 yılında öğrenimimi tamamladım. İlk profesyonel iş hayatıma Global Bilişim Sistemlerinde Uygulama Danışmanı olarak başladım.Daha çok enterprise uygulamaların geliştirilmesinde rol aldım. Kariyerime Vodafon'da Oracle ve Java üzerine Danışman olarak devam etmekteyim. İlgilendiğim ve kullandığım teknolojiler ve programlama dilleri: Oracle 10-11g , Oracle Pl-Sql,DWH, Java, Hibernet, Sipring,SQL,Asp.net,C#,Delphi,ORM,MEF,LINQ to SQL,IoC, Linux Bana ulaşabileceğiniz adresler: [email protected], [email protected] http://www.linkedin.com/profile/view?id=95301476&trk=tab_pro aliyurtcicek.blogspot.com

Website: aliyurtcicek.blogspot.com E-posta: Bu e-Posta adresi istek dışı postalardan korunmaktadır, görüntülüyebilmek için JavaScript etkinleştirilmelidir

Yorum yaz