SQL Server da Index Kavramı ve Kullanımı -1

Merhaba Arkadaşlar,

Bu ve bundan sonraki birkaç yazımda sizlere SQL Server Veri tabanları için çok önem arz eden Index kavramını detaylı bir şekilde anlatmaya çalışacağım. SQL Serverda kullanılan Indexler ve bunların örneklerini yine ekran görüntüleriyle sizlere anlatacağım. Veritabanı açısından Index in anlamı Milyonlarca kayıt içerisinde aranan kaydın çok kısa sürede bulmaya çalışmaktır. Bunun nasıl gerçeklendiğine örnek çıktılarla hep beraber bakalım.

SQL Server veritabanında Index kullanımı en çok performans, hız ve bellek tasarrufu gerektiren ortamlarda ortaya çıkar. Milyonlarca yada Milyarlarca kaydın olduğu bir tabloda bir kaydı Index kullanarak daha az kayıt okuyup daha kısa sürede arayıp bulabiliriz. Şimdi Index kullanımını günlük hayattan kütüphane örneğini vererek daha net anlamanızı sağlamaya çalışacağım.

Örnek Senaryo: Üniversitenin 3 Katlı Kütüphanesinde yaklaşık 100.000 kitap olduğunu varsayalım. Ben bir kitap arıyorum, kitabın adını yazarını biliyorum fakat 3 katlı kütüphanede ki kitap rafları ve kitaplar rastgele yerleştirilmiş. Bu durumda ben aradığım kitabı bulmam için neredeyse tüm kitaplığı taramam lazım. Yapay zeka alanında bu durum için Körüne arama metodu denmekte, Veritabanı kavramlarında ise bu yöntem Full Table Scan olarak adlandırılır.

Bahsettiğim bu örneğin ne kadar Saçma ve Zahmet verici olduğunu anlamışsınızdır. Bu yönteme aslında yöntem bile denilemez ve kimse tarafından da kullanılmaz. Peki şimdi bu yöntemin tersini ve doğru olan senaryoyu yazalım. Yukardaki Senaryo Index kullanımı olmayan Veritabanları için örnek bir senaryo olarak kullanılmıştır.

Doğru Senaryo ise şu şekilde olmalıdır. Kütüphanenin 3 katında da bulunan tüm raflar Harf sırasına göre yada Belli bir sayı dizisiyle dizilebilir. Harf sırasına göre dizersek Alfabemizde 29 harf bulunduğuna göre her kata ait 10 harf verilecek. Ayrıca her kata ait 10 harf o katta bulunan raf sayısına göre de bölüştürüldüğü zaman arama çok kolaylaşacaktır.

Bir öğrenci Atatürk’e ait olan Nutuk kitabını aramak istediği zaman N harfinin bulunduğu kata direk gidecek. Dolayısıyla 2 katı eleyerek N harfinin bulunduğu kata gidiyoruz burdan da N harfinin bulunduğu Raf veya Raflara yönelip ordan kolayca Nutuk kitabını buluruz. Bu bahsettiğim mantıklı ve doğru olan metod ise SQL Server veritabanları açısından Index kullanımı için kullanılan senaryodur.

Yukarıdaki senaryodan da anlaşılacağı üzere Doğru bir şekilde oluşturulan Index veritabanı içinde bulunan milyonlarca kayıt içerisinde aramış olduğumuz kaydı çok kısa sürede getirip aramayı yapan kişiye kolaylık sağlarken aynı zamanda daha az kayıt okuyarak hedef kayda ulaştığımız için işletim sistemi kaynaklarını da efektif kullanmış oluruz. Şimdi işin biraz teknik kısmına girerek Index in nasıl çalıştığına bakalım böylece Index mantığını daha iyi kavramış olacağız.

Indexlerin Çalışma Şekli

Index lerin çalışma şekli Programlama dillerinde çokça kullanılan Veri yapılarının en önemli konularından birisi olan Ağaç mantığıdır. Tree olarak adlandırılan bu yapının çok çeşidi olmasına rağmen biz burada SQL Server ın kullanmış olduğu B-Tree (Balanced Tree –Dengeli Ağaç) yi inceleyeceğiz. B-Tree için örnek bir görünüm aşağıdaki gibidir.

Veri yapılarından da bildiğimiz üzere Tree yapılarının en üstünde Root yani kök bulunur. Root un hemen altında genelde bir veya birden çok Intermediate level dediğimiz ara katmanlar bulunur. Eğer Intermediate level diye gördüğümüz katmanın altında bir katman yoksa bu durumda Intermediate level leaf yani yaprak olarak adlandırılır. Root-leaf kavramı yine programlama kavramları içindeki parent-child ilişkisiyle benzer ilişkiye sahiptir. Şimdi canlı bir örnek yaparak Index kavramının dayandığı B-Tree mantığını daha rahat görelim. 1 den 200 e kadar numaralandırılmış olan kutu kümesi içinde 150 numaralı kutuya ulaşmak istiyoruz. Eğer Index kullanmadan arama yaparsak 1 den 150 ye kadar tüm kutuların numarasına bakılarak bumu değil mi diye bilgisayar sorgulaması gerekir. Ancak aşağıdaki görüntüde ki gibi B-Tree olarak sıralayıp aradığımızda daha kısa sürede buluruz.

Yukarda ki gibi 150 ye baktığımız zaman 28 okumada 150 numaralı kutuyu buluyoruz. Önce 150 numarayı kökteki 1 nolu kutuyla kıyaslıyoruz ve sağdaki 2 nolu kutuya geçiyoruz. Burdan tekrar kıyas yapıp sol taraftaki 3 nolu kutuya geçiyoruz son olarak tekrar kıyas yapıp sağ taraftaki 4 numaralı kutuda 150 numaralı kutuyu arıyoruz.  4 numaralı kutuda 25 kayıt içinde 150 numaralı kaydı bulmaya çalışıyoruz. Önceki örnekte 150 okuma ile bulduğumuz kaydı bu defa 28 defa da buluyoruz. Hem belleği yormuyoruz hemde hızlı bir şekilde istediğimiz kayda erişiyoruz. Şimdi Türkiye Cumhuriyeti Vatandaş tablosunu hayal edelim ve bu tabloda Mehmet Salih Deveci kaydını arayalım. M harfine kadar bütün harfleri es geçip aşağıdaki gibi direk M harfine yöneliyorum. Böylece M harfine kadar olan milyonlarca kaydı okumadığımız için daha kısa sürede aramayı tamamlıyoruz.

 

Index Çeşitleri

Genel itibariyle Index çeşitleri aşağıdaki gibidir.

Biz bunlardan en önemli olan Clustered Index ve Non-Clustered Index leri önümüzdeki yazılarda detaylı bir şekilde inceliyor olacağız.

Son olarak şunu belirtmek istiyorum. Veritabanı üzerinde gereksiz yere Index kullanımı zararlı olabilir. Bunu performans açısından efektif kullanmak çok önemlidir. Örneğin Veritabanı üzerinde çok sık kullanılmayan yada Okuma oranı yazma oranından çok çok düşük olan Index lerin silinmesi performans açısından daha yararlı olacaktır.

Tersi durumda ise Veritabanı üzerinde bir  tabloda çok sayıda okuma yapılıyor ve datalar çoğunlukla sabitse böylesi bir durumda da Index kullanmak performans açısından çok gereklidir.

Böylece bu yazımın sonuna gelmiş bulunmaktayım bir sonraki yazımda SQL Server da Index konusuna devam edeceğim. Tekrar Görüşmek ümidiyle Esen Kalın…

 

Oracle Exadata SQL Server Goldengate Weblogic EBS ve Linux konusunda aşağıdaki konularda 7×24 Uzman Danışmanlara yada Eğitimlere mi İhtiyacınız var [email protected] adresine mail atarak Bizimle iletişime geçebilirsiniz.

– Oracle Veritabanı Danışmanlığı
– Oracle Veritabanı Bakım ve Destek
– Exadata Danışmanlığı
– Exadata Bakım ve Destek
– SQL Server Veritabanı Danışmanlığı
– SQL Server Veritabanı Bakım ve Destek
– Goldengate Danışmanlığı
– Goldengate Bakım ve Destek
– Linux Danışmanlığı
– Linux Bakım ve Destek
– Oracle EBS Danışmanlığı
– Oracle EBS Bakım ve Destek
– Weblogic Danışmanlığı
– Weblogic Bakım ve Destek
– Oracle Veritabanı Eğitimleri
– Oracle VM Server Danışmanlığı
– Oracle VM Server Bakım ve Destek
– Oracle EPPM Danışmanlığı
– Oracle EPPM Bakım ve Destek
– Oracle Primavera Danışmanlığı
– Oracle Primavera Bakım ve Destek
– Oracle Eğitimleri
– SQL Server Eğitimleri
– Goldengate Eğitimleri
– Exadata Eğitimleri
– Linux Eğitimleri
– Oracle EBS Eğitimleri
– Oracle VM Server Eğitimleri
– Weblogic Eğitimleri
– Oracle EPPM Eğitimleri
– Oracle Primavera Eğitimleri

About Mehmet Salih Deveci

I am Founder of SysDBASoft IT and IT Tutorial and Certified Expert about Oracle & SQL Server database, Goldengate, Exadata Machine, Oracle Database Appliance administrator with 10+years experience.I have OCA, OCP, OCE RAC Expert Certificates I have worked 100+ Banking, Insurance, Finance, Telco and etc. clients as a Consultant, Insource or Outsource.I have done 200+ Operations in this clients such as Exadata Installation & PoC & Migration & Upgrade, Oracle & SQL Server Database Upgrade, Oracle RAC Installation, SQL Server AlwaysOn Installation, Database Migration, Disaster Recovery, Backup Restore, Performance Tuning, Periodic Healthchecks.I have done 2000+ Table replication with Goldengate or SQL Server Replication tool for DWH Databases in many clients.If you need Oracle DBA, SQL Server DBA, APPS DBA,  Exadata, Goldengate, EBS Consultancy and Training you can send my email adress [email protected].-                                                                                                                                                                                                                                                 -Oracle DBA, SQL Server DBA, APPS DBA,  Exadata, Goldengate, EBS ve linux Danışmanlık ve Eğitim için  [email protected] a mail atabilirsiniz.

4 comments

  1. Buy Cheap Priligy Online Uk cialis price Dapoxetina Se Puede Tomar Con Alcohol Buy Retin A Without Rx

  2. Thanks for your post. I would love to say this that the very first thing you will need to carry out is check if you really need repairing credit. To do that you need to get your hands on a duplicate of your credit report. That should never be difficult, because government mandates that you are allowed to receive one cost-free copy of your actual credit report per year. You just have to inquire the right persons. You can either look at website owned by the Federal Trade Commission or even contact one of the main credit agencies instantly.

Leave a Reply

Your email address will not be published. Required fields are marked *