Очистка замеров производительности — даешь больше места на диске (= меньше хлама в базе)



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

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

Так что да счастливые обладатели типовых конфигураций:

  • Бухгалтерий предприятия (проверялось на 3.0.65.69 — 3.0.65.91)
  • Управления торговлей (проверялось на 11.3.4.228 вероятно будет работать и в 11.4)
  • Зарплата и управления персоналом (проверялось на 3.1.8.113)
  • Розница (проверялось на 2.2.9.19 — 2.2.9.20)
  • Управление нашей фирмой (проверялось на 1.6.15.55)

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

  • ЗамерыВремени
  • ЗамерыВремениТехнологические
  • УдалитьЗамерыВремени2
  • УдалитьЗамерыВремени3
  • УдалитьЗамерыВремениТехнологические

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

Данная обработка как раз и предназначена для того чтобы вычистить эти регистры подчистую и отключить константу "ВыполнятьЗамерыПроизводительности".

В результате нажав на одну "волшебную" кнопку спустя какое-то время (может быть достаточно продолжительным если речь идет об очень большом количестве записей) получаем:

Безусловно все это можно сделать и ручками без нее (особенно если Вы программист/администратор 1С). Только мне после второй же базы проделывать это вручную еще в нескольких десятках баз показалось слишком утомительным — так и родилась обработка.

Если у кого-то все же возникает немой вопрос — откуда же это все берется, то судя по всему вот откуда:

P.S. Естественно место само по себе не появится, если по окончании работы с обработкой Вы не запустите "Тестирование и исправление" с выставленным флагом "Сжатие таблиц информационной базы" (другие кстати периодически тоже бывает полезно ставить) естественно сделав резервную копию предварительно.

P.S. те кто предпочел не качать и вычистив авгиевы конюшни вручную, после сжатия получил таки заветное свободное место на диске — поставьте хотя бы плюс за наводку — от Вас не убудет 🙂

11 Comments

  1. hopter

    Не знаю зачем вы что-то массово делали ручками, когда для вас уже все сделано в типовой.

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

    Очистка регистров делается регламентным заданием с учетом количества дней хранения.

    В общем очередное повторение типового функционала.

    Reply
  2. 1c.pro.fun

    (1) Уважаемый hopter, безусловно каждый имеет право на свое мнение. Я публикацией выразил свое. Мне показался странным тот факт что отключение оценки производительности не приводит к очистке этих регистров. А по-умолчанию в настройках удаления замеров установлено 3650 дней. Т.е. 10 лет этот мусор (да-да для большинства это именно мусор) будет лежать в базе и занимать место на диске. Для иллюстрации прикрепил скриншот.

    P.S. Кроме того, хотелось бы отметить что снятие флага «Оценка производительности» приведет и к отключению регламентного задания «Очистка замеров времени». Это я к тому что первое инстинктивное действие пользователя — отключение оценки производительности и установка количества дней удаления замеров например в значение 1 не приведет к удалению.

    Reply
  3. Rustig

    (0) интересное расследование! + в твою карму

    Reply
  4. CrimeanWind

    Спасибо, я бы и не вспомнил про эту галочку и постоянные замеры. Тестирование со сжатием, затем потёр обработкой, затем снова тестирование со сжатием — стало легче на 500 мб.

    Reply
  5. boba13

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

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

    Reply
  6. sagg

    Александр, спасибо Вам за обработку! Она буквально спасла ситуацию! Перенос базы из файлового режима в клиент-серверный не идет из-за проблем в регистре «Замеры времени» (видимо, когда-то произошел сбой, и появился дубль записи), открыть регистр невозможно… Запустила вашу обработку — регистр очищен, все исправлено!

    Reply
  7. chesnokov-a-v

    Обработка замечательная. Всё работает, но есть одна малюсенькая мелочь: расчет времени выполнения. 😉

    Reply
  8. proa@1eska.ru

    В Базе где 1000000 записей в регистре, вываливает с ошибкой нехватки памяти

    Reply
  9. shostatsky

    (8)Используйте x64 платформу

    Reply
  10. ubper

    Я думаю, ничего плохого не случится, если эту операцию выполнить на уровне СУБД командой TRUNCATE TABLE table_name. И несколько часов ждать не придется, и блокировок не будет.

    Reply
  11. aks

    (8) На днях столкнулся с описываемой здесь проблемой – по непонятной причине несоразмерно распухла файловая база для «1С:Бухгалтерия 3.0». Оказалось в регистре «ЗамерыВремени» накопилось порядка 1.5 млн записей, а занимал он почти 30% базы.

    Выложенной здесь обработкой я не пользовался. Безуспешно пытался самостоятельно очистить регистр конструкцией вида:

    НаборЗаписей = РегистрыСведений.ЗамерыВремени.СоздатьНаборЗаписей();
    НаборЗаписей.Записать();
    
    Вылетало из-за нехватки памяти.
    А вот следующая  конструкция с задачей справилась:
    
    Выборка = РегистрыСведений.ЗамерыВремени.Выбрать();
    Пока Выборка.Следующий()  Цикл
    Запись = Выборка.ПолучитьМенеджерЗаписи();
    Запись.Удалить();
    КонецЦикла;

    Показать

    Reply

Leave a Comment

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