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.

Oracle PL/SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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.

Oracle PL/SQL
1
2
3
4
5
6
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.

Oracle PL/SQL
1
2
3
4
5
6
7
8
9
10
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.

Oracle PL/SQL
1
2
3
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.

Oracle PL/SQL
1
2
3
4
5
6
7
8
9
10
11
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..

Oracle PL/SQL
1
SQL> CREATE INDEX IDX_ISLEM_LOG_02_LOGIP_r ON ISLEM_LOG_02(LOG_IP);


Share this:

  • LinkedIn
  • Twitter

Konuyla ilgili diğer yazılar

  • Vmware Redhat üstüne Oracle kurulumu
  • SQLPLUS da search tab ve yukarı aşağı tuşlarının kullanıma açılması
  • Restore işleminde datafile pathlerinin yerinin değiştirilmesi
  • Oracle veritabanını başka bir alana taşıma
  • Oracle Table Redefinition

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

Comments

  1. AvatarAhmet KILINÇ says

    Thursday May 31st, 2012 at 07:10 PM

    Merhaba,

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

  2. AvatarBugra Canbakal says

    Friday June 1st, 2012 at 07:09 AM

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

  3. AvatarMuhammet 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. AvatarBugra Canbakal says

    Tuesday June 5th, 2012 at 09:12 AM

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

  5. Avatarİbrahim KURT says

    Tuesday June 26th, 2012 at 06:39 AM

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

Leave a Reply Cancel 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.