Bir yığın boyutunu tahmin etmek
Bir yığın veri depolamak için gereken alanı tahmin etmek için aşağıdaki adımları kullanabilirsiniz:
Tabloda mevcut olacaktır satır sayısını belirtin:
Num_Rows = tablosu içinde satır sayısı
Kendi depolama için gereken alanı hesaplamak ve Sabit uzunluk ve değişken uzunlukta sütun sayısını belirtin:
Alanı hesaplamak her biri bu gruplar sütun içinde veri satırı kaplar. Bir sütun veri türü ve uzunluğu belirtimine bağlıdır. Daha fazla bilgi için, bkz. Data Types (Database Engine).
Num_Cols = toplam (Sabit uzunluk ve değişken uzunlukta) sütun sayısı
Fixed_Data_Size = toplam bayt boyutu tüm sabit uzunluklu sütunları
Num_Variable_Cols = değişken uzunlukta sütun sayısı
Max_Var_Size = azami toplam bayt tüm değişken uzunlukta sütun
Bölümü boş bitmap olarak bilinen satır, Sütun nullability yönetmek için ayrılmıştır. Boyutu Hesapla:
Null_Bitmap = 2 + ((Num_Cols + 7) / 8)
Bu deyim yalnızca tamsayı kısmını kullanılmalıdır. Herhangi bir geri kalanı atın.
Değişken uzunlukta veri boyutu Hesapla:
Tabloda değişken uzunlukta sütun varsa, satır içinde sütun depolamak için kullanılan alan miktarını belirleyin:
Variable_Data_Size* = 2 + (Num_Variable_Cols x 2) + *Max_Var_Size
Eklenen bayt ***Max\_Var\_Size*** her değişken uzunlukta sütun izlemek için vardır. Bu formül, tüm değişken uzunlukta sütun yüzde 100 dolu olduğunu varsayar. Değişken uzunlukta sütun depolama alanı küçük bir yüzdesi kullanılacak öngörüyorsanız, ayarlayabileceğiniz ***Max\_Var\_Size*** toplam tablo boyutunun daha doğru bir tahmin verimi yüzde değeri.
> [!NOT]
> <P>Bu birleştirebilirsiniz varchar, nvarchar, varbinary, ya sql_variant8,060 bayt aşan toplam tanımlanan tablo genişliği neden sütun. Bu sütunların her birinin uzunluğu hala sınırı için 8.000 bayt aralığı içinde olmalıdır bir varchar, nvarchar, varbinary, ya sql_variantsütun. Ancak, bunların kombine genişlikleri Tablo 8,060 bayt sınırını aşıyor olabilir. Daha fazla bilgi için, bkz. <A href="https://msdn.microsoft.com/tr-tr/library/ms186981(v=sql.110)">Row-Overflow Data Exceeding 8 KB</A>.</P>
Hiçbir değişken uzunlukta sütun varsa, set ***Variable\_Data\_Size*** 0.
Toplam satır boyutunu hesaplamak:
Row_Size = Fixed_Data_Size + Variable_Data_Size + Null_Bitmap + 4
4 Formülü veri satırı satır üstbilgi yükü değerdir.
Sayfa (sayfa başına 8096 boş bayt sayısı) başına satır sayısını hesaplayın:
Rows_Per_Page 8096 = / (Row_Size + 2)
Satır sayfalara yayılan değil çünkü, sayfa başına satır sayısı yakın bütün satır yuvarlanmasını. 2 Formül satırın giriş sayfası yuvası dizisi için değerdir.
Tüm satırlar depolamak için gereken sayfaların sayısını hesaplayın:
Num_pages* = Num_Rows / *Rows_Per_Page
Tahmini sayfa sayısı için en yakın tam sayfa yuvarlanmış.
Yığın (sayfa başına 8192 toplam bayt sayısı) verileri depolamak için gereken alanı hesaplamak:
Öbek boyutu (bayt) = 8192 x Num_Pages
Bu hesaplama, aşağıdakileri dikkate almaz:
Bölümleme
Bölümleme gelen yükü en az, ama karmaşık hesaplamak için alandır. İçerecek şekilde önemli değildir.
Ayırma sayfaları
Bir yığın için ayrılan sayfaları izlemek için kullanılan en az bir IAM sayfa ama Uzay yükü azdır ve deterministically kaç IAM sayfaları tam olarak kullanılacak hesaplamak için hiçbir algoritması mevcuttur.
Büyük nesne (lob) değerleri
lob veri türlerini depolamak için alan miktarını tam olarak kullanılacağını belirlemek için algoritma varchar(max), varbinary(max), nvarchar(max), text, ntext xml, ve imagedeğerleri karmaşık. Sadece beklenen toplam öbek boyutu eklemek lob değerleri ortalama boyutu eklemeniz yeterlidir.
Sıkıştırma
Sıkıştırılmış bir yığın boyutu pre-calculate olamaz.
Seyrek sütunlar
Seyrek sütun alanı gereksinimleri hakkında daha fazla bilgi için bkz: Seyrek sütunlar kullanma.
Ayrıca bkz.
Kavramlar
Kümelenmiş bir dizin boyutunu tahmin etmek
Kümelendirilmemiş dizin boyutunu tahmin etmek
Diğer Kaynaklar
Clustered Index Design Guidelines
Creating Indexes (Database Engine)