Published on

December 27, 2017

Управление дисковым пространством с помощью SQL Server Filestream

Одной из проблем, с которыми сталкиваются пользователи SQL Server, является управление дисковым пространством, особенно при использовании функции filestream. В недавнем случае с одним из моих клиентов они сообщили о нехватке свободного дискового пространства на диске, где хранятся их файлы filestream. Этот клиент сильно полагается на функцию filestream, поэтому важно найти решение этой проблемы.

После исследования проблемы я обнаружил, что медленное освобождение дискового пространства filestream после удаления записей из таблиц базы данных связано с процессом сборщика мусора. Этот процесс удаляет файлы из операционной системы, когда соответствующие записи удаляются из таблицы. Хотя в Интернете есть множество статей, объясняющих внутреннее устройство этого процесса, я предоставлю обходное решение/решение для решения этой проблемы.

Если вы столкнулись с ситуацией, когда дисковое пространство не освобождается даже после удаления данных, и ваша база данных является высокотранзакционной, вы можете предпринять следующие шаги:

  1. Убедитесь, что на регулярной основе нет много активности. Если возможно, выполните ручную контрольную точку в базе данных.
  2. Регулярно выполняйте резервное копирование журнала транзакций, особенно если вы используете модель восстановления FULL или BULK_LOGGED.
  3. Проверьте наличие долго выполняющихся транзакций в базе данных и устраните их соответствующим образом.
  4. Если были выполнены вышеуказанные шаги и свободное пространство по-прежнему заканчивается, вы можете использовать хранимую процедуру sp_filestream_force_garbage_collection для принудительной очистки мусора. Вот синтаксис:
EXEC sp_filestream_force_garbage_collection @dbname = 'ИмяБазыДанныхЗдесь'

Чтобы автоматизировать этот процесс, вы можете создать задание SQL Server Agent для выполнения хранимой процедуры sp_filestream_force_garbage_collection с наименьшей возможной частотой.

Следуя этим шагам, вы можете эффективно управлять дисковым пространством при использовании функции filestream в SQL Server.

Ссылка: Pinal Dave (https://blog.sqlauthority.com)

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.