Сервер МК / Чистка БД Sybase транспорта (Сервер МК)
Прежде напомню, всё нижеследующее – не инструкция, а только личный опыт, приобретённый в процессе работы. Применять или нет – дело ваше. Небольшое отступление – статья родилась из инструкции, которую я написал в декабре 2008 года, так что пусть вас не удивляют размер базы и прочие данные.
Ну и сначала: Резервирование, резервирование… да, забыл еще раз резервирование. Перед любыми действиями необходимо сделать бекап существующих файлов и баз данных. Это, к сожалению, тоже личный опыт, приобретённый в молодости.
Собственно очистка базы может занять определённое время – зависит от размера базы (прежде всего от времени, которое она крутилась без чистки) и мощности Транспортного сервера. Поэтому чистку желательно проводить регулярно. Я для себя установил периодичность – раз в два месяца.
Да. И для начала исходные данные, так сказать – что имеем:
Intel Core 2 Duo 2.4 GHz, ОЗУ 4 Gb, без рейда, Win Server 2003 SP1, движок БД – Sybase (сервис настроен на 1024mb выделения памяти)
Сначала нам предстоит выполнить чистку средствами самого транспорта. Идём: Сервис – Транспорт – Информация о пакетах. Здесь необходимо удалить завершённые транспортные пакеты. В поле «статус» вводим – 22 (это и есть статус завершённых пакетов). Внизу таблицы высветится «Всего записей», у меня – 38 744. Выделяем все нажатием «+» и тыкаем «удалить».
Вообще-то не рекомендуют удалять более 20 000 за один раз, но мощности со времён написания инструкций БФТ значительно выросли, и однажды мне приходилось удалять 67 000 записей за один заход и ничего. Если хотите, поиграйтесь с фильтрами (Лицензия отправителя, получателя, схема). К слову сказать – для ускорения можно отключить автопроцедуры. На старой машине практиковал и разница чувствовалась. В этот раз не стал. Время выполнения – 25 мин.

Теперь открываем Сервис – Служебное – Очистка объектов. Здесь я поступаю следующим образом: выделяю всё и снимаю галки с чекбоксов — Заявки на оплату расходов (пригодится, но можно и их удалить и если понадобятся, запросить из АЦК), Установки значений по умолчанию. И жму «Выполнить». 5-10 мин на выполнение.
REBILD –процесс пересоздания базы, при котором восстанавливается её внутренняя структура и стираются все ссылки на ранее удалённые записи.
Выключаем Транспорт, останавливаем сервис Sybase. В папке с базой ничего не должно находиться, кроме собственно БД и файла RB_DB.bat
Небольшое отступление: в инструкции БФТ, при работе через Dictman очищают таблицы посредством запросов к БД. Мне не кажется этот способ оптимальным, тем более что почти все таблицы, которые можно очистить, у меня пусты.
Поэтому я выполняю ребилд с выводом в log-файл. В Far набираем:
RB_DB.bat mk > rb.log
Получаем бд mk, mk_old, папку unload, файлы reload.sql, rb_db.bat, и нужный нам файл лога ребилда rb.log

Работаем с базой – Dictman.
Идём в папку UNLOAD, сортируем файлы по размеру и ориенитруясь на файл rb.log выясняем, какая таблица в базе, какому файлу соответствует.

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

Практически всё. Только теперь нужно заново произвести ребилд БД, теперь уже без вывода в лог. Последний скриин я не сделал, но могу сказать, что получившийся в результате размер базы данных у меня составил 1 588 768 КБ, а начал я с 2 375 752 КБ. И это в декабре, включая все заявки на оплату расходов по всем АРМам за весь год.
Ну и сначала: Резервирование, резервирование… да, забыл еще раз резервирование. Перед любыми действиями необходимо сделать бекап существующих файлов и баз данных. Это, к сожалению, тоже личный опыт, приобретённый в молодости.
Собственно очистка базы может занять определённое время – зависит от размера базы (прежде всего от времени, которое она крутилась без чистки) и мощности Транспортного сервера. Поэтому чистку желательно проводить регулярно. Я для себя установил периодичность – раз в два месяца.
Да. И для начала исходные данные, так сказать – что имеем:
Intel Core 2 Duo 2.4 GHz, ОЗУ 4 Gb, без рейда, Win Server 2003 SP1, движок БД – Sybase (сервис настроен на 1024mb выделения памяти)
Сначала нам предстоит выполнить чистку средствами самого транспорта. Идём: Сервис – Транспорт – Информация о пакетах. Здесь необходимо удалить завершённые транспортные пакеты. В поле «статус» вводим – 22 (это и есть статус завершённых пакетов). Внизу таблицы высветится «Всего записей», у меня – 38 744. Выделяем все нажатием «+» и тыкаем «удалить».
Вообще-то не рекомендуют удалять более 20 000 за один раз, но мощности со времён написания инструкций БФТ значительно выросли, и однажды мне приходилось удалять 67 000 записей за один заход и ничего. Если хотите, поиграйтесь с фильтрами (Лицензия отправителя, получателя, схема). К слову сказать – для ускорения можно отключить автопроцедуры. На старой машине практиковал и разница чувствовалась. В этот раз не стал. Время выполнения – 25 мин.

Теперь открываем Сервис – Служебное – Очистка объектов. Здесь я поступаю следующим образом: выделяю всё и снимаю галки с чекбоксов — Заявки на оплату расходов (пригодится, но можно и их удалить и если понадобятся, запросить из АЦК), Установки значений по умолчанию. И жму «Выполнить». 5-10 мин на выполнение.
REBILD –процесс пересоздания базы, при котором восстанавливается её внутренняя структура и стираются все ссылки на ранее удалённые записи.
Выключаем Транспорт, останавливаем сервис Sybase. В папке с базой ничего не должно находиться, кроме собственно БД и файла RB_DB.bat
Небольшое отступление: в инструкции БФТ, при работе через Dictman очищают таблицы посредством запросов к БД. Мне не кажется этот способ оптимальным, тем более что почти все таблицы, которые можно очистить, у меня пусты.
Поэтому я выполняю ребилд с выводом в log-файл. В Far набираем:
RB_DB.bat mk > rb.log
Получаем бд mk, mk_old, папку unload, файлы reload.sql, rb_db.bat, и нужный нам файл лога ребилда rb.log

Работаем с базой – Dictman.
Идём в папку UNLOAD, сортируем файлы по размеру и ориенитруясь на файл rb.log выясняем, какая таблица в базе, какому файлу соответствует.

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

Практически всё. Только теперь нужно заново произвести ребилд БД, теперь уже без вывода в лог. Последний скриин я не сделал, но могу сказать, что получившийся в результате размер базы данных у меня составил 1 588 768 КБ, а начал я с 2 375 752 КБ. И это в декабре, включая все заявки на оплату расходов по всем АРМам за весь год.
- +1
- 29 января 2009, 18:14
- 1
Комментарии (1)
RSS свернуть / развернутьDOCAZKBUDGORDERKVIARC
DOCAZKCONTRACTKVIARC
DOCAZKPAYREFKVIARC
DOCAZKPLANASSKVIARC
DOCAZKREGUESTARC
DOCAZKREGUESTKVIARC
DOCAZKREQASSCHGKVIARC
RBASE
RBASEARC
SYSRPLDUALDOCUMENTARC
TRANSPACKETSARC
XMLTblArc
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.