Мастер-Тур(15):Настройка заданий — различия между версиями
[досмотренная версия] | [досмотренная версия] |
Biryukov (обсуждение | вклад) |
Biryukov (обсуждение | вклад) |
||
(не показано 20 промежуточных версий 3 участников) | |||
Строка 2: | Строка 2: | ||
==Введение== | ==Введение== | ||
− | + | Статья предназначена для системных администраторов, контролирующих работоспособность ПК «Мастер-Тур 15». Статья описывает какие задания (Jobs) необходимо установить, чтобы постоянно очищать базу данных от устаревших и ненужных данных, а также проводить обслуживание таблиц, что положительно влияет на общую производительность ПК. | |
==Создание заданий (Jobs)== | ==Создание заданий (Jobs)== | ||
Строка 10: | Строка 10: | ||
При использовании [[Мастер-Тур:Создание_заданий_для_MS_SQL_Server_Express|Express-издания]] Microsoft SQL Server вместо заданий sql-сервера используется планировщик заданий Windows | При использовании [[Мастер-Тур:Создание_заданий_для_MS_SQL_Server_Express|Express-издания]] Microsoft SQL Server вместо заданий sql-сервера используется планировщик заданий Windows | ||
<br /> | <br /> | ||
+ | |||
+ | Для создания необходимых заданий необходимо выполнить скрипт по базе данных (''CreateJob_NameJob.sql''), который можно запросить у своего куратора (размещены по пути ''\\Scripts\utils\Jobs''). Задания не должны работать одновременно. | ||
==Список стандартных заданий (Jobs)== | ==Список стандартных заданий (Jobs)== | ||
Строка 18: | Строка 20: | ||
| '''Интервал запуска''' | | '''Интервал запуска''' | ||
| '''Описание''' | | '''Описание''' | ||
+ | |- | ||
+ | | Название БД_CleanCosts<br /> | ||
+ | '''Обрабатывается с релиза 15.8, stable 2023.10''' | ||
+ | | SET DATEFORMAT YMD | ||
+ | Maintenance_CleanCost_job<br /> | ||
+ | Ниже задаются настройки (описаны в описании) | ||
+ | | 1 сутки<br />(ночью)<br /> | ||
+ | | Удаляет данные из таблицы цен, ценовых пакетов и таблиц истории History, HistoryDetail, HistoryCosts, удаляются ценовые блоки без цен. <br /> | ||
+ | Удаляется история, относящаяся к ценам, которые были удалены.<br /> | ||
+ | Параметры задания задаются в настройке шага задания.<br /> | ||
+ | Ниже указано описание настроек:<br /> | ||
+ | * @beginjob = '23:00:00' /* Время, с которого можно делать чистку. */ , | ||
+ | * @endjob = '08:00:00' /* Время, во сколько чистка должна остановиться. */, | ||
+ | * @DaysAgo = '730' /* Количество дней, до которых будет проводиться удаление. Текущая дата минус указанное число дней. Проверяются 3 даты: дата действия по, дата продажи по, дата заезда по. */, | ||
+ | * @DateAgo = '' /* '2010-01-01' (формат для примера). Дата, до которой производится удаление. Значение приоритетней над @dayago. Проверяются 3 даты: дата действия по, дата продажи по, дата заезда по. */, | ||
+ | * @cleancosts = 1 /* Включить, если нужно чистить цены */, | ||
+ | * @cleanhistory = 1 /* Включить, если нужно чистить историю */, | ||
+ | * @cleanhistorycosts = 1 /* Включить, если нужно чистить историю цен */, | ||
+ | * @pkg_name = '' /* 'название пакета' Название пакета для удаления. Указано для примера. Единичный выбор. Поиск будет производиться через LIKE */, | ||
+ | * @pkg_key_list = '' /* 3284 Можно указать ключи пакетов через запятую. Если не использовать, то оставить Null или ''. */, | ||
+ | * @cn_key_list = '' /* Ключи стран для пакетов (даже если цена заведена для другой страны. Выборка цен производится по стране пакета и удаление по пакету). Лучше страну не указывать, если нет уверенности. */, | ||
+ | * @exlude_pkg_key_list = '' /* Список ключей пакетов исключений через запятую */, | ||
+ | * @exlude_cn_key_list = '' /* Список ключей стран исключений */, | ||
+ | * @CountLines = 60000 /* Величина блока для удаления */ | ||
+ | <br /><font style="color:red">''Внимание!''</font><br /> | ||
+ | Если ключ пакета указан в списке ключей для удаления и в списке ключей для исключения, то данный пакет будет удален. Исключение не отработает. Аналогично работает с ключами стран. | ||
+ | |- | ||
+ | | Название БД_CleanCostsGDS<br /> | ||
+ | '''Обрабатывается с релиза 15.8, stable 2023.10''' | ||
+ | | SET DATEFORMAT YMD | ||
+ | Maintenance_CleanCostsGDS_job<br /> | ||
+ | Ниже задаются настройки (описаны в описании) | ||
+ | | 1 сутки<br />(ночью)<br /> | ||
+ | | Основным назначением задания является чистка цен и истории цен от GDS адаптеров.<br /> | ||
+ | Удаляются цены и пустые ценовые блоки старше указанного количества дней. Ценовые блоки от указанного<br /> | ||
+ | срока до текущего момента деактивируются, если в этом пакете нет цен на будущие даты.<br /> | ||
+ | Параметры задания задаются в настройке шага задания. <br /> | ||
+ | Ниже указано описание настроек:<br /> | ||
+ | * @beginjob = '23:00:00' /* Время, с которого можно делать чистку. */ , | ||
+ | * @endjob = '08:00:00' /* Время, во сколько чистка должна остановиться. */, | ||
+ | * @DaysAgo = '30' /* Количество дней. Текущая дата минус указанное число. Проверяются 3 даты: дата действия по, дата продажи по, дата заезда по. */, | ||
+ | * @DateAgo = '' /* '2010-01-01' (формат для примера). Дата, до которой производится удаление. Значение приоритетней над @dayago.Проверяются 3 даты: дата действия по, дата продажи по, дата заезда по. */, | ||
+ | * @cleancosts = 1 /* Включить, если нужно чистить цены */, | ||
+ | * @deactivate = 1 /* Включить, если надо деактивировать ценовые блоки от даты удаления до текущего момента */, | ||
+ | * @cleanhistory = 1 /* Включить, если нужно чистить историю */, | ||
+ | * @cleanhistorycosts = 1 /* Включить, если нужно чистить историю цен */, | ||
+ | * @pkg_name = 'Nemo_ALL(внешняя система)' /* 'название пакета' Название пакета для удаления. Указано для примера. Единичный выбор. Поиск будет производиться через LIKE */, | ||
+ | * @pkg_key_list = '' /* '3284,456' '''Обазательный параметр'''.Можно указать ключи пакетов через запятую. Если не использовать, то оставить Null или ''. */, | ||
+ | * @partner_name = 'Nemo_ALL(внешняя система)' /* Название партнера указано для примера. Поиск будет производится через LIKE */, | ||
+ | * @partner_key_list = '' /* '3284,456' '''Обазательный параметр'''. Можно указать ключи партнеров через запятую. Если не использовать, то оставить Null или '' */, | ||
+ | * @exlude_pkg_key_list = '' /* Список ключей пакетов исключений. Указывается через запятую. */, | ||
+ | * @exlude_partner_key_list = '' /* Список ключей партнеров исключений. Указывается через запятую. */, | ||
+ | * @svkey = 1 /* Ключ услуги для обработки (1 – авиаперелет, 3 – отель)*/, | ||
+ | * @CountLines = 50000 /* Величина блока для удаления */ | ||
+ | <br /><font style="color:red">''Внимание!''</font><br /> | ||
+ | Если ключ пакета указан в списке ключей для удаления и в списке ключей для исключения, то данный пакет будет удален. Исключение не отработает. Аналогично работает с ключами партнеров. | ||
+ | |- | ||
+ | | Название БД_CleanHistory<br /> | ||
+ | '''Обрабатывается с релиза 15.8, stable 2023.10''' | ||
+ | | SET DATEFORMAT YMD | ||
+ | Maintenance_CleanHistory_job<br /> | ||
+ | Ниже задаются настройки (описаны в описании) | ||
+ | | 1 сутки<br />(ночью)<br /> | ||
+ | | Удаляет данные из таблицы истории History, HistoryDetail, HistoryCosts.<br /> | ||
+ | Не удаляются строки, если заполнено поле hi_dgcod (т.е. информация относится к путевке).<br /> | ||
+ | Параметры задания задаются в настройке шага задания.<br /> | ||
+ | * @beginjob = '23:00:00' /* Время, с которого можно делать чистку. */ , | ||
+ | * @endjob = '08:00:00' /* Время, во сколько чистка должна остановиться. */, | ||
+ | * @DaysAgo = '730' /* Количество дней, до которых будет проводиться удаление. Текущая дата минус указанное число дней. */, | ||
+ | * @CountLines = 30000 /* Величина блока для удаления */ | ||
+ | Также после выполнения задания по очистке истории рекомендуется отдельно последовательно выполнить скрипты ''Defrag_history.sql'' и ''Defrag_HistoryDetail.sql'' для дефрагментации таблиц истории (строго во внерабочее время). Эти скрипты можно запросить у своего куратора. | ||
|- | |- | ||
| Название БД_Reindex | | Название БД_Reindex | ||
| Maintenance_reindex_job | | Maintenance_reindex_job | ||
| 1 сутки<br />(ночью) | | 1 сутки<br />(ночью) | ||
− | | | + | | Производится обслуживание таблиц и статистики на таблицах в базе данных.<br /> |
+ | Задание рекомендовано как замена штатных средств sql сервера, т.к. действия основываются на <br /> | ||
+ | количестве изменений и приоритетах таблиц. Уменьшена нагрузка и время выполнения относительно штатных средств.<br /> | ||
В запуске задания для reindex доступна опция '''@DisableRebuild = 1'''. Разрешает использовать в качестве перестроения индексов только функцию ''REORGANIZE''. Позволяет не блокировать работу с базой данных во время операции, но существенно увеличивает время работы скрипта и нагрузку на базу данных со всеми негативными последствиями. Необходимо использовать, если ''Rebuild'' индекса не позволяет использовать базу данных в полной мере из-за объема данных. | В запуске задания для reindex доступна опция '''@DisableRebuild = 1'''. Разрешает использовать в качестве перестроения индексов только функцию ''REORGANIZE''. Позволяет не блокировать работу с базой данных во время операции, но существенно увеличивает время работы скрипта и нагрузку на базу данных со всеми негативными последствиями. Необходимо использовать, если ''Rebuild'' индекса не позволяет использовать базу данных в полной мере из-за объема данных. | ||
+ | |- | ||
+ | | Название БД_StatsUpdate | ||
+ | '''Обрабатывается с релиза 15.8, stable 2023.10''' | ||
+ | | Maintenance_stats_run | ||
+ | | 1 сутки<br />(ночью) | ||
+ | | Задание обновления статистики в таблицах базы данных на основе изменения данных и веса таблицы в работе.<br /> | ||
+ | Задание рекомендуется использовать только по согласованию с куратором, если массовые изменения данных после <br /> | ||
+ | завершения приводят к замедлению работы с ценами в программе.<br /> | ||
+ | Задание можно держать выключенным и запускать только при необходимости руками.<br /> | ||
+ | Задание рекомендовано как замена штатных средств sql сервера, т.к. действия основываются на <br /> | ||
+ | количестве изменений и приоритетах таблиц. Уменьшена нагрузка и время выполнения относительно штатных средств.<br /> | ||
+ | |- | ||
+ | |} | ||
+ | <br /> | ||
+ | |||
+ | ==Список нестандартных заданий (Jobs) - скоро будут удалены, так как будет их замена== | ||
+ | |||
+ | {| class="wikitable" | ||
+ | | '''Название задания (Job Name)''' | ||
+ | | '''Запускаемая хранимая процедура''' | ||
+ | | '''Интервал запуска''' | ||
+ | | '''Описание''' | ||
+ | |- | ||
+ | | Задание создать самостоятельно.<br /> | ||
+ | Название БД_CostOffer_deactivate | ||
+ | | Содержимое файла CostOffer_deactivate.sql | ||
+ | | 1 сутки<br />(ночью) | ||
+ | | При работе с актуализацией цен [[Мастер-Тур(15):Программа туров. Внешние системы. Авиа GDS|Авиа GDS]] в базе данных создается значительное количество цен. Данный скрипт производит поиск неактуальных ценовых блоков, в которых есть цены, созданные механизмом обновления цен с прошедшими датами и деактивирует их.<br /> | ||
+ | В скрипте необходимо задать название пакета и партнера | ||
+ | Пример: | ||
+ | PR_NAME = 'Nemo(внешняя система)' | ||
+ | TL_NAME = 'Nemo(внешняя система)' | ||
+ | Скрипт можно запросить у своего куратора. Содержимое скрипта целиком разместить в задании. | ||
|- | |- | ||
| Название БД_CleanHistory<br /> | | Название БД_CleanHistory<br /> | ||
Строка 33: | Строка 141: | ||
В хранимой процедуре ''Maintenance_CleanHistory_job'' в параметрах ''@BeginJob'' и ''@EndJob'' можно задать время, в которое можно проводить обслуживание. По умолчанию установлено время с 23:00 до 08:00.<br /> | В хранимой процедуре ''Maintenance_CleanHistory_job'' в параметрах ''@BeginJob'' и ''@EndJob'' можно задать время, в которое можно проводить обслуживание. По умолчанию установлено время с 23:00 до 08:00.<br /> | ||
В хранимой процедуре ''Maintenance_CleanHistory_Run'' в параметре ''@DaysAgo'' можно установить дату, до которой будет проводиться очистка. По умолчанию задано 365 (то есть, при запуске 01.02.2022 года будут удаляться все записи от создания базы данных до 31.01.2021 года).<br /><br /> | В хранимой процедуре ''Maintenance_CleanHistory_Run'' в параметре ''@DaysAgo'' можно установить дату, до которой будет проводиться очистка. По умолчанию задано 365 (то есть, при запуске 01.02.2022 года будут удаляться все записи от создания базы данных до 31.01.2021 года).<br /><br /> | ||
− | Также рекомендуется отдельно выполнить скрипты ''Defrag_history.sql'' и ''Defrag_HistoryDetail.sql'' для дефрагментации таблиц истории. Эти скрипты можно запросить у своего куратора. | + | Также после выполнения задания по очистке истории рекомендуется отдельно последовательно выполнить скрипты ''Defrag_history.sql'' и ''Defrag_HistoryDetail.sql'' для дефрагментации таблиц истории (строго во внерабочее время). Эти скрипты можно запросить у своего куратора. |
|- | |- | ||
+ | | | ||
|} | |} | ||
<br /> | <br /> | ||
+ | |||
+ | ==Регламентные работы, рекомендованные Microsoft== | ||
+ | В процессе эксплуатации системы рекомендуется проводить регламентные работы с помощью [https://docs.microsoft.com/ru-ru/sql/relational-databases/maintenance-plans/use-the-maintenance-plan-wizard?view=sql-server-ver16 мастера планов обслуживания в SQL Server]. <br />Мастер планов обслуживания создает план обслуживания, который агент Microsoft SQL Server может выполняться регулярно. Это позволяет выполнять различные задачи администрирования базы данных, включая резервное копирование, проверки целостности базы данных или обновление статистики базы данных через указанные интервалы времени. <br /> <br /> | ||
+ | Обратите внимание, что описанный в статье блок по реорганизации индекса reindex нужно пропустить. Наш reindex, который мы предоставляем – реализован с учетом особенностей нашего ПО. | ||
+ | |||
+ | ==Внутренние скрипты== | ||
+ | Разработан скрипт для удаления акций по параметрам.<br /> | ||
+ | Расположен по пути ''\\Scripts\utils\Cleaning\Clean_Specials.sql''<br /> | ||
+ | Запросить его можно у своего куратора. |
Текущая версия на 09:47, 20 декабря 2023
Версия статьи от 20.12.2023. Для перехода на версию статьи, соответствующую используемой Вами версии программы, нажмите ссылку в таблице:
Содержание
Введение
Статья предназначена для системных администраторов, контролирующих работоспособность ПК «Мастер-Тур 15». Статья описывает какие задания (Jobs) необходимо установить, чтобы постоянно очищать базу данных от устаревших и ненужных данных, а также проводить обслуживание таблиц, что положительно влияет на общую производительность ПК.
Создание заданий (Jobs)
Перед созданием заданий необходимо убедиться, что установлен и запущен SQL Server Agent. При использовании Express-издания Microsoft SQL Server вместо заданий sql-сервера используется планировщик заданий Windows
Для создания необходимых заданий необходимо выполнить скрипт по базе данных (CreateJob_NameJob.sql), который можно запросить у своего куратора (размещены по пути \\Scripts\utils\Jobs). Задания не должны работать одновременно.
Список стандартных заданий (Jobs)
Название задания (Job Name) | Запускаемая хранимая процедура | Интервал запуска | Описание |
Название БД_CleanCosts Обрабатывается с релиза 15.8, stable 2023.10 |
SET DATEFORMAT YMD
Maintenance_CleanCost_job |
1 сутки (ночью) |
Удаляет данные из таблицы цен, ценовых пакетов и таблиц истории History, HistoryDetail, HistoryCosts, удаляются ценовые блоки без цен. Удаляется история, относящаяся к ценам, которые были удалены.
|
Название БД_CleanCostsGDS Обрабатывается с релиза 15.8, stable 2023.10 |
SET DATEFORMAT YMD
Maintenance_CleanCostsGDS_job |
1 сутки (ночью) |
Основным назначением задания является чистка цен и истории цен от GDS адаптеров. Удаляются цены и пустые ценовые блоки старше указанного количества дней. Ценовые блоки от указанного
|
Название БД_CleanHistory Обрабатывается с релиза 15.8, stable 2023.10 |
SET DATEFORMAT YMD
Maintenance_CleanHistory_job |
1 сутки (ночью) |
Удаляет данные из таблицы истории History, HistoryDetail, HistoryCosts. Не удаляются строки, если заполнено поле hi_dgcod (т.е. информация относится к путевке).
Также после выполнения задания по очистке истории рекомендуется отдельно последовательно выполнить скрипты Defrag_history.sql и Defrag_HistoryDetail.sql для дефрагментации таблиц истории (строго во внерабочее время). Эти скрипты можно запросить у своего куратора. |
Название БД_Reindex | Maintenance_reindex_job | 1 сутки (ночью) |
Производится обслуживание таблиц и статистики на таблицах в базе данных. Задание рекомендовано как замена штатных средств sql сервера, т.к. действия основываются на |
Название БД_StatsUpdate
Обрабатывается с релиза 15.8, stable 2023.10 |
Maintenance_stats_run | 1 сутки (ночью) |
Задание обновления статистики в таблицах базы данных на основе изменения данных и веса таблицы в работе. Задание рекомендуется использовать только по согласованию с куратором, если массовые изменения данных после |
Список нестандартных заданий (Jobs) - скоро будут удалены, так как будет их замена
Название задания (Job Name) | Запускаемая хранимая процедура | Интервал запуска | Описание |
Задание создать самостоятельно. Название БД_CostOffer_deactivate |
Содержимое файла CostOffer_deactivate.sql | 1 сутки (ночью) |
При работе с актуализацией цен Авиа GDS в базе данных создается значительное количество цен. Данный скрипт производит поиск неактуальных ценовых блоков, в которых есть цены, созданные механизмом обновления цен с прошедшими датами и деактивирует их. В скрипте необходимо задать название пакета и партнера Пример: PR_NAME = 'Nemo(внешняя система)' TL_NAME = 'Nemo(внешняя система)' Скрипт можно запросить у своего куратора. Содержимое скрипта целиком разместить в задании. |
Название БД_CleanHistory Обрабатывается с релиза 15.8 |
SET DATEFORMAT YMD
Maintenance_CleanHistory_job |
1 сутки (ночью) |
Производит очистку таблиц History и HistoryDetails за Х дней, кроме данных по путевкам. В хранимой процедуре Maintenance_CleanHistory_job в параметрах @BeginJob и @EndJob можно задать время, в которое можно проводить обслуживание. По умолчанию установлено время с 23:00 до 08:00. |
Регламентные работы, рекомендованные Microsoft
В процессе эксплуатации системы рекомендуется проводить регламентные работы с помощью мастера планов обслуживания в SQL Server.
Мастер планов обслуживания создает план обслуживания, который агент Microsoft SQL Server может выполняться регулярно. Это позволяет выполнять различные задачи администрирования базы данных, включая резервное копирование, проверки целостности базы данных или обновление статистики базы данных через указанные интервалы времени.
Обратите внимание, что описанный в статье блок по реорганизации индекса reindex нужно пропустить. Наш reindex, который мы предоставляем – реализован с учетом особенностей нашего ПО.
Внутренние скрипты
Разработан скрипт для удаления акций по параметрам.
Расположен по пути \\Scripts\utils\Cleaning\Clean_Specials.sql
Запросить его можно у своего куратора.