Change Font Size

Change Screens

Change Profile

Change Layouts

Change Direction

Change Menu Styles

Cpanel
Ç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 Perşembe, 09 Aralık 2010 08:32
Muhammet Ali YURTÇİÇEK

Muhammet Ali YURTÇİÇEK

Veri bilgi çağının vazgeçilmez unsurudur.

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

Make sure you enter the (*) required information where indicated.
Basic HTML code is allowed.

You are here Kategoriler Oracle SQL Optimize Nedir ?