VIEW LERDE SQL HINT KULLANIMI



Benzer belgeler
SQL'e Giriş 2. CREATE TABLE tabloadı (kolon isimleri ve veri türleri) (BOLUM_NO NUMBER, BOLUM_ADI CHAR(10));

Exadata Üzerinde Veri Sıkıştırma Yöntemleri

DĐNAMĐK ve STATĐK SQL KULLANMANIN PERFORMANSA ETKĐSĐ

PCTFREE - PCTUSED ORACLE DEĞERLERĐ

Şekil 1. Sistem Açılış Sayfası


Kılavuz Çekmek. Üretim Yöntemleri 15

Verimlilik İçin ETKİN BİLGİ YÖNETİMİ. EXCEL de Etkin Kullanım için Kısayollar

İleri Diferansiyel Denklemler

Veritabanı Yönetim Sistemleri (Başarım Eniyileme Performance Tuning)

Com Donatı v5 Kurulum ve Hata Çözümleri İçindekiler

Advanced Oracle SQL Tuning

MEVLANA ÜNİVERSİTESİ FİKRÎ MÜLKİYET VE PATENT HAKLARI YÖNERGESİ. BİRİNCİ BÖLÜM Amaç, Kapsam, Dayanak ve Tanımlar

BÖLÜM 1 YAZILIM TASARIMINA GİRİŞ YZM211 YAZILIM TASARIMI. Yrd. Doç. Dr. Volkan TUNALI Mühendislik ve Doğa Bilimleri Fakültesi / Maltepe Üniversitesi

Akreditasyon Çal malar nda Temel Problemler ve Organizasyonel Bazda Çözüm Önerileri

Aşağıdaki şemaya dikkat edin. Sorgulamalarımızı genellikle bu şemaya göre yapacağız.

Performans Yönetimi Hakkında Ulusal Mevzuatın Avrupa Standartlarıyla Uyumlaştırılmasına Yönelik Tavsiyeler

OYUN GELİŞTİRME AŞAMALARI-I. Oyununuzun senaryosunu kısaca tanıtınız/ amacınıda belirtiniz:

B02.8 Bölüm Değerlendirmeleri ve Özet

Dijital ve küresel bir dünyada yaşıyoruz

1.Temel Kavramlar 2. ÆÍlemler

Öğretim planındaki AKTS

K12NET Eğitim Yönetim Sistemi

Dış Ticaretin Finansmanı ve Muhasebesi (LOJ 310) Ders Detayları

ACENTE PORTAL QUICKRES/TROYA ACENTE BAŞVURU KILAVUZU

İŞYERİ STAJ EĞİTİMİ FORMU

DENEY 2: PROTOBOARD TANITIMI VE DEVRE KURMA

Özet şeklinde bilgiler

EBE-368 Veri Tabanı Yönetim Sistemleri SQL

VERİ TABANI YÖNETİM SİSTEMLERİ I

Sketch Up. - Bilgisayar Dersleri 1. 3 Boyutlu Çizimler ve Google

AvivaSA Emeklilik ve Hayat. Fiyat Tespit Raporu Görüşü. Şirket Hakkında Özet Bilgi: Halka Arz Hakkında Özet Bilgi:

Başbakanlık (Hazine Müsteşarlığı) tan:

Firmadaki Mevcut Öğrenme Faaliyetleri 2.2. Aşama

SQL veri tabalarına erişmek ve onları kullanmak için geliştirilmiş bir lisandır.

Oracle Database 11g: Introduction to SQL

Osmancık İsmail Karataş Sağlık Meslek Lisesi

Yandaki resimlerde Excel Pazartesi den başlayarak günleri otomatik olarak doldurmuştur.

Oracle da kullanılan veri tipleri:

Kamu Sermayeli İşletmelerde İyi Yönetişim. Mediha Ağar Dünya Bankası, Kıdemli Ekonomist Dünya Bankası

ORACLE VERĐTABANINDA TABLO ve INDEX SIKIŞTIRMA

(ÇEKAP) Çevresel Kapasitemiz Gelişiyor

Tanıtım Fotografçılığı (GRT 206) Ders Detayları

SQL Tuning El Kitabı

Dünya Çavdar ve Yulaf Pazarı

BULUŞ BİLDİRİM FORMU / APARAT

Kentsel Dönüşüm Uygulamaları (GTM 084) Ders Detayları

ASANSÖR VE ASANSÖR GÜVENLĐK AKSAMLARINDA CE ĐŞARETLEMESĐ

ÖZEL VEGA OKULLARI OYUN SANDIĞIM SORGULAMA ÜNİTESİ BÜLTENİ DİSİPLİNLERÜSTÜ TEMA

Kaç gün staj yapmalıyım

LABORATUVARIN DÖNER SERMAYE EK ÖDEME SİSTEMİNE ETKİSİ. Prof. Dr. Mehmet Tarakçıoğlu Gaziantep Üniversitesi

Türkiye de Dış Ticaret ve Dış Ticaret Finansmanı: İhracattaki Düşüşte Finansman Sıkıntısı Ne Kadar Etkili?

Mimari Anlatım Teknikleri I (MMR 103) Ders Detayları

AVRASYA UNIVERSITY. Ders Tanıtım Formu

KİM OLDUĞUMUZ. Bireyin kendi doğasını sorgulaması, inançlar ve değerler, kişisel, fiziksel, zihinsel, sosyal ve ruhsal sağlık, aileleri,

BQTEK SMS Asistan. Kullanım Kılavuzu. Doküman Versiyon: BQTEK

Risk Yönetimi. Gürcan Banger

Veritabanı Yönetim Sistemleri (Veritabanı Tasarımı) SQL (Structured Query Language)

ASYA DA TÜRK YEMEKLERİ ŞÖLENİ

HÂKİMLER VE SAVCILAR YÜKSEK KURULU HUKUKİ MÜZAKERE TOPLANTILARI PROJE FİŞİ

Türk Dili II (TURK 102) Ders Detayları

0 dan matematik. Bora Arslantürk. çalışma kitabı

Çizelgeleme. Üretim Planlama ve Kontrol 2 Pamukkale Üniversitesi Endüstri Mühendisliği Bölümü

Ağaç işleme makinaları. Quality Guide. Takımın değeri

Deneysel Verilerin Değerlendirilmesi

Avrupa Birliği AVRUPA BİRLİĞİ -67- Bu bölümde Avrupa Birliği hakkında bilgi sahibi olacaksınız. Avrupa Siyasi Haritası

III. STRATEJİ GELİŞTİRME BİRİM YÖNETİCİLERİ TOPLANTISI

İşletim Sistemleri. Hazırlayan: M. Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

MAKİNELERİN YÜKSELİŞİ: Avrupa, mobil işgücü seçeneklerini araştırmaya başlıyor

AVRASYA ÜNİVERSİTESİ

İTÜ GELİŞTİRME VAKFI ÖZEL Dr. NATUK BİRKAN İLKOKULU VE ORTAOKULU. OkulNET Kullanım Kılavuzu

İÇİNDEKİLER BİRİNCİ BÖLÜM

SERMAYE PİYASASI KURULU İKİNCİ BAŞKANI SAYIN DOÇ. DR. TURAN EROL UN. GYODER ZİRVESİ nde YAPTIĞI KONUŞMA METNİ 26 NİSAN 2007 İSTANBUL

BİR SAYININ ÖZÜ VE DÖRT İŞLEM

Proje konularından istediğiniz bir konuyu seçip, hazırlamalısınız.

İşletme Gelişimi Atölye Soruları

TEKNİK RESİM. Ders Notları: Mehmet Çevik Dokuz Eylül Üniversitesi. Görünüşler - 1

Transfer fiyatlandırma:maliyet dağıtım anlaşmalarıve grup içi hizmet giderleri paylaşımı

Modem ve Yerel Ağ Kullanım Kılavuzu

Kızlarsivrisi (3070 m) (27-28 Haziran 2015) Yazı ve fotoğraflar: Hüseyin Sarı

SQL'e Giriş. SELECT Deyimi. SQL Komutları. Yardımcı Deyimler

İstatiksel Analiz ve Enstrümantasyon (MFGE 312) Ders Detayları

ÖĞRENME FAALĠYETĠ GELĠġMĠġ ÖZELLĠKLER

Birden Çok Tabloda Sorgulama (Join)

İçinde x, y, z gibi değişkenler geçen önermelere açık önerme denir.

Yazıcı, Seçenek ve Sehpa Uyumluluğu Kılavuzu. Lazer Yazıcılar

Tasarım Psikolojisi (SEÇ356) Ders Detayları

Güzel Konuşma (Diksiyon) Eğitimi Kursu

Evrak Ekle. Kurum İçi Giden Evrak Ekleme. Kırmızı renker; doldurulması zorunlu alanları ifade etmektedir. İleri Geri tarihli işlem yapılamamaktadır.

M i m e d ö ğ r e n c i p r o j e l e r i y a r ı ş m a s ı soru ve cevapları

Metal Kesme Teorisi (MFGE 541) Ders Detayları

ZA4728. Flash Eurobarometer 196 (Observatory) Country Specific Questionnaire Turkey

8 Oracle da tablo yapısı içinde otomatik artan kolon yoktur. (identity kolon

HÂKİMLER VE SAVCILAR YÜKSEK KURULU

SİRKÜLER. 1.5-Adi ortaklığın malları, ortaklığın iştirak halinde mülkiyet konusu varlıklarıdır.

PROJE TEKLİF FORMU. Haydi birlikte harika bir iş çıkartalım.

HEXAGON studio ġirket Tanıtımı

Transkript:

VIEW LERDE SQL HINT KULLANIMI 1

1. Çalışma Verisi Hazırlama View larda hint kullanımı problemli olabiliyor. Oracle kompleks yapıdaki view lerin içine 'default' olarak hint i yaymıyor. Kompleks view larda hint leri kullanabilmek için global ya da local hint kullanma yöntemleri var. Local hint yöntemi view yazılırken sorguda hint kullanılması şeklinde oluyor. Global hint kullanımını ise yazı içerisinde göreceğiz. Global index denemesi için örnek bazı tablo ve view lar yaratıyoruz: -- D_CCEBI.T1 TABLOSU CREATE TABLE D_CCEBI.T1 SELECT * FROM DBA_OBJECTS; CREATE INDEX D_CCEBI.T1_OBJINFO_IDX ON D_CCEBI.T1( OWNER, OBJECT_NAME ) -- D_CCEBI.T2 TABLOSU CREATE TABLE D_CCEBI.T2 SELECT * FROM DBA_TABLES; CREATE INDEX D_CCEBI.T2_TBLINFO_IDX ON D_CCEBI.T2( OWNER, TABLE_NAME ) -- D_CCEBI.T3 TABLOSU CREATE TABLE D_CCEBI.T3 SELECT * FROM DBA_INDEXES; CREATE INDEX D_CCEBI.T3_INDXINFO_IDX ON D_CCEBI.T3( OWNER, TABLE_NAME ) -- D_CCEBI.T_VIEW (D_CCEBI.T1, D_CCEBI.T2 VE D_CCEBI.T3 BIRLESIMI) CREATE OR REPLACE VIEW D_CCEBI.T_VIEW SELECT T1.OWNER, T2.TABLE_NAME, T3.INDEX_NAME FROM WHERE D_CCEBI.T1, D_CCEBI.T2, D_CCEBI.T3 T1.OWNER = T2.OWNER AND T1.OBJECT_NAME = T2.TABLE_NAME AND T2.OWNER = T3.OWNER AND T2.TABLE_NAME = T3.TABLE_NAME; -- D_MUTCELIK.T1 TABLOSU CREATE TABLE D_MUTCELIK.T1 SELECT * FROM DBA_INDEXES; CREATE INDEX D_MUTCELIK.T1_INDXINFO_IDX ON D_MUTCELIK.T1( OWNER, TABLE_NAME ) 2

-- D_MUTCELIK KULLANICISINA D_CCEBI.T_VIEW ICIN SELECT HAKKI VERILIYOR GRANT SELECT ON D_CCEBI.T_VIEW TO D_MUTCELIK; -- D_MUTCELIK.M_VIEW (D_MUTCELIK.T1 VE D_CCEBI.T_VIEW BIRLESIMI) CREATE OR REPLACE VIEW D_MUTCELIK.M_VIEW SELECT D.OWNER A1, D.TABLE_NAME A2, D.INDEX_NAME A3, T.OWNER B1, T.TABLE_NAME B2, T.INDEX_NAME B3 FROM D_MUTCELIK.T1 D, D_CCEBI.T_VIEW T WHERE D.OWNER = T.OWNER AND D.TABLE_NAME = T.TABLE_NAME; Tablo ve view lar arasındaki ilişkiyi aşağıda görebilirsiniz: (Dökümana sığması için tabloları biraz ufalttım. Normalde hepsinde 50 civarı sütun var.) 2. Hint verilerek View larda Execution Plan ın Değiştirilmesi Optimizer elindeki verilerden (istatistik, histogram, tablo boyutu, index lerin yapısı vs...) yola çıkarak, maliyeti (cost) en düşük yolu tercih eder. Ama maliyetin düşük olması, her zaman doğru planı kullanmayı garantilemez. Bazı durumlarda düşük cost a rağmen yanlış 3

bir plan seçilmiş olabilir ve bu da ifadenin çok daha uzun süre çalışmasına neden olur. Böyle olursa SQL Hint lerle ifadeye müdahele etmemiz gerekebilir. Hint ler sayesinde öyle çalışma, böyle çalış; index kullanma, tabloya full git; ya da full yerine index kullan gibi çeşit çeşit belirtme yapabiliriz. Yalnız hint leri view larla kullanmak daha zordur. Çünkü siz belirtmediğiniz sürece, SQL hint lerin alt nesnelere (tablo ya da view lara) nüfuz etme kabiliyeti yoktur. Şimdi hint lerin etkisiyle ilgili bazı testler yapacağız. Önce herhangi bir müdahelede bulunmadan planın ilk hâline bakıyoruz: SELECT * FROM D_MUTCELIK.M_VIEW; 0 SELECT STATEMENT 37 8103 179 (3) 00:00:03 * 1 HH JOIN 37 8103 179 (3) 00:00:03 * 2 HH JOIN 1105 146K 81 (3) 00:00:01 * 3 HH JOIN 1521 126K 46 (3) 00:00:01 4 TABLE ACCESS FULL T3 4550 226K 34 (0) 00:00:01 5 INDEX FT FULL SCAN T2_TBLINFO_IDX 6334 210K 11 (0) 00:00:01 6 TABLE ACCESS FULL T1 4480 223K 34 (0) 00:00:01 7 INDEX FT FULL SCAN T1_OBJINFO_IDX 74859 6067K 97 (2) 00:00:02 Hint vererek bu planı değiştirmeye çalışalım: SELECT /*+INDEX( M_VIEW T3_INDXINFO_IDX) */ * FROM D_MUTCELIK.M_VIEW; 0 SELECT STATEMENT 37 8103 179 (3) 00:00:03 * 1 HH JOIN 37 8103 179 (3) 00:00:03 * 2 HH JOIN 1105 146K 81 (3) 00:00:01 * 3 HH JOIN 1521 126K 46 (3) 00:00:01 4 TABLE ACCESS FULL T3 4550 226K 34 (0) 00:00:01 5 INDEX FT FULL SCAN T2_TBLINFO_IDX 6334 210K 11 (0) 00:00:01 6 TABLE ACCESS FULL T1 4480 223K 34 (0) 00:00:01 7 INDEX FT FULL SCAN T1_OBJINFO_IDX 74859 6067K 97 (2) 00:00:02 Plan değişmiyor. Çünkü hint in kompleks yapılarda aşağıya işleme imkanı yok(muş). Fakat aşağıdaki gibi yazarsanız, hint leri kabul ettirebiliyorsunuz: SELECT /*+INDEX( M_VIEW.D T1_INDXINFO_IDX) FULL( M_VIEW.T.T1) FULL( M_VIEW.T.T2 ) INDEX( M_VIEW.T.T3 T3_INDXINFO_IDX) */ * FROM D_MUTCELIK.M_VIEW; 4

--------- --------- 0 SELECT STATEMENT 37 8103 2492 (1) 00:00:30 1 TABLE ACCESS BY INDEX ROWID T3 1 51 2 (0) 00:00:01 2 NESTED LOOPS 37 8103 2492 (1) 00:00:30 * 3 HH JOIN 154 25872 2337 (1) 00:00:29 * 4 HH JOIN 4601 381K 2104 (1) 00:00:26 5 TABLE ACCESS BY INDEX ROWID T1 4480 223K 2051 (1) 00:00:25 6 INDEX FULL SCAN T1_INDXINFO_IDX 4480 29 (0) 00:00:01 7 TABLE ACCESS FULL T2 6334 210K 52 (0) 00:00:01 8 TABLE ACCESS FULL T1 74859 6067K 232 (1) 00:00:03 * 9 INDEX RANGE SCAN T3_INDXINFO_IDX 2 1 (0) 00:00:01 --------- Açıklamak için INDEX( M_VIEW.T.T3 T3_INDXINFO_IDX ) hint inden yola çıkalım. Aslında hint ile yaptığımız işlem şöyle oluyor: M_VIEW içinde T diye bir view ya da tablo var. T diye anılan tablo ya da view içinde T3 diye bir tablo var. T3 tablosunda T3_INDXINFO_IDX diye bir index var; SQL i çalıştıracağın zaman bunu kullan. Burada T olmasının nedeni, M_VIEW i tanımlarken alias kullanmamızdan kaynaklanıyor. D_MUTCELIK.M_VIEW i hatırlarsak; CREATE OR REPLACE VIEW D_MUTCELIK.M_VIEW SELECT D.OWNER A1, D.TABLE_NAME A2, D.INDEX_NAME A3, T.OWNER B1, T.TABLE_NAME B2, T.INDEX_NAME B3 FROM D_MUTCELIK.T1 D, MARDATA.T_VIEW T WHERE D.OWNER = T.OWNER AND D.TABLE_NAME = T.TABLE_NAME; Hint lerde tablo/view isimleri değil, alias tanımları önemli oluyor. Eğer view içindeki alt tablo/view lara yönelik hint leri kullanacaksanız, alias lara göre yazmanız gerekiyor. Son olarak belirtmemde fayda var; Oracle Global Index leri tercih etmemizi öneriyor. Fakat view içinde view, onun içinde bir başka view, sonra yine bir alt view gibi durumlarda, bunu yapmak gerçekten güç. Bu yüzden view ları olabildiğince basit tutup, içiçe yapılardan sakınmak hem optimizer hem de bizlerin işini kolaylaştıracaktır. 3. Kaynak Oracle9i Database Performance Tuning Guide and Reference Release 2 / Optimizer Hints http://download.oracle.com/docs/cd/b10501_01/server.920/a96533/hintsref.htm 5