logo

DBMS'de indeksleme

  • Dizin oluşturma, bir sorgu işlendiğinde gereken disk erişim sayısını en aza indirerek veritabanının performansını optimize etmek için kullanılır.
  • İndeks bir tür veri yapısıdır. Bir veritabanı tablosundaki verileri hızlı bir şekilde bulmak ve bunlara erişmek için kullanılır.

Dizin yapısı:

Dizinler bazı veritabanı sütunları kullanılarak oluşturulabilir.

DBMS'de DBMS İndeksleme
  • Veritabanının ilk sütunu, tablonun birincil anahtarının veya aday anahtarının bir kopyasını içeren arama anahtarıdır. Birincil anahtarın değerleri, ilgili verilere kolayca erişilebilmesi için sıralı bir şekilde saklanır.
  • Veritabanının ikinci sütunu veri referansıdır. Belirli bir anahtarın değerinin bulunabileceği disk bloğunun adresini tutan bir dizi işaretçi içerir.

İndeksleme Yöntemleri

DBMS'de DBMS İndeksleme

Sıralı endeksler

Dizinler genellikle aramayı daha hızlı hale getirmek için sıralanır. Sıralanan endekslere sıralı endeksler denir.

Örnek : Diyelim ki her biri 10 byte uzunluğunda, binlerce kayıttan oluşan bir çalışan tablomuz var. Kimlikleri 1, 2, 3.... ile başlıyorsa ID-543 ile öğrenciyi aramak zorunda kalıyoruz.

  • İndekssiz bir veritabanı durumunda, disk bloğunu baştan 543'e ulaşana kadar aramamız gerekir. DBMS, 543*10=5430 bayt okuduktan sonra kaydı okuyacaktır.
  • İndeks durumunda, indeksleri kullanarak arama yapacağız ve DBMS, önceki duruma göre çok daha az olan 542*2= 1084 bayt okuduktan sonra kaydı okuyacaktır.

Birincil Dizin

  • Dizin tablonun birincil anahtarı temel alınarak oluşturulmuşsa buna birincil dizin oluşturma adı verilir. Bu birincil anahtarlar her kayıt için benzersizdir ve kayıtlar arasında 1:1 ilişki içerir.
  • Birincil anahtarlar sıralı bir şekilde saklandığından arama işleminin performansı oldukça verimlidir.
  • Birincil indeks iki türe ayrılabilir: Yoğun indeks ve Seyrek indeks.

Yoğun indeks

  • Yoğun dizin, veri dosyasındaki her arama anahtarı değeri için bir dizin kaydı içerir. Aramayı daha hızlı hale getirir.
  • Bunda indeks tablosundaki kayıt sayısı ana tablodaki kayıt sayısıyla aynıdır.
  • İndeks kaydının kendisini depolamak için daha fazla alana ihtiyaç duyar. İndeks kayıtlarında arama anahtarı ve diskteki gerçek kaydı gösteren bir işaretçi bulunur.
DBMS'de DBMS İndeksleme

Seyrek indeks

  • Veri dosyasında indeks kaydı yalnızca birkaç öğe için görünür. Her öğe bir bloğa işaret eder.
  • Bunda indeks, ana tablodaki her bir kaydı işaret etmek yerine, ana tablodaki kayıtları bir boşluk içinde işaret eder.
DBMS'de DBMS İndeksleme

Kümeleme Endeksi

  • Kümelenmiş bir dizin, sıralı bir veri dosyası olarak tanımlanabilir. Bazen dizin, her kayıt için benzersiz olmayabilecek, birincil olmayan anahtar sütunlarda oluşturulur.
  • Bu durumda kaydı daha hızlı tanımlamak için iki veya daha fazla sütunu gruplandırıp benzersiz değeri elde edeceğiz ve bunlardan dizin oluşturacağız. Bu yönteme kümeleme indeksi denir.
  • Benzer özelliklere sahip kayıtlar gruplandırılarak bu gruplara ait indeksler oluşturulur.

Örnek : Bir şirketin her departmanında birden fazla çalışanın bulunduğunu varsayalım. Aynı Dept_ID'ye ait tüm çalışanların tek bir küme içinde değerlendirildiği ve dizin işaretçilerinin kümenin tamamını işaret ettiği bir kümeleme dizini kullandığımızı varsayalım. Burada Dept_Id benzersiz olmayan bir anahtardır.

DBMS'de DBMS İndeksleme

Önceki şema biraz kafa karıştırıcıdır çünkü bir disk bloğu farklı kümeye ait kayıtlar tarafından paylaşılmaktadır. Ayrı kümeler için ayrı disk bloğu kullanırsak buna daha iyi teknik denir.

DBMS'de DBMS İndeksleme

İkincil Dizin

Seyrek indekslemede tablonun boyutu büyüdükçe eşlemenin boyutu da büyür. Bu eşlemeler genellikle birincil bellekte tutulur, böylece adres alımı daha hızlı olur. Daha sonra ikincil bellek, haritalamadan alınan adrese göre gerçek verileri arar. Eşleme boyutu büyürse adresin getirilmesi yavaşlar. Bu durumda seyrek indeks verimli olmayacaktır. Bu sorunun üstesinden gelmek için ikincil indeksleme tanıtıldı.

İkincil indekslemede, eşlemenin boyutunu azaltmak için başka bir indeksleme düzeyi uygulanır. Bu yöntemde, ilk seviyenin eşleme boyutu küçük olacak şekilde sütunlar için geniş aralık başlangıçta seçilir. Daha sonra her aralık daha küçük aralıklara bölünür. Birinci seviyenin eşlemesi birincil bellekte saklanır, böylece adres alımı daha hızlı olur. İkinci seviyenin eşlemesi ve gerçek veriler ikincil bellekte (sabit disk) saklanır.

DBMS'de DBMS İndeksleme

Örneğin:

  • Diyagramda 111 numaralı rulonun kaydını bulmak istiyorsanız, ilk seviye indeksinde 111'den küçük veya ona eşit olan en yüksek girişi arayacaktır. Bu seviyede 100 alacaktır.
  • Daha sonra ikinci indeks seviyesinde yine maksimum (111) olur<= 111 and gets 110. now using the address 110, it goes to data block starts searching each record till 111. < li>
  • Bu yöntemde arama bu şekilde gerçekleştirilir. Ekleme, güncelleme veya silme işlemleri de aynı şekilde yapılır.