Change Font Size

Change Screens

Change Profile

Change Layouts

Change Direction

Change Menu Styles

Cpanel
Perşembe, 22 Nisan 2010 14:39

Daha hızlı index oluşturmak

Yazan&Gönderen  Yusuf Arslan
Bu Öğeyi Derecelendir
(6 Oylar)



Büyük tablolar için indeks yaratılması çoğu zaman dba ‘lar için problemdir çünkü tablodaki kayıt sayısı fazla olduğunda indeksin yaratılmasıda zaman alır. Bu süreçte veritabanı sunucusu indeksin yaratılmasıyla da meşgul olacağından veritabanının genel performansında bir düşüş meydana gelir. Buna göre indeks oluşturken veritabanının performansını düşüren 3 ana unsur bulunmaktadır. Bunlardan ilki yazının başında da belirtiğim gibi indeks yaratılacak tablodaki kayıt sayısıdır. Tablodaki kayıt sayısı arttıkça oluşturmak istediğiniz indeksin büyüklüğüde artar. İkinci unsur, indeksi oluştururken yapılan işlemin kaydının redolog ‘a yazılmasıdır. 10 milyon kayda sahip bir tabloya indeks oluşturmak istediğinizde, işlem süresince 10 milyon kez redolog dosyalarına yapılan işlemin logu da yazılır. Üçüncü dikkat etmemiz gereken unsur indeksi oluşturulurken bu işlem için kaç tane process ‘in meşgul olacağının belirtilmesidir. Sunucu donanımızın kapasitesine göre process sayısını arttırıp azaltabiliriz.

Yukarıda anlattıklarım haricinde daha hızlı indeks oluşturmak için kendinize session bazlı bir sort area size oluşturabilirsiniz. Böylece indeks oluşturlurken sort işlemi sırasında daha fazla memory alanıyla çalışacağınızdan indeksin oluşturulmasıda buna göre kısa zaman alacaktır. Şimdi aşağıda TEST kullanıcısına ait DENEME isimli tablo üzerinde DENEME_IDX isimli bir indeks oluşturalım.

Öncelikle sqlplus ‘a bağlanalım.

sqlplus / as sysdba

Session bazlı kendimize özel bir work area size oluşturalım.

SQL> alter session set workarea_size_policy=manual;

Daha sonra kendimize 40Mb ‘lık bir memory alanı tanımlayalım.

SQL> alter session set sort_area_size=41943040;

Manuel olarak work area size tanımladıktan sonra artık indeksi oluşturmaya hazırız. Bu noktada dikkat etmemiz gereken nokta indeksi oluşturken sistemin kesintiye uğramaması için ONLINE parametresini vermemiz gerektiği. Eğer komut içersinde ONLINE parametresini vermezsek, indeks oluşturlurken tablo kilitli kalacağından çalışan sisteminiz kesintiye uğrayabilir. (ONLINE parametresi sadece Oracle Database Enterprise Edition ile desteklenmektedir.)

SQL> create index test.deneme_idx on test.deneme(kolon1, kolon2) nologging, parallel, online;

İndeksimiz oluşturuldu. Komut içersinde “nologging” parametresini kullanarak yapılan işlemin redolog ‘da kaydının tutulmasını engelledik. “Parallel” parametresiyle index ‘in birden fazla process tarafından oluşturmasını sağladım, böylece yapılan işlemin süresi daha da kısaldı. Bu noktada veritabanından gerçekleştirilecek işlem için kaç tane paralel process açılması gerektiğine veritabanı parametrelerinden “parallel_threads_per_cpu” karar veriyor. Eğer bu parametre üzerinde herhangi bir değişiklik yapmadıysanız Oracle indeks oluşturulması için arka planda 2 adet thread çalıştıracaktır.

 

 

Son Düzenleme Cuma, 10 Aralık 2010 12:37
Yusuf Arslan

Yusuf Arslan

Oracle Open Source

1985 Tokat/Reşadiye doğumluyum.İlk-orta-lise hayatını Amasya/Suluova ilçesinde geçirdim.Sakarya Üniversitesi Bilgisayar Mühendisliği bölümünü bitirdikten sonra kariyerime Oracle,SAP alanlarında danışmanlık vermek üzere devam etmekteyim. Kullandığım,bildiğim teknolojiler ve diller; SAP BO Oracle BI Applications Oracle Data Mining Oracle BI Reports(http://www.iski.gov.tr/web/statik.aspx?KID=1000717) Oracle Data Integrator Oracle BI Publisher(XML Publisher) Oracle Database 10g Oracle Mapviewer PL/SQL,Java,Oracle JDeveloper,Oracle Forms-Reports,C# Data warehouse process optimization Database system implementation Using encoding for security systems Software development, test and deployment Presentation and communication skills Bu adreslerden de bana ulaşabilirsiniz, [email protected] https://datawarehouse.gen.tr/ http://www.arslanyusuf.blogspot.com/ http://yusufarslaneng.blogspot.com/ http://twitter.com/yusars http://tr.linkedin.com/pub/yusuf-arslan/27/35b/57b

Website: arslanyusuf.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 Daha hızlı index oluşturmak