SQL de Index Kullanımı
Yapılandırılmış sorgu dili (SQL), bilgileri ilişkisel bir veri tabanında depolamak ve işlemek için kullanılan bir programlama dilidir. Bu şekilde oluşturulmuş veri tabanı yönetim sistemlerinde ortalama olarak %95 okuma %5 yazma işlemleri yapılmaktadır. Bu durum göz önünde tutulduğunda okuma performansını artıracak her türlü işlem sunucu performansını arttırmaktadır.
Veritabanında bulunan tablolardaki veriler sorgulandığında daha az veri okuyarak çok daha hızlı bir şekilde veriye ulaşmayı amaçlayan ve işlem sonucunu daha hızlı döndüren yapılara ise “index” denir. Indexleme kullanarak tablonun tamamını okumaktansa oluşturacağımız index key aracılığı ile okumak istediğimiz kayda ulaşabilmemiz daha hızlı bir şekilde mümkün olur.
Nasıl Index Oluşturulur ?
Index’ler veri sorgusunu hızlandırmak amacıyla kullanılan özel veri yapılarıdır, indexlenmek istenen tablodaki istenilen sütun verilerini (pointer) işaretler. Aşağıdaki kodda index_name ismi ile table_name tablosunun index_col1 sütunu için index oluşturulmuştur.
Verimiz belirlediğimiz index yapısına göre işaretlenir ve sıralı bir biçimde tutulur. Index’imiz üzerinden sorgu gerçekleştirdiğimizde de tüm veriler üzerinden değil indexler üzerinden bir okuma işlemi gerçekleştirmiş ve daha hızlı bir veri okuması yapmış oluruz.
Oluşturulan index silinmek istendiğinde ise aşağıdaki komut kullanılır:
Index Ne Zaman Kullanılmalı ?
Sorgularda beklenilenden daha geç cevap geri dönüyorsa,
· -Sorgulardaki koşul içerisinde sürekli kullanılan bir sütun varsa,
· Bir sütun geniş bir değer aralığı içeriyorsa,
· Sütunda çok sayıda NULL içermiyorsa,
· Bir veya daha fazla sütunda sıklıkla WHERE veya join işlemi birlikte kullanılıyorsa
Bütün tabloyu taramak, tablo yapısı büyüdükçe sorgunun sonuca ulaşmasını geciktirir ve daha fazla zaman alır. Oluşan bu sorgu işleminde zaman maliyeti sorununu çözmek için index kullanılmaktadır.
Index Kullanırken Nelere Dikkat Edilmeli ?
Gereksiz index kullanımına dikkat etmeliyiz çünkü gereksiz yük getirecektir. Veriyi yazarken ekstra bir işlem adımı eklemiş oluyoruz ve yazma hızımızı azaltacaktır.
Okuma oranı yazma oranından düşük olan durumlarda indexleri silmek gereksiz yük ve performans kaybını ortadan kaldıracaktır.
Index kullanımının çokça yer aldığı tablolar veri tabanına ek bir yüke sebep olmaktadır çünkü index işlemi disk alanında yer kaplar. Bu koşul tabloların çok büyüdüğü durumlarda dikkat edilmesi gereken hususlardandır.
Index Nasıl Çalışır ?
100.000 satırlık kayıt bulunan “user” tablosunda “email” sütunu ile sorgu yapmamız gerektiği durumda sorguyu oluşturduğumuzda “email” sütununun tamamını taraması gerekmektedir.
Index kullanımı ile “email” sütununda sorgu işlemi yapıldığında ise aşağıdaki gibi sıralı bir ifade kullanarak sorgu işlemini gerçekleştirmektedir.
Veri sayısı arttıkça index kullanımı olmadan okuma işlemi de aynı şekilde artarken index kullanımı ile veri sayısı her 2’ye katladığında okuma işlemi birer birer artmıştır, böylece veriye oranla okuma sayısı düşük seviyede tutulmuştur.
SQL Üzerinden Uygulamalı Index Kullanımı:
Sql tablosu oluşturulduğunda primary key olarak ID değeri verilmez ise düzensiz page leri tarayarak sorgu işlemi yaparak resimde görüldüğü gibi table scan işlemi uygular.
Primary key verildiğinde ise clustred index scan işlemi yapar.
Index işlemi kullanmadan 100.000 satırlık veri olan tablodan isim araması yaptığımızda 1965 page okuması yapmış her page 8 byte olduğu için 15351kb’lık okuma yaptığı hesaplanmıştır.
Tablonun “SP_SPACEUSED ‘tablo_ismi’” komutu ile toplam 15752 kb’lık alan kullanıldı göz önüne alındığında neredeyse tüm veriyi okuduğu değerlendirmesi yapılabilmektedir.
Aşağıdaki kodda ise ile FirstName sütununa IX1 ismi ile index oluşturulmuştur:
Aynı select sorgusu çalıştırılmış ve 6 page okuması ile 327 kat daha hızlı okuma yapılmıştır.
Yapılan isim sorgusu sonucunda ismin yer aldığı satırdaki tüm bilgiler elde edilirken index kullanımı ile birlikte key lookup işlemi de yapılmıştır. Key Lookup işlemi arama sonucunda isim elde edilip ismin id’si ve daha sonra da o id’ye ait bilgilerin verilmesi işlemidir.
Oluşturduğumuz index de included columns ekleyerek tekrardan key lookup işlemi yapmasını engelleyerek artık index te var olan tüm bilgileri vermesini sağlıyoruz ve böylece daha az page okuyarak daha hızlı çalışmaktadır.
Özetle, doğru sütunda doğru included column seçenekleri ile kullanıldığında index kullanımı sorgu performansını oldukça iyileştirmekte ve hızlandırmaktadır.
Seda Mürütsoy
Kategoriler
Son Gönderiler
-
Tarayıcıda Veri Saklama Yöntemleri: LocalStorage, SessionStorage ve Cookie
-
Veriden Anlam Çıkarma
-
Bilgi Teknolojilerinde Çalışan Farkındalığı
-
İşletmelerde Veri Yedeklemenin Önemi
-
The Importance of Data Backup in Businesses
-
Geleceğin İş Dünyasında Hibrit Çalışma: Esneklik ve Verimliliği Bir Arada Sunmak