Dizinler (Veritabanı Altyapısı) oluşturma
Bu konu, ana dizin oluşturma görevlerini açıklar ve bir dizin oluşturmadan önce göz önünde bulundurulması gereken uygulama ve performans yönergeleri sağlar.
Dizin oluşturma görevleri
Bizim önerilen strateji dizin oluşturmak için aşağıdaki görevleri oluşturan:
Tasarım dizini.
Dizin tasarım önemli bir görevdir.Dizin tasarım içeren dizin türünü seçme kullanmak için hangi sütunların belirleme (örneğin, kümelenmiş veya kümelenmemiş) uygun dizin seçeneklerini seçmek ve dosya grubu belirleme veya bölümleme düzeni yerleştirme.Daha fazla bilgi için bkz:Dizin tasarlama.
En iyi oluşturma yöntem belirler.Dizinler, aşağıdaki gibi oluşturulur:
CREATE tablo ya da ALTER tablo'ı kullanarak bir sütun birincil anahtar veya UNIQUE sınırlaması tanımlayarak
The SQL Server Database Engine automatically creates a unique index to enforce the uniqueness requirements of a PRIMARY KEY or UNIQUE constraint.Kümelenmiş bir dizin üzerinde zaten sürece varsayılan olarak, benzersiz kümelenmiş dizin bir birincil anahtar kısıtlaması zorlamak için oluşturulan tablo, ya da benzersiz kümelenmemiş bir dizin belirtin.Varsayılan olarak, benzersiz bir kümelenmemiş dizin benzersiz kümelenmiş dizin açıkça belirtilen ve masadaki kümelenmiş bir dizin yoksa UNIQUE kısıtlamayı zorlamak için oluşturulur.
Dizin seçenekleri ve dizin konumu, dosya grubu veya bölümü şeması, da belirtilebilir.
birincil anahtar veya UNIQUE ilişkinin bir parçası olarak oluşturulmuş bir dizini otomatik olarak aynı adı kısıtlama adı verilir.Daha fazla bilgi için bkz:birincil anahtar kısıtlamalarıveUNIQUE kısıtlamaları.
CREATE INDEX deyimini kullanarak bir dizin oluşturarak bağımsız bir sınırlama veyaYeni dizin iletişim kutusunda SQL Server Management StudioObject Explorer
Dizin, tablo ve sütun dizini uygulandığı adını belirtmeniz gerekir.Seçenekler ve dizin konumu, dosya grubu veya bölümü şeması dizin, da belirtilebilir.Kümelenmiş ya da benzersiz seçenek belirtilmezse, varsayılan olarak, kümelenmemiş, benzer bir dizin oluşturulur.Filtre uygulanmış bir dizin oluşturmak için isteğe bağlı WHERE yan tümcesini kullanın.Daha fazla bilgi için bkz:Süzülmüş dizin tasarım yönergeleri.
Oluşturma dizini.
Dizin boş bir tablo veya veri içeren bir oluşturulacak olup olmadığını göz önünde bulundurulması gereken önemli bir etkendir.Boş bir tablo dizin oluşturma hiçbir performans üzerindeki etkileri saat dizini oluşturulur; tabloya veri eklendiğinde, ancak, performansı etkilenir.
Veritabanı performansını değil hindered için büyük tabloları dizinleri oluşturma dikkatle planlanmış.Kümelenmiş dizin ile başlatın ve sonra tüm kümelenmemiş dizinler oluşturmak için büyük tablolarda dizinler oluşturmak için tercih edilen yolu değil.Varolan tabloları dizinleri oluştururken çevrimiçi seçeneği ON olarak ayarlanması göz önünde bulundurun.ON olarak ayarlandığında, uzun süreli tablo kilidi sorguları veya devam etmek için temel alınan tablo güncelleştirmelerini etkinleştirme tutulur değil.Daha fazla bilgi için bkz:Çevrimiçi ındex işlemi gerçekleştiriliyor.
Uygulama konuları
Aşağıdaki tablo kümelenmiş, kümelenmemiş, kayma, filtre, uygulanan en yüksek değerleri ve XML dizinleri listeler.Belirtilmedikçe, kısıtlamaları dizin türleri için geçerlidir.
En fazla dizin sınırları |
Değer |
Ek bilgi: |
---|---|---|
Tablo başına kümelenmiş dizinler |
1 |
|
Tablo başına kümelenmemiş dizinleri |
999 |
birincil anahtar veya UNIQUE kısıtlamaları ve filtre uygulanmış dizinler, ancak XML dizinler tarafından oluşturulan kümelenmemiş dizinleri içerir. |
Tablo başına XML dizinler |
249 |
İçerir birincil ve ikincil XML dizinler hakkındaxmlveri türü sütun. |
Tablo başına kayma dizinler |
249 |
|
Her dizin anahtar sütunlarının sayısını bulmak |
16* |
Kümelenmiş bir dizin olup olmadığını 15 sütun sınırlı tablo birincil XML dizin ya da uzamsal bir dizin de içerir. |
Dizin anahtar kaydı boyutu |
900 bayt * |
XML dizinler veya uygulanmaz kayma dizinler. Bir tablo kayma dizinler desteklemek için en fazla dizin anahtar kaydı boyutudur 895 bayt. |
*, Dizin anahtar sütun ve kümelenmemiş dizinleri kayıt boyutu sınırlamaları dizinde olmayan sütunlar ekleyerek önleyebilirsiniz.Daha fazla bilgi için bkz:Içerilen sütunları içeren dizin.
Veri Türleri
Genellikle, bir tablo veya görünümde herhangi bir sütun sıralanması.Aşağıdaki tablo, dizin katılım sınırlı veri türlerini listeler.
Veri türü |
Dizin katılım |
Ek bilgi: |
---|---|---|
CLR kullanıcı tanımlı türü |
İkili sıralama türünü destekliyorsa, dizin. |
|
(LOB) büyük nesne veri türleri: image,ntext,text,varchar(max),nvarchar(max),varbinary(max), andxml |
Bir dizin anahtar sütun olamaz.Ancak birXMLsütun, bir anahtar sütununa bir tablo. birincil veya ikincil bir XML dizini olabilir (Dahil) olmayan sütunlar kümelenmemiş bir dizin dışında olarak katılmakimage,ntext, vetext. Katılabilir parçası hesaplanan sütun bir ifade. |
|
Hesaplanan sütunlar |
Dizin oluşturulmuş.Yöntemler belirli işaretli olduğu sürece bu yöntem etkinleştirilmelerinde bir CLR kullanıcı tanımlı türü sütun tanımlanan hesaplanan sütunlar içerir. Hesaplanan sütunlar türetilen bir anahtar ya da olmayan sütunu hesaplanan sütun veri türü, bir anahtar sütunu dizin veya olmayan bir sütun olarak izin verilir olarak türleri ya da dizine alınması LOB veri. |
|
Varchar basılı devre dışı satır sütun |
kümelenmiş dizin, dizin anahtar içeremezvarcharROW_OVERFLOW_DATA tahsisini varolan veriyi içeren sütunu unit., kümelenmiş dizin oluşturulur, birvarcharsütun varolan verileri ise IN_ROW_DATA ayırma birimi, sonraki ekleme veya güncelleştirme eylemleri gönderme sütun veri devre dışı-satır olacak başarısız. |
|
geometry |
Birden fazla kayma dizinleri ile dizin. |
Ek ana hatları
Bir dizin oluşturmak için bazı ek önemli noktalar şunlardır:
CONTROL olması ya da ALTER iznine, dizin oluşturma tablo.
Oluşturulan dizin otomatik olarak etkin ve kullanılabilir olur.Dizin erişimini devre dışı bırakarak kaldırabilirsiniz.Daha fazla bilgi için bkz:Dizinleri devre dışı bırakma.
Disk alanı gereksinimleri
Dizini depolamak için gereken disk alanı miktarı aşağıdaki etkenlere bağlıdır:
Her veri satırı tablosu ve sayfa başına satır sayısını boyutu.Bu dizini oluşturmak için diskten okunan veri sayfa sayısını belirler.
Dizin ve veri türleri kullanılan sütunlar.Yazılacak olan dizin sayfa sayısını belirleyen bu diske.Daha fazla bilgi için bkz:kümelenmiş dizin boyutunu tahmin ediliyorveKümelenmemiş bir dizin boyutunu tahmin ediliyor.
Dizin oluşturma işlemi sırasında gereken geçici disk alanı.Daha fazla bilgi için bkz:Dizin disk alanı gereksinimlerini belirleme.
Performans Değerlendirmeleri
Fiziksel bir dizin oluşturmak için kullanılan saat disk alt sistemi büyük ölçüde bağlıdır.Göz önüne almanız gereken önemli Etkenler şunlardır:
Veritabanının kurtarma modeli.Yığın-günlüklenen kurtarma modeli, daha yüksek performans ve tam kurtarma çok dizin oluşturma işlemi sırasında daha az günlük alanı tüketimi sağlar.Ancak, yığın-günlüklenen kurtarma saat içinde alınmı kurtarma için esnekliği azalır.Daha fazla bilgi için bkz:Indeks işlemleri için bir kurtarma modeli seçme.
The RAID (redundant array of independent disks) level used to store the database and transaction log files.Genellikle eritleme kullanan RAID düzeyleri daha iyi g/Ç bant genişliği olacaktır.
RAID kullanılıyorsa, disk dizisindeki disk sayısı.Daha fazla sürücü dizisi artar veri hızları orantılı olarak aktarın.
Burada Ara sıralama verileri çalışan depolanır.The SORT_IN_TEMPDB kullanma seçeneği azaltabilir saat dizin oluşturmak için gereken zamantempdb kullanıcı veritabanında. disklerden farklı bir dizi olan Daha fazla bilgi için bkz:tempdb ve dizin oluşturma.
Çevrimiçi veya çevrimdışı dizin oluşturma.
Bir dizini (varsayılan) çevrimdışı oluşturulduğunda, özel kilit temel üzerinde tutulan tablo dizin oluşturma işlemi tamamlanıncaya kadar.Tablo dizin oluşturulurken kullanıcıların erişilemez.
XML ve kayma dizin dışındaki dizin çevrimiçi oluşturulmasını belirtebilirsiniz.Çevrimiçi seçeneği olduğunda küme ON olarak değil uzun süreli tablo kilitli tutulur, sorgular veya dizin oluşturulurken devam etmek için temel alınan tablo güncelleştirmelerini etkinleştirme.Çevrimiçi dizin işlemleri öneririz, ancak, ortam ve belirli gereksinimleri değerlendirmelidir.Dizin işlemleri çevrimdışı çalışması daha iyi olabilir.Böylece, kullanıcıların veri erişim işlemi sırasında sınırlı, ancak işlemi daha hızlı sonlandırır ve daha az kaynak kullanır.Daha fazla bilgi için bkz:Çevrimiçi ındex işlemi gerçekleştiriliyor.
Bir tablo oluşturduğunuzda, birincil anahtar veya benzersiz kısıtlama oluşturmak için
Varolan, birincil anahtar veya UNIQUE sınırlaması oluşturmak için tablo
Dizin oluşturmak için
Değişiklik Geçmişi
Güncelleştirilmiş içerik |
---|
Kümelenmemiş dizin sınırı 999 için güncelleştirildi. |
See Also