Узнайте, сколько памяти занимает строка в базе данных

Есть ли способ узнать, сколько места (на диске) занимает строка в моей базе данных?

Я хотел бы увидеть это для SQL Server CE, но если SQL Server 2008 не работает (я храню примерно одни и те же данные в обоих).

Причина, по которой я спрашиваю, заключается в том, что у меня есть столбец Image в моей базе данных SQL Server CE (это varbinary[max] в базе данных SQL 2008), и мне нужно знать, сколько строк я могу хранить, прежде чем я максимально исчерпаю память на моем устройство.


sql-server-2008 size diskspace sql-server-ce
person Vaccano    schedule 20.04.2010    source источник


Ответы (3)


Может быть, не на 100% то, что вы хотели, но если вы хотите знать, какой размер занимает изображение, просто сделайте

SELECT [RaportID]
                      ,DATALENGTH([RaportPlik]) AS 'FileSize'
                      ,[RaportOpis]
                      ,[RaportDataOd]
                      ,[RaportDataDo]
FROM [Database]

Любой другой дополнительный подсчет вам нужно сделать самостоятельно (например, в прогнозировании и т. д.).

person MadBoy    schedule 20.04.2010
comment
Именно то, что я искал. Спасибо за пример - person Vaccano; 20.04.2010

Столбец varbinary(max) потенциально может содержать до 2 ГБ данных для каждой строки. Для предполагаемого использования на основе существующих данных, возможно, вы могли бы провести некоторый анализ, используя функцию DATALENGTH, чтобы определить, какое пространство занимает типичное одно из ваших изображений, и экстраполировать оттуда.

person MartW    schedule 20.04.2010

Вы можете делать только приблизительные предположения — точного ответа на вопрос «сколько строк я могу сохранить, прежде чем максимально использовать память на своем устройстве» нет, поскольку вы не знаете, иметь эксклюзивное использование вашего устройства — другие программы тоже потребляют ресурсы, и вы можете знать, сколько памяти доступно только в настоящее время, а не когда-нибудь в будущем. Кроме того, ваши изображения, скорее всего, сжаты и поэтому занимают разное количество оперативной памяти.

В целях угадывания просто размер вашего изображения является хорошим приближением к размеру строки; накладные расходы на структуру строк незначительны.

person Will    schedule 20.04.2010
comment
Устройство принадлежит моей компании и предназначено для использования моим приложением. - person Vaccano; 20.04.2010
comment
@Vaccano, а ваши изображения одинакового размера? - person Will; 20.04.2010
comment
Нет, но я использовал метод DATALENGTH и взял среднее значение. (Они близки к одному.) - person Vaccano; 20.04.2010