Каталог решений - Как разбить базу на файлы и не сойти с ума

Как разбить базу на файлы и не сойти с ума

Как разбить базу на файлы и не сойти с ума

В наличии

Разбиение базы данных 1C на файлы и последующее сопровождение. Нюансы, грабли и прочее.

Категория:

Описание

Суть вопроса

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

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

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

Для чего вообще может понадобиться разбивать базу данных на отдельные файлы? Самые распространенные кейсы:

  1. Есть регистр сведений, в котором хранятся двоичные данные файлов. Необходимо вынести хранение файлов на отдельный диск / хранилище, чтобы освободить место на быстрых дисках.
  2. Есть старые архивные таблицы, которые уже редко используются, но удалять данные нельзя. Почему бы такие таблицы также не перенести на отдельные диски, которые для этого и предназначены. Тем более такие файловые группы можно сделать только для чтения.
  3. Ускорить бэкапирование базы, т.к. архивные файловые группы можно не бэкапировать каждый раз. Они ведь не меняются!
  4. Улучшение производительности, за счет распределения файлов базы данных на отдельные носители.

Тему ускорения бэкапирования и производительности сейчас мы рассматривать не будем, но Вы можете прочитать об этом в публикации про секционирование. Сосредоточимся на описании настроек для файловых групп и их сопровождении. Все примеры ниже будут сделаны для SQL Server, но и для PostgreSQL это будет работать с некоторыми модификациями.

Стандартный подход

Любая база, будь то для 1С или любого другого приложения, поддерживает разбиение базы на несколько файлов (конечно, если это поддерживает СУБД). В контексте SQL Server это реализуется с помощью файловых групп.

По умолчанию база содержит лишь одну файловую группу "PRIMARY", которую 1С и использует для своих целей. Кроме таблиц и индексов в этой предопределенной группе хранится служебная информация о базе, различные заголовки и др., поэтому полностью заменить эту группу на другую нельзя, она всегда будет присутствовать.

Однако, мы можем добавить собственные файловые группы и использовать их для 1С’ных таблиц, причем сама платформа об этом не узнает.

Возьмем для примеров демобазу БСП и создадим в ней две новых файловых группы.

-- В примере имя базы данных на сервере СУБД имеет название "bsl"
USE [master]
GO
ALTER DATABASE [bsl] ADD FILEGROUP [FILEGROUP_2]
GO
ALTER DATABASE [bsl] ADD FILEGROUP [FILEGROUP_3]
GO

Но просто добавить файловые группы недостаточно. Еще нужно добавить файлы данных, для которых эти файловые группы будут задействованы.

-- Оставляем стандартные параметры инициализации файлов, для нашего примера это не критично.
-- Все файлы базы данных находятся в каталоге "D:\DBs"

-- Добавляем файлы для файловых групп
ALTER DATABASE [bsl] 
    ADD FILE ( NAME = N'bsl_fg_2', FILENAME = N'D:\DBs\bsl_fg_2.mdf' , SIZE = 8192KB , FILEGROWTH = 65536KB ) 
    TO FILEGROUP [FILEGROUP_2]
GO
ALTER DATABASE [bsl] 
    ADD FILE ( NAME = N'bsl_fg_3', FILENAME = N'D:\DBs\bsl_fg_3.mdf' , SIZE = 8192KB , FILEGROWTH = 65536KB ) 
    TO FILEGROUP [FILEGROUP_3]
GO

Отлично, у нас есть две файловые группы "FILEGROUP_2" и "FILEGROUP_3", осталось их задействовать. Есть несколько основных вариантов:

  1. Мы можем вручную изменить основную файловую группу базы и сделать реструктуризацию средствами 1С.
  2. Мы можем пересоздать кластерный или другие индексы средствами T-SQL, указав для использования нужную файловую группу.
  3. Ничего не делать.

По третьему варианту написано довольно много примеров в сети, поэтому рассмотрим только первые два пункта. Все примеры будем делать на регистре сведений "История адресных объектов", который на стороне базы представлен таблицей "_InfoRg4683" с несколькими индексами.

Вперед через реструктуризацию

И так, для начала установим основную файловой группой — одну из тех, что добавили выше.

 

has been added to your cart:
Оформление заказа