Есть ли средство для определения размера данных, доступное для SQL Server 2005?
Я должен оценить размер данных базы данных при заполнении с прогнозными значениями для каждой таблицы. Он должен по крайней мере включать размер, который будет использоваться для данных и индексов.
Раньше в SQL Server 2000 был такой инструмент, который создавал приблизительный размер при условии количества записей в таблице (я думаю, он поставлялся с комплектом ресурсов SQL 2000). Я не могу найти этот инструмент для 2000 или 2005 года:(
Я знаю о sp_spacedused, но это не сработает для меня, так как мне нужно предварительно заполнить базу данных значениями, и у меня есть потенциально много сценариев для расчета.
3 ответа
На вашем месте, я бы, вероятно, просто создал бы базу данных и попытался бы заполнить ее репрезентативной выборкой данных, а затем проверить, как выглядят размеры таблиц.
Этот SQL-скрипт выполняет все таблицы - вам не нужно вызывать sp_spaceused для каждой таблицы:
SELECT
t.NAME AS TableName,
i.name as indexName,
sum(a.total_pages) as TotalPages,
sum(a.used_pages) as UsedPages,
sum(a.data_pages) as DataPages,
(sum(a.total_pages) * 8) / 1024 as TotalSpaceMB,
(sum(a.used_pages) * 8) / 1024 as UsedSpaceMB,
(sum(a.data_pages) * 8) / 1024 as DataSpaceMB
FROM
sys.tables t
INNER JOIN
sys.indexes i ON t.OBJECT_ID = i.object_id
INNER JOIN
sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
INNER JOIN
sys.allocation_units a ON p.partition_id = a.container_id
WHERE
t.NAME NOT LIKE 'dt%' AND
i.OBJECT_ID > 255 AND
i.index_id <= 1
GROUP BY
t.NAME, i.object_id, i.index_id, i.name
ORDER BY
object_name(i.object_id)
В прошлый раз, когда я сделал это, это был Excel, карандаш, задняя часть конверта и грамотная работа с догадками. Ответ не был слишком неточным. Я предполагаю, что вы говорите о серьезных объемах данных, поскольку диск сегодня настолько дешев / доступен, что все, кроме самых больших БД, будут работать на небольших (ish) серверах.
Можете ли вы дать более подробную информацию об ожидаемом количестве строк и типе данных, которые вы будете хранить. Кстати, не добавляйте BLOB -объекты / изображения / видео в базу данных - это ужасно, когда масштабируется.
Рассматривали ли вы использовать инструмент для создания фиктивных данных?
Вы можете создать таблицы с достаточным количеством данных, чтобы обеспечить хорошую оценку (то есть создать некоторые репрезентативные данные, а затем проанализировать их) размера ваших производственных баз данных.
Вам могут пригодиться такие инструменты, как Red Gates SQL Data Generator.
http://www.red-gate.com/products/SQL_Data_Generator/index.htm
Ура, Джон