Bugra Canbakal's Oracle Blog

  • Home
  • Contact
  • SITE MAP
You are here: Home / Oracle / Virtual Indexes

Virtual Indexes

Mayıs 29, 2012 By Bugra Canbakal 5 Comments

1.AMAÇ VE KAPSAM

Productıon olarak çalışan veritabanlarında querylere göre index oluşturup performans testleri yapmak oldukça riskli bir çalışmadır, bundan dolayı oracle bize virtual index özelliğini sağlamış. Bu özellik sayesinde index oluşturmadan querylerinizin performanslarını kontrol edebilirsiniz ve  bu esnada  uygulamadan gelen quer

ylerin execution planları bozulmayıp eski çalışmalarına devam edicektir.

2.UYGULAMA

2.1. Tablomuzu oluşturalım.

SQL> CREATE TABLE BCANBAKAL.ISLEM_LOG_02
(
  LOG_ID               VARCHAR2(40 BYTE)        NOT NULL,
  LOG_YAPAN            VARCHAR2(40 BYTE),
  LOG_YAPILAN          VARCHAR2(40 BYTE),
  LOG_ISLEM_KATEGORI   VARCHAR2(25 BYTE),
  LOG_ISLEM            VARCHAR2(255 BYTE),
  LOG_ISLEM_SONUC      CHAR(1 BYTE),
  LOG_ACIKLAMA         VARCHAR2(1000 BYTE),
  LOG_SON_ISLEM_DAMGA  VARCHAR2(20 BYTE),
  LOG_IP               VARCHAR2(15 BYTE)
)
TABLESPACE USERS
PCTUSED    0
PCTFREE    10
INITRANS   1
MAXTRANS   255
STORAGE    (
            INITIAL          64K
            NEXT             1M
            MINEXTENTS       1
            MAXEXTENTS       UNLIMITED
            PCTINCREASE      0
            BUFFER_POOL      DEFAULT
           )
LOGGING
NOCOMPRESS
NOCACHE
NOPARALLEL
MONITORING;

 

2.2. Cost değeri yüksek olsun diye tablomun içine biraz data gömdüm.

SQL> select count(*) from bcanbakal.islem_log_02;

  COUNT(*)
----------
    632053
1 row selected.

2.3. Simdi LOG_IP kolonu üstünden bir sorgu çekip costunu görelim.

SQL> SQL> SET AUTOTRACE TRACEONLY explain statistics

SQL> SELECT * FROM bcanbakal.ISLEM_LOG_02 WHERE LOG_IP ='95.9.29.232';

293 rows selected.

Execution Plan
----------------------------------------------------------
   0       SELECT STATEMENT Optimizer Mode=ALL_ROWS (Cost=28769 Card=87 Bytes=94 K)
   1    0    TABLE ACCESS STORAGE FULL BCANBAKAL.ISLEM_LOG_02 (Cost=28769 Card=87 Bytes=94 K)

 

2.4. Nosegment opsiyonuylan ISLEM_LOG_02 tablosu üstünde bir virtual index olusturalim.

SQL> CREATE INDEX IDX_ISLEM_LOG_02_LOGIP ON ISLEM_LOG_02(LOG_IP) NOSEGMENT;

Index Created

 

2.5. Olusturmus oldugumuz virtual indexi kullanabilmek için Oracle’ın underscore parametrelerinden biri olan _use_nosegment_indexes aktif hale getirmemiz gerekiyor.

SQL> ALTER SESSION SET "_use_nosegment_indexes" = TRUE;

SET AUTOTRACE TRACEONLY explain statistics

SELECT * FROM bcanbakal.ISLEM_LOG_02 WHERE LOG_IP ='95.9.29.232';

Execution Plan
----------------------------------------------------------
   0       SELECT STATEMENT Optimizer Mode=ALL_ROWS (Cost=2 Card=87 Bytes=94 K)
   1    0    TABLE ACCESS BY INDEX ROWID BCANBAKAL.ISLEM_LOG_02 (Cost=2 Card=87 Bytes=94 K)
   2    1      INDEX RANGE SCAN BCANBAKAL.IDX_ISLEM_LOG_02_LOGIP (Cost=1 Card=87)

 

2.6. Virtual indeximiz gerçek olmaya hak kazandı, sql sorgusunun costu 28769 dan 2 ye düştü.Son olarak indeximizi oluşturuyoruz..

SQL> CREATE INDEX IDX_ISLEM_LOG_02_LOGIP_r ON ISLEM_LOG_02(LOG_IP);


Bunu paylaş:

  • Linkedln üzerinden paylaşmak için tıklayın (Yeni pencerede açılır) LinkedIn
  • X'te paylaşmak için tıklayın (Yeni pencerede açılır) X

Filed Under: Oracle Tagged With: index, oracle, virtual index

Comments

  1. Ahmet KILINÇ says

    Mayıs 31, 2012 at 7:10 pm

    Merhaba,

    Güzel bir yazı olmuş, eline sağlık.

  2. Bugra Canbakal says

    Haziran 1, 2012 at 7:09 am

    Merhaba Ahmet hocam işinize yaradığına sevindim.

  3. Muhammet UÇAR says

    Haziran 5, 2012 at 8:04 am

    Öğretici ve faydalı bir makaleyi paylaşmanız çok güzel. Başarılarının devam etmesi dileğiyle.

  4. Bugra Canbakal says

    Haziran 5, 2012 at 9:12 am

    Yazıyı beyendiğinize sevindim, teşekkürler

  5. İbrahim KURT says

    Haziran 26, 2012 at 6:39 am

    Elinize sağlık çok güzel bir yazı olmuş.

Bir Cevap YazınCevabı iptal et

This site uses Akismet to reduce spam. Learn how your comment data is processed.

About Me



Dil:

  • English
  • Turkish

Kategoriler

  • Oracle
    • RAC – Real Application Cluster
    • RMAN
    • Single Node
    • Standby – Dataguard
  • OS
    • Linux

Blogroll

  • Emre Baransel
  • Gökhan Atıl
  • H. Tonguc Yılmaz
  • Kamil Türkyılmaz
  • Tanel Poder
  • Turkce Oracle
  • Turkish Oracle User Group
  • Uwe Hesse
  • Zekeriya Beşiroğlu

Arşivler

  • Nisan 2014
  • Mart 2014
  • Ağustos 2013
  • Haziran 2013
  • Mart 2013
  • Ocak 2013
  • Aralık 2012
  • Kasım 2012
  • Temmuz 2012
  • Haziran 2012
  • Mayıs 2012
  • Ocak 2012
  • Kasım 2011
  • Ekim 2011
  • Ağustos 2011
  • Temmuz 2011
  • Haziran 2011
  • Şubat 2011
  • Ocak 2011
  • Aralık 2010
  • Kasım 2010
  • Haziran 2010
OCP
Privacy & Cookies: This site uses cookies. By continuing to use this website, you agree to their use.
To find out more, including how to control cookies, see here: Çerez Politikası

[footer_backtotop]

Copyright © 2010-2014 Bugra Canbakal. All rights reserved.