Есть ли средство для определения размера данных, доступное для 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

Ура, Джон

Другие вопросы по тегам