Настройка SQL 2008 для 1С

Для сохранения целостности структуры баз данных и обеспечения нормальной производительности необходимо проводить периодическое обслуживание. В этой статье рассмотрим какие задания по обслуживанию необходимо выполнять для баз данных 1С Предприятия, размещенных в MS SQL.

Настройка плана обслуживания баз данных MS SQL Server выполняется через программу Microsoft SQL Management Studio. Рассмотрим задачи, которые мы будем выполнять в рамках регулярного обслуживания баз данных:

В чем отличие полного бэкапа от разностного?

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

Разностное резервное копирование сохраняет все изменения созданные в базе данных с момента последнего полного бэкапа.

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

Создание полного бэкапа базы.

В обозревателе объектов переходим к пункту «Управление \ Планы обслуживания». В контекстном меню выбираем «Создать план обслуживания».

В этом основном плане обслуживания будем создавать вложенные планы полного бэкапа, промежуточного (разностного) бэкапа, перестроение индекса и обновление статистики.

В созданном плане нажимаем кнопку «Добавление вложенного плана»

Вводим название «Полный бэкап» и описание. Задаем расписание для выполнения задания: Раз в неделю в воскресенье в 2:00.

Добавляем в созданный план задание. Для этого с панели элементов перетаскиваем в поле заданий вложенного плана элемент с названием Задача «Резервное копирование базы данных».

Открываем задание на редактирование: правой клавишей мыши по заданию, выбираем пункт «Изменить».

  • Тип резервной копии: Полное;
  • Базы данных: если выбрать «Все пользовательские базы данных», то будет выполняться бэкап всех созданных вами баз данных, но есть возможность указать на конкретные базы;
  • Создать файл резервной копии для каждой базы данных: отмечаем пункт «Создавать вложенный каталог для каждой базы данных», чтобы удобнее было ориентироваться в бэкапах и указываем путь как папке, в которой будут храниться резервные копии;
  • Отмечаем пункт «Проверять целостнойсть резервной копии»;
  • Устанавливаем параметр «Сжимать резервные копии».

Создание разностного бэкапа.

Создание плана на выполнение разностного бэкапа выполняется аналогично полному бэкапу.

Отметим некоторые отличия в настройке:

  • Расписание выполнения заданий: с понедельника по субботу в 2:00;
  • Тип резервной копии выбираем «Разностное»

Очистка устаревших бэкапов.

Для очистки устаревших бэкапов баз 1С Предприятия в MS SQL выбираем на панели элементов плана обслуживания Задачу «Очистка после обслуживания».

В моем случае разностный и полный бэкап хранятся в одной папке. Поэтому я добавляю только одно такое задание во вложенный план для разностного бэкапа. Если вы резервные копии будете хранить отдельно, то лучше создать отдельное задание в плане каждого бэкапа.

Перетаскиваем задачу с Панели элементов в план и задаем такие настройки:

  • Удалить файлы следующего типа: Файлы резервных копий;
  • Удалить из папки файлы с определенным расширением: указываем папку хранения бэкапов баз 1С;
  • Включить вложенные папки первого уровня: отмечаем галочкой, потому-что у нас для бэкапов баз создаются отдельные папки
  • Удалить файлы на основе возраста во время выполнения задачи: здесь все ограничивается лишь вашими потребностями и объемом жесткого диска, а мне достаточно 4 недель.

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

Через стрелки можно задавать условие, при котором будет выполнять следующее задание: ошибка, успешное завершение, выполнение. Изменить условие можно щелкнув правой клавишей мыши по стрелке.

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

Переходим к очень важному и ответственному пункту: Перестроение индекса и обновление статистики.

Дефрагментация индекса (реорганизация или перестроение).

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

Для устранения фрагментированных областей баз данных в MS SQL существует возможность проведения Реорганизации индекса и Перестроение индекса.

В чем разница между реорганизацией и перестроением?

Перестроение индекса означает, что фрагментация будет устранена путем удаления и пересоздания индексов.

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

В каких случаях требуется реорганизация индекса?

  • Уровень фрагментации от 5% до 30%, то проводим реорганизацию.
  • Фрагментация свыше 30% необходимо проводить перестроение индекса

Под выполнение этих задач очень подходит инструкция Transact-SQL со следующим содержимым:

DECLARE @SQL NVARCHAR(MAX) DECLARE @MIN_IND_SIZE integer = 128 DECLARE @MIN_FRAGMENTATION_LEVEL integer = 10 DECLARE @CRITICAL_FRAGMENTATION_LEVEL integer = 30 DECLARE currentIndex CURSOR LOCAL READ_ONLY FORWARD_ONLY FOR SELECT ‘ALTER INDEX ON ) + ‘]. ‘ + CASE WHEN stat.avg_fragmentation_in_percent > @CRITICAL_FRAGMENTATION_LEVEL THEN ‘REBUILD WITH (SORT_IN_TEMPDB = ON, ONLINE = ON)’ ELSE ‘REORGANIZE’ END + ‘;’ FROM ( SELECT stat., stat.index_id, avg_fragmentation_in_percent = MAX(stat.avg_fragmentation_in_percent) FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, ‘DETAILED’) stat WHERE stat.page_count > @MIN_IND_SIZE AND stat.index_id > 0 AND stat.avg_fragmentation_in_percent > @MIN_FRAGMENTATION_LEVEL GROUP BY stat., stat.index_id ) stat JOIN sys.indexes ind WITH(NOLOCK) ON stat. = ind. AND stat.index_id = ind.index_id JOIN sys.objects obj WITH(NOLOCK) ON obj. = stat. OPEN currentIndex FETCH NEXT FROM currentIndex INTO @SQL WHILE @@FETCH_STATUS = 0 BEGIN print @sql EXEC sys.sp_executesql @SQL FETCH NEXT FROM cur INTO @SQL END CLOSE currentIndex DEALLOCATE currentIndex

Создаем вложенный план с названием «Дефрагментация индекса и обновление статистики» с расписанием раз в день в 4:00 и перетаскиваем в него из Панели элементов Задачу «Выполнение инструкции T-SQL».

Вставляем в задачу приведенную выше инструкцию T-SQL.

Обновление статистики.

Обновление статистики в базах данных MS SQL, как и дефрагментация индекса, имеет большое значение для повышения производительности работы SQL сервера. Благодаря обновлению статистики SQL Server способен более эффективно выполнять планы запроса.

Выбираем на панели элементов Задача «Обновление статистики» и добавляем ее во вложенный план «Дефрагментация индекса и обновление статистики».

  • Базы данных: все пользовательские базы данных;
  • Обновить: вся собранная статистика;
  • Тип просмотра: полный просмотр.

При помощи стрелки связываем условием выполнение задачи по обновлению индекса с задачей по дефрагментации. Таким образом в случае успешного выполнения дефрагментации будет проведено обновление статистики.

Не забываем сохранить созданный план обслуживания…

… и убедиться, что запущен Агент SQL Server.

64. Для реализации своих задач Организация предполагает изменить структуру некоторых таблиц базы данных. Также предполагается использовать хранимые процедуры и триггеры для реализации обработки данных, реализовать экспорт данных путем прямого чтения таблиц, добавить новые индексы и изменить структуру некоторых индексов. Имеет ли Организация право вносить в систему перечисленные изменения?
——————————
Лицензионное соглашение не позволяет использовать недокументированные фирмой «1С» средства для построения решений на платформе 1С:Предприятие. Это означает, что средства СУБД (или любые другие внесистемные средства) можно использовать только в том случае, если документация по продуктам линейки «1С:Предприятие» (включая ИТС) содержит явную рекомендацию использовать данное средство для решения данной задачи.
Во всех остальных случаях лицензионное соглашение позволяет использовать для построения решений только штатные средства платформы. В частности, можно обращаться к данным информационной базы только при помощи объектов «1С:Предприятия», специально предназначенных для работы с данными (запросы, справочники, документы и т.д.). Нельзя обращаться к данным информационной базы напрямую, минуя уровень объектов работы с данными «1С:Предприятия» — например при помощи средств СУБД или при помощи внешних компонент, которые реализуют прямой доступ к СУБД. Это ограничение распространяется на любые действия с данными, в том числе на изменение их структуры, а так же на чтение или изменение самих данных информационной базы или служебных данных «1С:Предприятия».
Данное ограничение необходимо для обеспечения стабильности работы механизмов системы, осуществления поддержки и возможности перехода на новые версии «1С:Предприятия».

Собственно с глобальными настройками все. Теперь переходим к настройкам рабочей базы данных (или нескольких баз, если такое имеет место быть).

2. Настройка рабочей базы данных

Заходим в свойства нужной нам базы данных:

Если база еще не развернута из .dt файла, и вы знаете примерный ее размер, то первичному файлу размер инициализации лучше сразу указать >= размера базы, но это дело вкуса, он все равно вырастет при развертке. А вот Автоувеличение размера надо обязательно указать примерно по 200 МБ на базу и по 50 МБ на лог, т.к. значения по умолчанию – рост по 1МБ и по 10% очень сильно тормозят работу сервера, когда ему при каждой 3й транзакции надо файл увеличивать. Также, если не используетет RAID массив, то хранение файла базы и файла лога лучше указать на разных физических дисках. Ну и ограничить лог 2-4 ГБ, чтоб сильно не пух.

📌 Реклама

Остальные настройки как на скришоте:

С настройками базы все. Осталось настроить регламентные задания.

3. Настройка регламентных заданий

Сначала создаем Maintenance Plan в разделе Management:

Дефрагментацию индексов и сбор статистики нужно производить ежедневно, т.к. если фрагментированость индексов > 25%, это резко снижает производительность сервера. Дефрагментация и обновление статистики делается быстро и не требует отключения пользователей. Насколько ваши индексы фрагментированы можно посмотреть очень хорошей и многофункциональной обработкой Гилева Вячаслава, с названием Lock1C.epf, и которую он убрал со своего сайта из-за наезда 1С-ников за нарушение какого-то пункта лицензионного с., но хорошему админу гугл всегда в помощь J . Также желательно делать полную переиндексацию, с блокировкой БД, хотя бы раз в неделю, естественно после полной переиндексации сразу же делается дефрагментация индексов и обновление статистики.

📌 Реклама

Настройка бэкапа средствами SQL.

Ту все просто, добавляем 2 новых задания Agent’у:

Full BackUp, с периодичностью 1 раз в сутки и 2мя шагами T-SQL скриптов:

Бывает что MS SQL на нагруженных проектах загружает процессор под сотку. А выполнение dbcc freeproccache неожиданно решает эту проблему на пару часов. А потом снова CPU 100%. Разберемся?

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

1 Select * from table where id=@var

Тогда все хорошо. Создается план выполнения, добавляется в кеш, потом в него подставляется переменная @var и все работает быстро и хорошо. Но как только дело доходит до запросов типа

1 Select * from table where id in (1,3,7,123)

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

Это само по себе не особо плохо, но когда таких планов три миллиона, это забивает память и затрудняет поиск нужных планов выполнения. Поможет определить сколько таких планов в кеше запрос:

И если такой фигни больше 50% от всего кеша, с этим надо что-то делать. Есть пара вариков решения данной проблемы.

Parameterization forced

То есть для своей базы надо выполнить запрос

1 ALTER DATABASE db_name SET PARAMETERIZATION FORCED;

И SQL Server будет по жести параметризировать все запросы — то есть даж если вы не особо парились по поводу использования переменных в запросах, теперь сервер сам их будет втыкать везде куда можно. Так как запросы кешируются, то чем меньше уникальных запросов — тем лучше. Простым языком

1 Select * from table where id=@var

намного лучше, чем

1 Select * from table where id=10

И если включить PARAMETERIZATION FORCED то Sql server начнет сам автоматически эти самые параметры везде втыкать. безусловно это разгрузит кеш планов, но может получиться, что сам процесс автоматической параметризации будет занимать еще больше процессорного времени. В общем надо тестить. Кстати отключить этот режим можно командой

1 ALTER DATABASE mp3db SET PARAMETERIZATION SIMPLE;

Optimize for ad hoc workloads по-русски

И к 2008 версии ребята из Microsoft осознали проблему — и сделали у Sql Server в настройках пункт Optimize for ad hoc workloads или Оптимизировать для нерегламентированных рабочих нагрузок если по-нашему.

И если это включить, то Sql Server будет добавлять план в кеш только со второго использования. Это может реально решить проблему, но скорее всего ее просто отсрочит.

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

Рассмотрим вопросы инсталляции и конфигурации MS SQL Server для 1С.

В первую очередь стоит отметить, что способ инсталляции MS SQL Server по большей части зависит от того, какая предполагается нагрузка на 1С.

Отталкиваясь от этого можно выделить такие варианты:

  • Первый вариант. Организация, с 500 и более операций в сутки;
  • Второй вариант. Организация, с 500 и более преимущественно не интерактивных операций в сутки (загрузка платежей из банк-клиента и интернета, заказов из интернет-магазина, формирование транспортных и складских операций и т.п.);
  • Третий вариант. Организация, с числом ежедневных операций от 500 и более, подавляющее число которые интерактивны (инициация и оформление со стороны пользователя).

Первые два варианта MS SQL Server можно инсталлировать на тот же сервер, где есть установленный 1С, что преимущественно актуально для второго варианта, если соблюдать требований к техническим характеристикам. В третьем же случае наиболее оптимальным решением станет установка MS SQL Server на отдельный сервер.

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

При инсталляции на отдельный сервер:

Процессор

  • Первый вариант. Не менее 1.8 ГГц (желательно с двумя ядрами)
  • Второй вариант. Не менее 2 ГГц с количеством ядер от двух и более
  • Третий вариант. Не менее 3 ГГц с количеством ядер от четырех и более

Оперативная память

  • Первый вариант. От 8 ГБ и более
  • Второй вариант. От 32 ГБ и более
  • Третий вариант. От 128 ГБ и более

Накопитель

  • Первый вариант. SAS от 120 ГБ
  • Второй вариант. SAS от 500 ГБ (рекомендуется SSD)
  • Третий вариант. SAS от 1 ТБ (желательно SSD)

Скорость сетевого подключения

  • Первый вариант. Минимум 1 Гб/сек
  • Второй вариант. Минимум 1 Гб/сек (лучше всего использовать оптику)
  • Третий вариант. Минимум 1 Гб/сек (оптика)

При совместной инсталляции с сервером 1С Предприятия требования будут следующими:

Процессор

  • Первый вариант. Как минимум 2 ГГц с количеством ядер от двух и более
  • Второй вариант. Как минимум 3 ГГц с количеством ядер от четырех и более
  • Вариант 3. Категорически не рекомендуется

Оперативная память

  • Первый вариант. Минимум 32 ГБ
  • Второй вариант. Минимум 128 ГБ
  • Третий вариант. Категорически не рекомендуется

Накопитель

  • Первый вариант. SAS от 500 ГБ (рекомендуется SSD)
  • Второй вариант. SSD от 1 ТБ
  • Третий вариант. Категорически не рекомендуется

Скорость сетевого подключения

  • Первый вариант. 1 Гб/сек
  • Второй вариант. 1 Гб/сек
  • Третий вариант. Категорически не рекомендуется

Стоит учитывать, что указанные выше значения являются минимальными требованиями для комфортного рабочего процесса. Более конкретные параметры подбираются в индивидуальном порядке в зависимости от ситуации, берутся в расчет ключевые потребностями MS SQL Server в дисковой подсистеме и объеме ОЗУ.

Теперь стоит рассмотреть непосредственно сам процесс инсталляции MS SQL Server для 1С в варианте MS SQL Server 2014 на ОС MS Windows Server 2012

Первым делом потребуется перенос дистрибутива инсталляции программы на локальный жесткий диск сервера.

В появившемся окне на правой панели выбирается пункт «Установка».

После этого начнется установка, в процессе которой вам нужно будет ввести ключ и прочесть условия лицензирования, а затем определиться с ролью сервера, выбрав «Установка компонентов MS SQL Server».

Дальше необходимо выбрать устанавливаемые компоненты. Как правило, они все выделяются, однако если это не так, нажимайте на «Выделить все».

В дальнейшем нужно подобрать наименование для экземпляра MS SQL Server. Во избежание вероятных проблем с производительностью рекомендуется оставить «экземпляр по умолчанию», а также не менять путь.

Изменять ничего не потребуется — просто выбирайте «Далее» до возникновения окна «Настройка компонента Database Engine», где на первой закладке потребуется указать пользователя «sa» и придумать пароль.

После просто жмите «Далее», ничего не меняя.

Теперь установка MS SQL Server для 1С завершена.

Для открытия нужно перейти в приложения и найти там SQL Server 2014 Management Studio.

В процессе запуске откроется окно для авторизации, где указывается «проверка подлинности SQL Server». В имени пользователя выбирается «sa», в то время как в поле для пароля – заданная при инсталляции комбинация.

Теперь выбираем «Безопасность» слева в дереве, а затем «Имена входа». После нажатия на правую кнопку мыши выбираем «Создать имя входа», а затем указываем имя и пароль пользователя, запоминая их.

В закладке «Роли сервера» проставляем галочки как на рисунке.

Теперь в закладке «Защищаемые объекты» выбираем право на соединение с SQL, по аналогии с рисунком.

Нажимаем на «Ок», после чего завершается установка и настройка.

Подключение базы 1С на сервере 1С

Сначала нужно открыть консоль администрирования серверов «1С:Предприятие».

Делаем всё, как на рисунке.

Открывшийся диалог заполняем как на рисунке. Там где <Имя базы на латинице> — имя базы. Там где <Имя компа MS SQL Server> — имя ПК, на который ранее устанавливался MS SQL Server.

Нажимаем «Ок». Теперь база подключена.

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

В таком случае требуется запуск диалога открытия баз 1С и нажатие на кнопку «Добавить».

В окне выберете «Создание новой информационной базы».

В следующем по очереди окне нужно выбрать необходимый шаблон в дереве, либо указать «Создание новой базы без конфигурации…».

Затем потребуется задать имя базы и указать, что она будет на сервере «1С:Предприятие».

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

Выбирайте «Далее» и «Готово».

Теперь процесс оптимизации SQL под 1С окончен. Можно осуществлять запуск и приступать к работе.

Остались вопросы? Закажите бесплатную консультацию наших специалистов!

Add a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *