Bugra Canbakal's Oracle Blog

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

Virtual Indexes

10:51 AM 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);


Share this:

  • Click to share on LinkedIn (Opens in new window) LinkedIn
  • Click to share on X (Opens in new window) X

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

Comments

  1. Ahmet KILINÇ says

    Thursday May 31st, 2012 at 07:10 PM

    Merhaba,

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

  2. Bugra Canbakal says

    Friday June 1st, 2012 at 07:09 AM

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

  3. Muhammet UÇAR says

    Tuesday June 5th, 2012 at 08: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

    Tuesday June 5th, 2012 at 09:12 AM

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

  5. İbrahim KURT says

    Tuesday June 26th, 2012 at 06:39 AM

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

Leave a ReplyCancel reply

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

About Me



Language:

  • English
  • Turkish

Categories

  • 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

Archives

  • April 2014
  • March 2014
  • August 2013
  • June 2013
  • March 2013
  • January 2013
  • December 2012
  • November 2012
  • July 2012
  • June 2012
  • May 2012
  • January 2012
  • November 2011
  • October 2011
  • August 2011
  • July 2011
  • June 2011
  • February 2011
  • January 2011
  • December 2010
  • November 2010
  • June 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: Cookie Policy

[footer_backtotop]

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