VERİTABANI ENDEKSİ NEDİR: Nasıl Çalışır ve Ne İşe Yarar?

veritabanı dizini SQL bir veritabanının önemi dizin türleri dizinler

SQL veritabanı indeksleme, veri kayıtlarını kategorilere ayırma ve düzenleme işlemidir. Bir veritabanıyla çalışan herkes, bu özelliğin belirli verileri ararken sağladığı zamandan tasarruf etmekten memnun olacaktır. Bu yazıda, bir veritabanı dizini SQL'in tanımını, türlerini ve bir veritabanı dizininin önemini inceledik. Sürüş keyfi!

Veritabanı İndeksi Nedir?

Veritabanı dizinleri, daha hızlı tablo aramalarını kolaylaştıran veri yapılarıdır. Veritabanı dizinler olmadan çalışmaya devam eder, ancak sorguların sonuç döndürmesi daha uzun sürebilir. Her dizin, karşılık gelen tablodaki bir veya daha fazla sütundaki verilerden oluşan bir anahtar içerir. Veritabanı, bir sorgu dizinli bir tabloya erişim gerektirdiğinde, kayıt almayı hızlandırmak için bir dizin kullanmayı seçebilir.

Bir kullanıcı bir sorgu girdiğinde, sorgu tipik olarak her satırda doğrusal bir arama yapar ve bunlardan herhangi birinin istenen bilgiyi içerip içermediğini kontrol eder. Bu, görevleri tamamlamak için gereken süreyi kısalttığı için üretkenliği artıran bir dizin kullanımıyla basitleştirilmiştir.

Veritabanı İndeks Türleri

Farklı türde veritabanı dizinleri vardır. Veritabanı dizin türleri şunlardır:

1 numara. DBMS'de Birincil Dizin

Birincil veritabanı dizini, iki alanlı, sıralı, sabit uzunlukta bir dosyadır. Birinci alan birincil anahtar olarak işlev görür ve ikinci alan, belirtilen bilgileri hangi veri bloğunun içerdiğini gösterir. Birincil veritabanı dizin girişleri arasında her zaman bire bir yazışma vardır. DBMS'de kullanılan iki farklı ana İndeksleme çeşidi vardır.

  • Yoğun Endeksi
  • Seyrek İndeks

2 numara. DBMS'de İkincil Dizin

Veritabanı yönetim sistemindeki (DBMS) aday anahtar, her giriş için benzersiz bir değere sahip bir alandır. Verileri kümeler halinde gruplamayan bir dizin türüdür. Bir veritabanını iki düzeyde indekslemeye yönelik bu yöntem, ilk eşleme düzeyinin boyutunu en aza indirmek için kullanılır. Bu nedenle, ilk aşama için geniş bir tamsayı aralığı seçilirken eşleme boyutunun kendisi sabit bir şekilde mütevazı kalır.

İndeksleme Ne Yapar?

Sıralanmamış bir tabloyu, sorgular yoluyla arama verimliliğini artıran bir düzene sokmak, indeksleme ile gerçekleştirilir. Dizinlenmemiş tablolar, satırlar arasında doğrusal bir arama gerektirir çünkü sorgu muhtemelen satırların sırasını bilemez ve buna göre kendini optimize edemez. Yani, kriterleri karşılayanları bulmak için sorguların her satırın üzerinden geçmesi gerekecektir. Bu, tahmin edebileceğiniz gibi, oldukça zaman alabilir. 

Veritabanı İndeksi Nasıl Çalışır?

Sorgu performansını iyileştirmek için sorgu koşulları değiştiğinde veritabanı tablosunun kendisini yeniden düzenlemesini beklemek pratik değildir. Aslında olan şey, veritabanının bir veri yapısı endekse cevaben. Bir B-Ağacı muhtemelen kullanılan veri yapısı türüdür. B-Ağacının çeşitli faydaları vardır, ancak kolayca sıralanabilmesi, ihtiyaçlarımız için en önemlisidir. Yukarıda belirtilenler nedeniyle, sıralanmış bir veri yapısının aramamızın etkinliğini artırması şaşırtıcı olmamalıdır.

Veritabanı dizini belirli bir sütun için bir yapı oluşturduğunda, yalnızca o sütunla ilgili bilgileri depoladığını unutmayın; başka sütun dahil edilmemiştir. 

Ayrıca şunu okuyabilirsiniz:

Veritabanı Dizini Oluşturmak İçin İpuçları

Aşağıda bir veritabanı dizini oluşturmak için ipuçları verilmiştir:

1 numara. İş Yüküne Göre İndeks

İşlenmekte olan veri hacmine yanıt olarak verimli bir veritabanı dizini oluşturulabilir. Dizin oluşturma işlemini sahip olduğunuz tablo sayısına dayandırmak yerine (bu, erişimi zorlaştırabilir), belirli terimler için aramaları kolaylaştıran bir veritabanı dizini oluşturmaya odaklanın.

2 numara. Yüklemlerden Yararlanmalısınız

Yüklemlerle bir veritabanı dizini oluşturmak başka bir geçerli seçenektir. Bir yüklem, bir ifadenin doğruluk değerini belirlemek için kullanılan bir tür koşul ifadesidir. Bir veritabanı dizini geliştirmeyi basitleştirmenin yanı sıra bu, kullanıcının hangi verilerin alınacağı konusunda eğitimli seçimler yapmasına yardımcı olur.

Bir bina projesi için gerekli araç ve gereçleri bulmak için, o endüstri için tasarlanmış bir veri tabanı, indeksindeki yüklemleri kullanabilir. Bir çalışan, aynı malzemelerin birkaç ay önce benzer bir projede kullanılıp kullanılmadığını doğrulamak için kullanabilir.

En popüler veritabanı dizini SQL sorgularına göre uyarlanmış bir dizin de genellikle optimum verimlilik için oluşturulur. Buna, olası tüm veritabanı dizini SQL sorgularının ve bunların tahmini kullanım sıklıklarının bir özeti ve en önemlileri vurgulanmış olarak dahil edilebilir.

Bu, bir okulun hangi çocukların evden en çok arandığını veya hastalık nedeniyle uzun bir süre evde olmayanları bulmak gibi standart bir veri tabanı araştırması yapması gerektiğinde yardımcı olabilir. Bu, ebeveynlerinin iletişim bilgilerinin hızlı ve kolay bir şekilde alınmasını kolaylaştırdığından, acil bir durumda yararlıdır.

#4. İndeks Yaparak Sıralama İhtiyacından Kurtulun

Sıralama gerektirmeyen bir dizin oluşturmak, bir sorgunun istenen verileri alma becerisini hızlandırabilir. Bir veritabanı kullanıcısı genellikle 'Group by' ve 'Order by' yan tümcelerini kullanarak kayıtları manuel olarak sıralayabilir. Bu iki tür tarafından kullanılan sütunlar üzerinde bir dizin oluşturarak veritabanı hızını optimize edebilirsiniz. Kayıtların sıralanması gerekmediğinden sorgular daha da optimize edilebilir.

# 5. Eşsiz Dizinler Oluşturun

Etkili bir veri tabanı geliştirirken çalışanlara genellikle bir dizi türünün tek örneği dizin oluşturma görevi verilir. Bu çok önemlidir, çünkü bir tablonun sütunlarında yinelenme olasılığını ortadan kaldırarak veri bozulmasını önler. Bir tablodaki verilerin her zaman uyması beklenen kısıtlamalar veya kurallar, veritabanı sistemlerinin büyük çoğunluğu tarafından benzersiz dizinler oluşturmak için kullanılır. Bir tablodaki verilerin tanımlanmasını kolaylaştırmak için bir birincil anahtar da kullanılır.

#6. Yabancı Anahtarları Düşünün

Bir çalışan, veritabanı tarafından kullanılan her bir yabancı anahtarla ilgili dizinler oluşturarak veritabanının performansını optimize edebilir. Yabancı anahtarlar, bir veritabanındaki başka bir veritabanındaki tablolara erişim sağlayan bir sütun grubudur. Bu dizinler çoğu veritabanı sisteminde gerekli değildir, ancak yine de üretkenliği artırabilir. Veritabanı, bir çalışanın ihtiyaç duyduğu bilgilerin tamamını içermeyebilir, ancak bu anahtar, çalışanı başka bir veritabanında doğru sonuca götürebilir.

#7. Yalnızca Veritabanı Dizini Kullanımı İçin Sütunlar Ekleme

Bir çalışan, belirli koşullar altında veritabanına yalnızca birkaç veritabanı dizini sütunu eklemeyi faydalı bulabilir. Bir çalışan artık yalnızca dizin bilgilerini hızlı bir şekilde alabilir. Bu, kullanıcı tarafından girilen herhangi bir sorgunun yalnızca bu yeni eklenen dizin sütunlarında arama yapması gerekeceği içindir. Bu, bir çalışanın ihtiyaç duyduğu belirli verileri sağlama sürecini hızlandırır. Ancak, yeni sütunların işlerini yapma becerilerini etkileyip etkilemeyeceğini görmek için çalışanın şimdi diğer sorguları kontrol etmesi gerektiği unutulmamalıdır.

# 8. Dizin Sayısı Sınırından Kaçının

Oluşturulurken bir veritabanındaki dizin sayısının kısıtlanmaması önerilir. Bir veritabanını düzgün bir şekilde optimize etmek için, mümkün olduğu kadar çok dizine sahip olmak tercih edilir çünkü her dizin, veri alma sürecini hızlandıran bir optimize edici görevi görür. Bunun yalnızca söz konusu kişiye yardımcı olmadığını belirtmekte fayda var; çoğu işyerinde veri tabanları ve içerdikleri bilgiler çalışanlarla paylaşılır. Bu, bir kuruluş genelinde çıktıyı artırma potansiyeline sahip olduğu anlamına gelir.

# 9. Birçok Veri Değiştirme Etkisi Olup Olmadığını Kontrol Edin

Zaman kazanmak için, bir çalışan manuel olarak veri girmeyi atlamayı tercih edebilir. Bunu, verilerde yapılan herhangi bir değişikliğin sonuçları üzerinde biraz düşünerek başarabilirler. Bunu gerçekleştirmek için bazı seçenekler mevcuttur. Örneğin bir çalışan tablonun dizinlerine bakabilir. Halihazırda sütunlardan daha fazla dizin varsa, başka bir veritabanı dizini eklemenin performansı önemli ölçüde etkilememesi olasılığı yüksektir. Bir çalışan, sorguyu tabloya karşı çalıştırarak yürütme süresini de kontrol edebilir. Bir veritabanı dizini oluşturmanın değeri, sorguyu yürütmenin ne kadar sürdüğüne bağlıdır.

Bir çalışanın kendi dizinlerini oluşturmak için veri eklemesi veya kaldırması gerekirse, bunu veritabanının geri kalanı üzerindeki etkisini düşündükten sonra yapabilir. Örneğin, veri tabanı satıcıların iletişim bilgileriyle doluysa, şirketi belirli bir çalışana bağlayan telefon numaralarından kurtulmak aptallık olur.

Bir Veritabanı Dizini Dahili Olarak Nasıl Çalışır?

Veritabanı dizini SQL, dahili olarak ağaçlar olarak yapılandırılmıştır. Veri tabanı indeksleri, yapraklar yerine bireysel kayıtların yer aldığı ağaçlar olarak grafiksel olarak tasvir edilir. İşaretçilerle bağlanan birden çok düğüm, bir veritabanının dizin ağacının yapısını oluşturur.

CREATE INDEX komutu çalıştırıldığında, bir dizin ağacı oluşturulur. Veritabanı programındaki bir algoritma dizin ağacını oluşturmaktan sorumludur. Dizin oluşturma prosedürü, kayıtları dizin anahtarına göre sıralama adımıyla başlar. Ağaç dizinindeki tüm düğümler oluşturulduktan sonra, yapı bunların üzerine inşa edilir. Bir veritabanında çok sayıda kayıt olduğunda, dizin ağacı oluşturmak zaman alıcı olabilir.

Tabloda belirli bir satırı bulmak için, dizin aramamıza yaprak düğümden başlamalıyız. Yoldaki her çatalda, hangi yoldan gidileceğine dair bir seçim yapılmalıdır. Bu, arama kriterlerinin ve her çatala düşen değerlerin derinlemesine analizini gerektirir. Çok basit bir örnek olarak, iki dallı bir ağaçta 12 sayısını arama durumunu ele alalım. 0–10 rakamları X Şubesinde, 11–20 ise Y Şubesinde bulunur. 12, 11'den büyük olduğu için oraya bakmalısınız.

B-ağacı, özel bir dizin ağacının bir örneğidir. Dengeli ağaçlar veya B-ağaçları, kökten her yaprak düğüme kadar aynı sayıda düğüme sahiptir.

Bir Veritabanı Dizini Başlık Altında Nasıl Çalışır?

Dizin, tek tek öğelere yapılan referansları depolayarak ilgili bilgilere kolay erişim sağlayan bir veri yapısıdır. Bir dizin olmadığında, bir veritabanındaki veri satırları genellikle düzenlenmemiş bir "yığın" halinde tutulur. Hem Microsoft SQL Server hem de Azure SQL Veritabanı, bu özelliği etkinleştirmek veya devre dışı bırakmak için kullanabileceğiniz bir anahtara sahiptir.

Gerçekte, veriler nadiren tamamen yapılandırılmamış bir durumda tutulur. Bunun yerine, MySQL'de dizinlerle aynı olabilen birincil anahtarlar kullanılır; otomatik artan bir tamsayı biçimini alabilirler. Sıralamanın "ikili" verimliliği (benzersiz değerlerle), sıralı sütunda filtre uygulayan bir sorguyla sınırlıdır, çünkü verileri sıralamak için yalnızca bir sütun kullanılabilir. İndeksli bir tablo, birçok sütuna göre sıralanabildiğinden, ikili arama kullanılarak verimli bir şekilde aranabilir.

Bir sütunu dizine eklediğinizde, gerçekten iki sütunlu yeni bir tablo yapmış olursunuz: dizine eklediğiniz sütun ve aradığınız öğenin konumunu gösteren bir işaretçi. Dizin, orijinal tabloyla aynı uzunlukta olacak, ancak genişliği önemli ölçüde daha küçük olacak ve depolamak ve geçiş yapmak için daha az disk bloğu gerektirecek. MySQL'de, işaretçilerin boyutu 5 bayttan küçük olma eğilimindedir. Daha derine inmek isteyenler için, yukarıda atıfta bulunulan "efsanevi" Yığın Taşması gönderisi, depolama için gerekli blok sayısının arkasındaki aritmetiği açıklıyor.

Bunları sıfırdan oluşturmadıysanız, mevcut veritabanınız muhtemelen çok sayıda dizine sahiptir.

Veritabanı Dizininin Önemi

Bir veritabanı dizininin önemi asla göz ardı edilemez, ancak ek yazmalar ve verilerin yinelenen kopyasını güncel tutmak için ek depolama alanı ihtiyacı şeklinde maliyetlere neden olurlar. Bir veritabanı dizininin diğer bir önemi de, en iyi performansı sağlamak için düzenli bakım gerektirmeleridir. Bununla birlikte, dizin kullanmanın yararları, bakımlarının getirdiği küçük rahatsızlıktan çok daha fazladır. Dizinlerin düzgün çalışması için düzenli bakıma ihtiyacı vardır. Dizin yeniden oluşturma, yeniden düzenleme ve parçalanma kontrolleri bu görev kategorisine girer.

Endekslere Sahip Olmanın Maliyeti

Hayattaki diğer birçok şey gibi, endeksler de paraya mal olur. Bir tablodaki tüm dizinler, o tablodaki satırlardan herhangi biri değiştirilirse (INSERT, UPDATE veya DELETE aracılığıyla) yenilenmelidir. Bu değişiklikler zaman alır ve bir veritabanında birden çok dizin bulunduğunda, tabloları kapsamlı bir şekilde düzenleyen bir işlemin performansı düşebilir.

Devam etmeden önce bir endeks oluşturmanın maliyetlerine karşı faydalarını tartmalıyız. Verimlilikte gözle görülür bir artış bekleyebilir miyiz? Bu istatistiksel bir tablo mu yoksa kapsamlı bir şekilde manipüle edilmiş mi? Tabloyu değiştirirken performansta bir düşüş yaşayabilir miyiz? Bu incelemenin sonuçları bize endeksin yapılması gerekip gerekmediğini söyleyecektir. Hatta bazı veritabanları, gerektiğinde dizinleri otomatik olarak oluşturma ve ortadan kaldırma yeteneğine sahiptir.

Veritabanı İndeksi Hakkında Unutulmaması Gerekenler

Aşağıdakiler, veritabanı dizini hakkında unutulmaması gereken şeylerdir:

  • İndeksleme, arama kriterleri sütunları ve bir işaretçi ile bir veri yapısının eklenmesini içerir.
  • İşaretçi, bellek diskinin kalan verileri içeren satırın konumudur.
  • Dizin veri yapısını sıralamak, sorgu performansını artırır.
  • Bir sorgu, dizinde istenen satırı bulur; Dizin bir kez yerleştirildikten sonra, verilerin geri kalanına bir referans sağlar.
  • Dizin ile sorgunun on yedi yerine yalnızca dört satıra bakması gerekir.

Yeni Başlayanlar için Dizin Nedir?

İndeks, gösterge olarak kullanılan sayısal bir değerdir. Bir menkul kıymet piyasasının hareketinin nicel bir analizini tanımlamak için kullanılan bir terimdir. Finansal piyasalardaki borsa endeksleri ve tahvil piyasası endekslerinin her biri, tüm pazarın veya onun bir alt kümesinin yerini alması amaçlanan hayali bir menkul kıymetler portföyünden oluşur.

İndekslemenin Amacı Nedir?

Endeksleme, enflasyon, işsizlik, GSYİH büyümesi, üretkenlik ve borsa getirileri gibi ekonomik göstergeleri izlemek için istatistiksel bir araçtır.

Son Düşüncelerimiz

Bir dizin, çalışanların sürekli olarak yeni sorgulara yanıt olarak veritabanını yeniden düzenlemesinden çok daha etkilidir. Dizin ise kendi dahili veritabanı hiyerarşisini oluşturur. Örneğin, bir veritabanı dizini bir B-Tree yapısı kullanabilir. Ayrıca, iki veya daha fazla dalı olan düğümler desteklenir, böylece çalışanlar basit ikili aramaların ötesine geçebilir.

Referanslar

Yorum bırak

E-posta hesabınız yayımlanmayacak. Gerekli alanlar işaretlenmişlerdir. *

Hoşunuza gidebilir