Veritabanı verilerinizi düzenlemenin en iyi yolu nedir?
İçerik konuları
Endeks Nedir?
Veritabanı dizinleri, iki sütundan oluşan özel arama tablolarıdır. İlk sütun arama anahtarı, ikincisi ise veri işaretçisidir. Anahtarlar, aramak ve veritabanı tablonuzdan almak istediğiniz değerlerdir ve işaretçi veya referans, söz konusu arama anahtarı için veritabanındaki disk bloğu adresini saklar. Anahtar alanlar, tüm sorgularınız için veri alma işlemini hızlandıracak şekilde sıralanır.
Neden Veritabanı İndeksleme Kullanılmalı?
Burada size veritabanı indekslerini basitleştirilmiş bir şekilde göstereceğim. Bir şirkette çalışan sekiz çalışanın bir veritabanı tablonuz olduğunu ve tablonun son girişi için bilgileri aramak istediğinizi varsayalım. Şimdi, önceki girişi bulmak için veritabanının her satırını aramanız gerekir.
Ancak, tabloyu çalışanların ilk adına göre alfabetik olarak sıraladığınızı varsayalım. Bu nedenle, burada indeksleme anahtarları “ad sütununa” dayalıdır. Bu durumda, son giriş olan “ Zack ”i ararsanız, tablonun ortasına atlayabilir ve girişimizin sütundan önce mi yoksa sonra mı geleceğine karar verebilirsiniz.
Bildiğiniz gibi orta sıradan sonra gelecek ve yine orta sıradan sonraki sıraları ikiye bölüp benzer bir karşılaştırma yapabilirsiniz. Bu şekilde, son girişi bulmak için her satırı geçmeniz gerekmez.
Şirketin 1.000.000 çalışanı varsa ve son giriş “Zack” olsaydı, adını bulmak için 50.000 satır aramanız gerekirdi. Oysa alfabetik indeksleme ile bunu birkaç adımda yapabilirsiniz. Artık veritabanı indeksleme ile veri arama ve erişiminin ne kadar hızlı olabileceğini hayal edebilirsiniz.
Veritabanı İndeksleri İçin Farklı Dosya Organizasyon Yöntemleri
Dizin oluşturma, büyük ölçüde kullanılan dosya düzenleme mekanizmasına bağlıdır. Genellikle, veri depolamak için veritabanı indekslemede kullanılan iki tür dosya düzenleme yöntemi vardır. Aşağıda tartışılmaktadır:
1. Sıralı Dizin Dosyası: Bu, dizin verilerini depolamanın geleneksel yöntemidir. Bu yöntemde, anahtar değerler belirli bir sırada sıralanır. Sıralı bir dizin dosyasındaki veriler iki şekilde saklanabilir.
- Seyrek İndeks: Bu indeksleme türünde her kayıt için bir indeks girişi oluşturulur.
- Yoğun İndeks: Yoğun indekslemede bazı kayıtlar için indeks girişi oluşturulur. Bu yöntemde bir kaydı bulmak için öncelikle aradığınız arama anahtarı değerinden küçük veya ona eşit olan dizin girişlerinden en önemli arama anahtarı değerini bulmanız gerekir.
2. Hash Dosyası organizasyonu: Bu dosya organizasyonu yönteminde, bir hash fonksiyonu, bir kaydın saklandığı yeri veya disk bloğunu belirler.
Veritabanı İndeksleme Türleri
Veritabanı İndekslemenin genel olarak üç yöntemi vardır. Onlar:
- Kümelenmiş Dizin Oluşturma
- Kümelenmemiş Dizin Oluşturma
- Çok Seviyeli İndeksleme
1. Kümelenmiş İndeksleme
Kümelenmiş indekslemede, tek bir dosya ikiden fazla veri kaydını saklayabilir. Sistem, gerçek verileri işaretçiler yerine kümelenmiş dizinlemede tutar. Tüm ilgili verileri aynı yerde depoladığı için kümelenmiş indeksleme ile arama maliyet açısından verimlidir.
Bir kümeleme dizini, kendisini tanımlamak için sıralı veri dosyalarını kullanır. Ayrıca, bu tür indekslemede birden çok veritabanı tablosunu birleştirmek çok yaygındır.
Her anahtar için benzersiz olmayan birincil olmayan sütunlara dayalı bir dizin oluşturmak da mümkündür. Bu gibi durumlarda, kümelenmiş dizinler için benzersiz anahtar değerleri oluşturmak üzere birden çok sütunu birleştirir.
Yani kısaca kümeleme indeksleri, benzer veri türlerinin gruplandırıldığı ve onlar için indekslerin oluşturulduğu yerdir.
Örnek: 10 farklı departmanda 1.000’den fazla çalışanı olan bir şirket olduğunu varsayalım. Bu durumda şirket, aynı departmanda çalışan çalışanları indekslemek için DBMS’lerinde kümeleme indekslemesi oluşturmalıdır.
Aynı departmanda çalışan çalışanların bulunduğu her küme tek bir küme olarak tanımlanacak ve indekslerdeki veri işaretçileri kümeye bütün bir varlık olarak atıfta bulunacaktır.
2. Kümelenmemiş Dizin Oluşturma
Kümelenmemiş dizin oluşturma, dizin satırlarının sırasının orijinal verilerin fiziksel olarak depolanma şekliyle aynı olmadığı bir dizin oluşturma türünü ifade eder. Bunun yerine, kümelenmemiş bir dizin, veritabanındaki veri deposuna işaret eder.
Örnek: Kümelenmemiş dizin oluşturma, sıralı içindekiler sayfasına sahip bir kitaba benzer. Burada, veri işaretçisi veya referansı, alfabetik olarak sıralanmış sıralı içindekiler sayfasıdır ve gerçek veriler, kitabın sayfalarındaki bilgilerdir. İçindekiler sayfası, kitabın sayfalarındaki bilgileri sırayla saklamaz.
3. Çok Seviyeli İndeksleme
Çok seviyeli indeksleme, indeks sayısı çok yüksek olduğunda kullanılır ve birincil indeksi ana bellekte saklayamaz. Bildiğiniz gibi, veritabanı indeksleri arama anahtarlarından ve veri işaretçilerinden oluşur. Veritabanının boyutu arttıkça indeks sayısı da artar.
Ancak hızlı arama işlemini sağlamak için indeks kayıtlarının hafızada tutulması gerekmektedir. Dizin numarası yüksek olduğunda tek düzeyli bir dizin kullanılıyorsa, boyutu ve birden çok erişim nedeniyle bu dizini bellekte depolamak olası değildir.
Çok seviyeli indekslemenin devreye girdiği yer burasıdır. Bu teknik, tek seviyeli dizini birden çok küçük bloğa böler. Yıkıldıktan sonra, dış seviye blok o kadar küçülür ki, ana bellekte kolayca saklanabilir.
SQL İndeks Parçalama Nedir?
İndeks sayfalarının herhangi bir sırası, veri dosyasındaki fiziksel sıra ile eşleşmediğinde, SQL indeks parçalanmasına neden olur. Başlangıçta, tüm SQL dizinleri parçalanmadan bağımsızdır, ancak veritabanını (Veri Ekle/Sil/Değiştir) art arda kullandığınızda, parçalanmaya neden olabilir.
Veritabanı parçalanmasının yanı sıra, veritabanınız, veritabanı bozulması gibi diğer hayati sorunlarla da karşı karşıya kalabilir. Veri kaybına ve zarar görmüş bir web sitesine yol açabilir. Web sitenizle iş yapıyorsanız, bu sizin için ölümcül bir darbe olabilir.