Aracılığıyla paylaş


Bir yığın boyutunu tahmin etme

Bir yığın içinde veri depolamak için gereken alanı tahmin etmek için aşağıdaki adımları kullanabilirsiniz:

  1. Bulunan satır sayısını tablo:

    Num_Rows = satır sayısıtablo

  2. Kendi depolama için gereken alanı hesaplamak ve sabit uzunluk ve değişken uzunlukta sütun sayısını belirtin:

    Alan hesaplama sütun bu grupların her biri veri satırda yer kaplar.Boyutu, sütun veri türü ve uzunluğu belirtimine bağlıdır.Daha fazla bilgi için bkz: Veri türleri (veritabanı altyapısı).

    Num_Cols = toplam (sabit uzunluk ve değişken uzunlukta) sütun sayısı

    Fixed_Data_Size = tüm sabit uzunluklu sütunları toplam bayt boyutu

    Num_Variable_Cols = değişken uzunlukta sütun sayısı

    Max_Var_Size = tüm değişken uzunlukta sütun boyutu maksimum toplam bayt

  3. Bölümü null bir bitmap olarak bilinen bu satırın sütun yönetmek için rezerve null atanabilirlik.Boyutu Hesapla:

    Null_Bitmap = 2 + ((Num_Cols + 7) / 8)

    Yalnızca bir tamsayı kısmını bu ifade kullanılmalıdır.Bir hatırlatıcı atın.

  4. Değişken uzunlukta veri boyutu Hesapla:

    Değişken uzunlukta sütunları, tablo, 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*** olan her değişken uzunlukta sütun izlemek için.Bu formül, tüm değişken uzunluklu sütunları yüzde 100 olduğunu varsayar.Değişken uzunlukta sütun depolama alanı küçük bir yüzdesi kullanılacak öngörüyorsanız, ayarlayabilirsiniz ***Max_Var_Size*** göre toplam tablo boyutunun daha doğru bir tahmin verim için bu yüzde değeri.

<div class="alert">


> [!NOTE]
> <P>Bu birleştirebilirsiniz varchar, nvarchar, varbinary, veya sql_variant sütunları neden olan toplam tanımlanan tablo genişliği aşan 8,060 bayt.The length of each one of these columns must still fall within the limit of 8,000 bytes for a varchar, nvarchar,varbinary, or sql_variant column.Ancak, birleşik genişliklerini de 8,060 bayt sınırını aşıyor olabilir bir tablo.Daha fazla bilgi için bkz: <A href="ms186981(v=sql.105).md">8 kb aşan satır taşma veri</A>.</P>


</div>

Değişken uzunlukta sütun varsa, küme ***Variable_Data_Size*** 0.
  1. Toplam satır boyutu Hesapla:

    Row_Size = Fixed_Data_Size + Variable_Data_Size + Null_Bitmap + 4

    4 Formülde veri satırı satır üstbilgi yükü değerdir.

  2. (Sayfa başına 8096 boş bayt) sayfa başına satır sayısını hesaplayın:

    Rows_Per_Page 8096 = / (Row_Size + 2)

    Sayfa başına satır sayısı satırları sayfalara yayılan çünkü yuvarlama yöntemi kapalı en yakın tam satır.2 Formüldeki satırın giriş sayfa yuvası dizisi için değerdir.

  3. 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ı tam sayfaya yakın yuvarlanmış.
  1. (Sayfa başına 8192 toplam bayt) yığın veri depolamak için gereken alan miktarını hesaplamak:

    Yığın boyutu (bayt) = 8192 x Num_Pages

Bu hesaplama, aşağıdakileri dikkate almaz:

  • Bölümleme

    Bölümleme gelen genel giderleri en düşük düzeyde, ancak hesaplamak için karmaşık alandır.Dahil etmek önemli değildir.

  • Ayırma sayfaları

    Bir yığın için ayrılan sayfaları izlemek için kullanılan en az bir IAM sayfa vardır ancak alan yükü azdır ve deterministically kaç IAM sayfa kullanılan tam olarak hesaplamak için hiçbir algoritması vardır.

  • Büyük nesne (lob) değerleri

    The algorithm to determine exactly how much space will be used to store the LOB data types varchar(max), varbinary(max), nvarchar(max), text, ntextxml, and image values is complex.Beklenen toplam öbek boyutunu artırır, lob değerleri ortalama boyutu yalnızca eklemek yeterlidir.

  • Sıkıştırma

    Sıkıştırılmış öbek boyutu pre-calculate olamaz.