2011-01-06 3 views
4

Я пытаюсь вычислить, сколько места (Мб) это займет. В таблице базы данных есть 7 бит столбцов, 2 крошечных int и 1 guid.SQL Server 2008, сколько места занимает это место?

Попытка рассчитать сумму, которая будет занимать 16 000 строк.

Моя мысль состояла в том, что 7-разрядные столбцы потребляют 1 байт, 2 крошечных ints потребляют 2 байта, а guid потребляет 16 байт. Всего 19 байт за одну строку в таблице? Это будет означать 304000 байт для 16 000 строк или ~ 0.3mbs нас, что правильно? Есть ли байт метаданных?

+0

ли столбцы NULLABLE? Я думаю, что вы используете до 1 бит за столбец с нулевым значением. –

+0

Извините, нет столбцов с нулевым значением. Все они имеют значение по умолчанию 1 или 0, за исключением директивы, сгенерированной в C#. – Patrick

ответ

6

Есть several estimators out there, которые забирают осел работу

Вы должны принять во внимание Null растрового изображения, которое будет 3 байта в этом случае + количестве строк на страницу + заголовок строки + версию строки + указателях + все материал здесь:

Inside the Storage Engine: Anatomy of a record

Edit:

Ваши 19 байт фактических данных

  • имеет 11 байт накладных расходов
  • всего 30 байт в строке
  • около 269 строк на странице (8096/30)
  • требует 60 страниц (16000/269)
  • вокруг 490k пространство (60 х 8192)

  • несколько килобайт для индекса структуры первичного

+0

Так что эта страница по-прежнему довольно точна даже для SQL Server 2008 R2? http://support.microsoft.com/kb/827968 – Patrick

+0

@Patrick: извините, это не так. моя ссылка выше - лучше. – gbn

+0

@Patrick: от MSDN http://msdn.microsoft.com/en-us/library/ms178085.aspx – gbn

Смежные вопросы