Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft Fabric'te SQL veritabanı
Verileri kümelenmiş dizinde depolamak için gereken alan miktarını tahmin etmek için aşağıdaki adımları kullanabilirsiniz:
- Verileri kümelenmiş dizinin yaprak düzeyinde depolamak için kullanılan alanı hesaplayın.
- Kümelenmiş dizin için dizin bilgilerini depolamak için kullanılan alanı hesaplayın.
- Hesaplanan değerlerin toplamını alır.
Adım 1. Verileri yaprak düzeyinde depolamak için kullanılan alanı hesaplama
Tabloda bulunan satır sayısını belirtin:
- Num_Rows = tablodaki satır sayısı
Sabit uzunluklu ve değişken uzunlukta sütunların sayısını belirtin ve depolamaları için gereken alanı hesaplayın:
Bu sütun gruplarının her birinin veri satırında kaplayacakları alanı hesaplayın. Sütunun boyutu, veri türüne ve uzunluk tanımına bağlıdır.
- Num_Cols = toplam sütun sayısı (sabit uzunluk ve değişken uzunluk)
- Fixed_Data_Size = tüm sabit uzunlukta sütunların toplam bayt boyutu
- Num_Variable_Cols = değişken uzunlukta sütun sayısı
- Max_Var_Size = tüm değişken uzunluklu sütunların bayt boyutu üst sınırı
Kümelenmiş dizin benzersiz değilse, benzersizleştirici sütununu dikkate alın.
Benzersizleştirici, null atanabilir ve değişken uzunlukta bir sütundur. Null olmayan ve tek olmayan anahtar değerlerine sahip satırlarda 4 bayt boyutundadır. Bu değer dizin anahtarının bir parçasıdır ve her satırın benzersiz bir anahtar değerine sahip olduğundan emin olmak için gereklidir.
- Num_Cols = Num_ColsNum_Cols + 1
- Num_Variable_Cols = Num_Variable_ColsNum_Variable_Cols + 1
- = Max_Var_SizeMax_Var_Size + 4
Bu değişiklikler, tüm değerlerin nonunique olduğunu varsayar.
Satırın null bit eşlemi olarak bilinen bölümü, sütun null değer atamasının yönetilmesi için ayrılmıştır. Boyutunu hesaplama:
- Null_Bitmap = 2 + ((Num_Cols + 7) / 8)
Yalnızca önceki ifadenin tamsayı bölümü kullanılmalıdır; kalanları at.
Değişken uzunluklu veri boyutunu hesaplayın:
Tabloda değişken uzunlukta sütunlar varsa, sütunları satır içinde depolamak için ne kadar alan kullanıldığını belirleyin:
- Variable_Data_Size = 2 + (Num_Variable_Cols x 2) + Max_Var_Size
Max_Var_Size eklenen baytlar, her değişken sütununu izlemeye yöneliktir. Bu formül, tüm değişken uzunluklu sütunların yüzde 100 dolu olduğunu varsayar. Değişken uzunluktaki sütun depolama alanının daha küçük bir yüzdesinin kullanılacağını düşünüyorsanız, genel tablo boyutunun daha doğru bir tahminini sağlamak için Max_Var_Size değerini bu yüzdeye göre ayarlayabilirsiniz.
varchar, nvarchar, varbinaryveya toplam tanımlı tablo genişliğinin 8.060 bayt'ı aşmasına neden olan sql_variant sütunlarını birleştirebilirsiniz. Bu sütunlardan her birinin uzunluğu yine de bir varchar, varbinary veya sql_variant sütunu için 8.000 bayt ve nvarchar sütunları için 4.000 bayt sınırı içinde olmalıdır. Ancak, birleştirilmiş genişlikleri bir tablodaki 8.060 bayt sınırını aşabilir.
Değişken uzunlukta sütun yoksa Variable_Data_Size 0 olarak ayarlayın.
Toplam satır boyutunu hesaplama:
- Row_Size = Fixed_Data_Size + Variable_Data_Size + Null_Bitmap + 4
4 değeri, bir veri satırının satır üst bilgisi ek yüküdür.
Sayfa başına satır sayısını hesaplayın (sayfa başına 8.096 boş bayt):
- Rows_Per_Page = 8096 / (Row_Size + 2)
Satırlar sayfalara yayılmadığından, sayfa başına satır sayısı en yakın tam satıra yuvarlanmalıdır. Formüldeki 2 değeri, sayfadaki yuva dizisinde yer alan satırın girişine yöneliktir.
Belirtilen doldurma faktörüne göre sayfa başına ayrılmış boş satır sayısını hesaplayın:
- Free_Rows_Per_Page = 8096 x ((100 - Fill_Factor) / 100) / (Row_Size + 2)
Hesaplamada kullanılan dolgu faktörü yüzde yerine tamsayı değeridir. Satırlar sayfalara yayılmadığından, sayfa başına satır sayısı en yakın tam satıra yuvarlanmalıdır. Doldurma faktörü büyüdükçe, her sayfada daha fazla veri depolanır ve daha az sayfa vardır. Formüldeki 2 değeri, sayfadaki yuva dizisinde yer alan satırın girişine yöneliktir.
Tüm satırları depolamak için gereken sayfa sayısını hesaplayın:
- Num_Leaf_Pages = Num_Rows / (Rows_Per_Page - Free_Rows_Per_Page)
Tahmini sayfa sayısı en yakın tam sayfa sayısına yuvarlanmalıdır.
Verileri yaprak düzeyinde (sayfa başına toplam 8.192 bayt) depolamak için gereken alan miktarını hesaplayın:
- Leaf_space_used = 8192 x Num_Leaf_Pages
Adım 2. Dizin bilgilerini depolamak için kullanılan alanı hesaplama
Dizinin üst düzeylerini depolamak için gereken alan miktarını tahmin etmek için aşağıdaki adımları kullanabilirsiniz:
Dizin anahtarında sabit uzunluklu ve değişken uzunluklu sütun sayısını belirtin ve depolamaları için gereken alanı hesaplayın:
Bir dizinin anahtar sütunları sabit uzunlukta ve değişken uzunlukta sütunlar içerebilir. İç düzey dizin satırı boyutunu tahmin etmek için, bu sütun gruplarının her birinin dizin satırında kaplayacakları alanı hesaplayın. Sütunun boyutu, veri türüne ve uzunluk tanımına bağlıdır.
- Num_Key_Cols = toplam anahtar sütun sayısı (sabit uzunluk ve değişken uzunluk)
- Fixed_Key_Size = tüm sabit uzunlukta anahtar sütunlarının toplam bayt boyutu
- Num_Variable_Key_Cols = değişken uzunlukta anahtar sütunlarının sayısı
- Max_Var_Key_Size = tüm değişken uzunluklu anahtar sütunlarının bayt boyutu üst sınırı
Dizin nonunique ise, gereken tüm benzersizleştiriciler için hesap oluşturun:
Benzersizleştirici, null atanabilir ve değişken uzunlukta bir sütundur. Null olmayan ve benzersiz dizin anahtarı değerlerine sahip satırlarda 4 bayt boyutundadır. Bu değer dizin anahtarının bir parçasıdır ve her satırın benzersiz bir anahtar değerine sahip olduğundan emin olmak için gereklidir.
- Num_Key_Cols = Num_Key_ColsNum_Key_Cols + 1
- = Num_Variable_Key_ColsNum_Variable_Key_Cols + 1
- = Max_Var_Key_SizeMax_Var_Key_Size + 4
Bu değişiklikler, tüm değerlerin nonunique olduğunu varsayar.
Null bit haritası boyutunu hesapla.
Dizin anahtarında null değere izin veren sütunlar varsa, dizin satırının bir bölümü null bitmap için ayrılmıştır. Boyutunu hesaplama:
- Index_Null_Bitmap = 2 + ((dizin satırındaki sütun sayısı + 7) / 8)
Yalnızca önceki ifadenin tamsayı bölümü kullanılmalıdır. Kalanları atın.
Eğer boş değer atanabilir anahtar sütunu yoksa, Index_Null_Bitmap'i 0 olarak ayarlayın.
Değişken uzunluklu veri boyutunu hesaplayın:
Dizinde değişken uzunlukta sütunlar varsa, sütunları dizin satırında depolamak için ne kadar alan kullanıldığını belirleyin:
- Variable_Key_Size = 2 + (Num_Variable_Key_Cols x 2) + Max_Var_Key_Size
Max_Var_Key_Size eklenen baytlar, her değişken uzunluktaki sütunu izlemeye yöneliktir. Bu formül, tüm değişken uzunluklu sütunların yüzde 100 dolu olduğunu varsayar. Değişken uzunluktaki sütun depolama alanının daha küçük bir yüzdesinin kullanılacağını düşünüyorsanız, genel tablo boyutunun daha doğru bir tahminini sağlamak için Max_Var_Key_Size değerini bu yüzdeye göre ayarlayabilirsiniz.
Değişken uzunlukta sütun yoksa Variable_Key_Size 0 olarak ayarlayın.
Dizin satırı boyutunu hesaplama:
- Index_Row_Size (Dizin_Satır_Boyutu) = Fixed_Key_Size (Sabit_Anahtar_Boyutu) + Variable_Key_Size (Değişken_Anahtar_Boyutu) + Index_Null_Bitmap (Dizin_Null_Bitmap) + 1 (dizin satırının satır üst bilgisi ek yükü için) + 6 (alt sayfa kimliği işaretçisi için)
Sayfa başına dizin satırı sayısını hesaplama (sayfa başına 8.096 boş bayt):
- Index_Rows_Per_Page = 8096 / (Index_Row_Size + 2)
Dizin satırları sayfalara yayılmadığından, sayfa başına dizin satırlarının sayısı en yakın tam satıra yuvarlanmalıdır.
2Formüldeki değeri, sayfanın yuva dizisindeki satırın girdisine yöneliktir.Dizindeki düzey sayısını hesaplayın:
- Yaprak_sız_Seviyeler = 1 + logaritma (Index_Rows_Per_Page) (Num_Leaf_Pages / Index_Rows_Per_Page)
Bu değeri en yakın tamsayıya yuvarlar. Bu değer kümelenmiş dizinin yaprak düzeyini içermez.
Dizindeki boş olmayan sayfaların sayısını hesaplayın:
Num_Index_Pages = ∑Level (Num_Leaf_Pages / (Index_Rows_Per_Page^Level))
şu durumda 1 <= Seviye <= Yaprak Olmayan Seviyeler
Her toplamı en yakın tamsayıya yuvarlar. Basit bir örnek olarak, Num_Leaf_Pages = 1000 ve Index_Rows_Per_Page = 25 olan bir dizin düşünün. Yaprak düzeyinin üzerindeki ilk dizin düzeyi yaprak sayfa başına bir dizin satırı olan 1.000 dizin satırı depolar ve sayfa başına 25 dizin satırı sığabilir. Bu, bu 1.000 dizin satırını depolamak için 40 sayfa gerektiği anlamına gelir. Dizinin bir sonraki düzeyinin 40 satırı saklaması gerekir. Bu, iki sayfa gerektirdiği anlamına gelir. Dizinin son düzeyinin iki satır depolaması gerekir. Bu, tek sayfa gerektirdiği anlamına gelir. Bu, 43 yapraksız dizin sayfası verir. Bu sayılar önceki formüllerde kullanıldığında sonuç aşağıdaki gibidir:
Non-leaf_Levels = 1 + logaritma(25) (1000 / 25) = 3
Num_Index_Pages = 1000/(25^3)+ 1000/(25^2) + 1000/(25^1) = 1 + 2 + 40 = 43; örnekte açıklanan sayfa sayısıdır.
Dizinin boyutunu hesaplayın (sayfa başına toplam 8.192 bayt):
- Index_Space_Used = 8192 x Num_Index_Pages
Adım 3. Hesaplanan değerleri toplama
Önceki iki adımda elde edilen değerlerin toplamı:
- Kümelenmiş dizin boyutu (bayt) = Leaf_Space_Used + Index_Space_used
Bu hesaplama aşağıdaki koşulları dikkate almaz:
Bölümleme: Bölümlemeden kaynaklanan alan ek yükü çok azdır, ancak hesaplanması karmaşıktır. Dahil etmek önemli değildir.
Ayırma sayfaları: Yığına ayrılan sayfaları izlemek için kullanılan en az bir IAM sayfası vardır. Alan ek yükü çok azdır ve tam olarak kaç IAM sayfası kullanılacağını belirlemek için bir algoritma yoktur.
Büyük nesne (LOB) değerleri: LOB veri türlerinin varchar(max), varbinary(max), nvarchar(max), metin, ntext, xml ve görüntü değerlerini depolamak için tam olarak ne kadar alan kullanılacağını belirleyen algoritma karmaşıktır. Beklenen LOB değerlerinin ortalama boyutunu eklemek, Num_Rows ile çarpmak ve bunu toplam kümelenmiş dizin boyutuna eklemek yeterlidir.
Sıkıştırma: Sıkıştırılmış dizinin boyutunu önceden hesaplayamazsınız.
Seyrek sütunlar: Seyrek sütunların alan gereksinimleri hakkında bilgi için bkz. Seyrek sütunları kullanma.