Узнайте, сколько памяти занимает строка в базе данных - PullRequest
3 голосов
/ 20 апреля 2010

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

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

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

Ответы [ 3 ]

1 голос
/ 20 апреля 2010

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

1 голос
/ 20 апреля 2010

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

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

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

0 голосов
/ 20 апреля 2010

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

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

...