Определение размера базы данных в SQL Server: лучшие подходы

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Чтобы определить размер вашей базы данных SQL Server, используйте следующий запрос T-SQL:

SQL
Скопировать код
SELECT 
    DB_NAME() AS ИмяБазыДанных,
    SUM(size) * 8. / 1024 AS РазмерБазыДанных_MB
FROM 
    sys.master_files
WHERE 
    database_id = DB_ID()
GROUP BY 
    database_id;

Этот запрос помогает вычислить общий размер файлов в текущей базе данных и переводит его из страниц в мегабайты.

Кинга Идем в IT: пошаговый план для смены профессии

Более детальное изучение размера базы данных

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

Определение объема данных и журналов отдельно

SQL
Скопировать код
SELECT 
    DB_NAME(database_id) AS ИмяБазыДанных,
    type_desc,
    SUM(size) * 8. / 1024 AS Размер_MB
FROM 
    sys.master_files
GROUP BY 
    database_id, type_desc;

С помощью данного запроса можно определить объем пространства, который занимают данные и журналы.

Выявление свободного пространства в сравнении с общим размером

SQL
Скопировать код
SELECT 
    DB_NAME(database_id) AS ИмяБазыДанных,
    file_id,
    name AS ИмяФайла,
    type_desc,
    size * 8. / 1024 AS ТекущийРазмер_MB,
    size * 8. / 1024 – CAST(FILEPROPERTY(name, 'SpaceUsed') AS INT) * 8. / 1024 AS СвободноеПространство_MB
FROM 
    sys.master_files
WHERE 
    database_id = DB_ID();

Здесь мы рассматриваем текущий размер каждого файла и свободное пространство, доступное в них.

История изменения размера базы данных и резервных копий

SQL
Скопировать код
SELECT 
    database_name,
    backup_size / 1024 / 1024 AS BackupSize_MB,
    backup_finish_date,
    DATEDIFF(day, backup_finish_date, GETDATE()) AS ДнейСПоследнегоБэкапа
FROM 
    msdb..backupset
WHERE 
    database_name = 'YourDatabaseName'
ORDER BY 
    backup_finish_date DESC;

Такой запрос позволяет проследить динамику роста базы данных и историю создания резервных копий.

Визуализация

Для наглядности, давайте представим каждую базу данных как коробку конфет. Используя SQL-команды, мы сможем определить, сколько у нас таких коробок:

SQL
Скопировать код
SELECT
    DB_NAME(database_id) AS ИмяБазыДанных,
    CONVERT(DECIMAL(10,2), SUM(size) * 8 / 1024) AS Размер_MB
FROM sys.master_files
GROUP BY database_id;

Таким образом, мы получаем размер каждой "коробки".

Глубинный анализ с помощью встроенных отчетов

В SQL Server Management Studio (SSMS) есть отчеты о использовании дискового пространства, которые могут помочь в визуализации данных о размере базы данных.

  • Кликните правой кнопкой мыши по базе данных в SSMS > Отчеты > Стандартные отчеты > Использование диска.

Такой подход дает глубокое понимание размеров файлов данных и лог-файлов вашей базы данных.

Полезные материалы

  1. sp_spaceused (Transact-SQL) – SQL Server | Microsoft Learn — Официальная документация Microsoft по процедуре sp_spaceused.
  2. Estimating the Size of a Database | Microsoft Learn — Методы Microsoft для оценки размера базы данных.
  3. SQL Server – Find the Size of Database File — Советы от Пинал Дейва о поиске размеров файлов базы данных и лог-файлов.
  4. Get size of all tables in database — Обсуждение на Stack Overflow о подсчете размера всех таблиц.
  5. How we deallocate the memory of a row – SQLServerCentral — Обсуждение на SQLServerCentral о написании запросов и освобождении памяти.