Обслуживание баз данных. Не так просто, как кажется

Публикация № 1134515 14.10.19

База данных - HighLoad оптимизация

База данных обслуживание статистика оптимизации производительность

Считаете, что обслуживание индексов и статистик дело простое? Что ж, это не всегда так.

История начинается

Вы обслуживаете базу данных среднего или большого размера? Имею ввиду размер от 100 ГБ и больше. Если да, то, возможно, с проблемами обслуживания индексов и статистик Вы уже сталкивались, а описание кейса в статье будет Вам знакомо. Если же Вы счастливчик и имеете дело со скромными по размеру системами, то информация ниже может пригодиться Вам в будущем.

В любом случае, добро пожаловать! Рассказанный случай может быть полезен для всех.

Подопытная база

Главным героем сегодня будет "Бухгалтерия предприятия 3". Точный релиз не важен, т.к. структура регистра бухгалтерии редко меняется. Да и любая конфигурация, имеющая в своем составе этот тип регистра, потенциально могла бы быть сегодня в центре внимания.

Интересуемые для нас характеристики подопытного:

  • Размер базы 3 ТБ.
  • Работа с регистром бухгалтерии ведется очень интенсивная. В сутки на основной таблице регистра выполняется порядка 800 тысяч операций записи (вставка и обновление данных), а также 12 млн. операций чтения.
  • Регистр большого размера. Взгляните на состав его таблиц и их размеры (данные получены с помощью этого отчета).
 
 Информация о таблицах регистра бухгалтерии

Ранее мы уже рассматривали общую информацию о структуре регистра бухгалтерии. Сегодня эти знания нам пригодятся.

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

 
 Скрипты обслуживания индексов и статистик

Оба скрипта имеют настройки ограничения выполнения по времени, чтобы работа по обслуживанию не перешла на рабочие часы.

 
 Обслуживание индексов
 
 Обслуживание статистики

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

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

Двойная жизнь

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

В периоды отчетности и закрытия ситуация может меняться,  но незначительно. Без каких-либо предпосылок и предупреждений, в любой день, с самого раннего утра начинают поступать жалобы, что документы проводятся очень медленно, а иногда и вовсе появляется ошибка таймаута на ожидании блокировки на уровне СУБД (в заявках, конечно, пользователи не так пишут, обычно просто "Не работает!"). Чем больше активных пользователей в системе, тем больше жалоб и критичность проблемы.

Сначала обычно начинают разбираться так:

  • Есть ли зависшие сеансы 1С или сессии на SQL-сервер. Если есть, то "убивают" их, предварительно сохранив всю доступную информацию о сеансе или сессии.
  • Зависает конкретное действие в базе или нет. Если конкретное, то уже проще - можно попытаться решить, оптимизировать или, как минимум, собрать информацию.
  • Проверяем отработало ли обслуживание индексов и статистик ночью. Возможно, произошла ошибка при работе job'а и теперь придется разбирать последствия весь оставшийся день, возможно даже обслуживать часть таблиц "на горячую" (обожаю так делать!).
  • Проверяем загрузку оборудования с помощью мониторинга (он же у вас есть, не так ли?).  Если проблема там, то решаем вопрос с администраторами что и как делать. Тут может оказаться что был выпущен новый функционал и 1Сники решили "отопить" всю серверную за счет увеличения нагрузки на железо. Можете уточнить у своих коллег делают ли они так :)
  • В отчаянии перезагружаем сервер.

Но в нашем случае ничего из вышеперечисленного не помогло! Жалобы продолжают поступать. Конечно, есть и другие способы диагностики, но не будем удлинять список, пойдем дальше.

Опять эти блокировки!

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

С помощью сбора данных со SQL Server, а именно причин таймаутов на блокировке (как собирать можно узнать здесь) выясняем, что проблемный запрос имеет следующий вид.

UPDATE T2 SET

    -- Итог по ресурсу "Сумма"
    _Fld9622 = T2._Fld9622 + T9._Fld9622,

    -- Итог по ресурсу "ВалютнаяСуммаДт"
    _Fld9623Dt = T2._Fld9623Dt + T9._Fld9623Dt, _Fld9623Ct = T2._Fld9623Ct 
        + T9._Fld9623Ct, _Fld9624Dt = T2._Fld9624Dt + T9._Fld9624Dt, 

    -- Итог по ресурсу "ВалютнаяСуммаКт"
    _Fld9624Ct = T2._Fld9624Ct + T9._Fld9624Ct, _Fld9625Dt = T2._Fld9625Dt 
        + T9._Fld9625Dt, _Fld9625Ct = T2._Fld9625Ct + T9._Fld9625Ct, 

    -- Итог по ресурсу "СуммаПРДт"
    _Fld9626Dt = T2._Fld9626Dt + T9._Fld9626Dt, _Fld9626Ct = T2._Fld9626Ct 
        + T9._Fld9626Ct, _Fld9627Dt = T2._Fld9627Dt + T9._Fld9627Dt, 

    -- Итог по ресурсу "СуммаВРКт"
    _Fld9627Ct = T2._Fld9627Ct + T9._Fld9627Ct

FROM #tt24 T9 WITH(NOLOCK) -- Таблица с заранее подготовленными данными
    -- Таблица "ИтогиМеждуСчетами", именно в ней обновляются итоги данным запросом
    INNER JOIN dbo._AccRgCT1188 T2
    -- Соединения по:
    -- Периоду
    ON T9._Period = T2._Period 
        -- СчетДТ
        AND T9._AccountDtRRef = T2._AccountDtRRef
        -- Счет КТ
        AND T9._AccountCtRRef = T2._AccountCtRRef AND T9._Fld9679RRef = T2._Fld9679RRef 
        -- Валюта ДТ
        AND ((T9._Fld9620DtRRef = T2._Fld9620DtRRef OR T9._Fld9620DtRRef IS NULL AND T2._Fld9620DtRRef IS NULL))
        -- Валюта КТ
        AND ((T9._Fld9620CtRRef = T2._Fld9620CtRRef OR T9._Fld9620CtRRef IS NULL AND T2._Fld9620CtRRef IS NULL)) 
        -- Подразделение ДТ
        AND ((T9._Fld9629DtRRef = T2._Fld9629DtRRef OR T9._Fld9629DtRRef IS NULL AND T2._Fld9629DtRRef IS NULL)) 
        -- Подразделение КТ
        AND ((T9._Fld9629CtRRef = T2._Fld9629CtRRef OR T9._Fld9629CtRRef IS NULL AND T2._Fld9629CtRRef IS NULL)) 
        -- Служебный разделитель
        AND T2._Splitter = @P9

-- Фильтр по разделителю данных
WHERE (T2._Fld9659 = @P2)

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

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

Вроде все хорошо, что же может пойти не так? Но если мы соберем дополнительную статистику, то увидим, что этот запрос выполняется порядка 30-60 секунд. То есть соединение данных двух таблиц выполняется очень долго, а в плане запроса обычно появляется операция "Table scan". О ужас!

Поскольку для базы используется RCSI, то сканирование таблицы для обновления не блокирует всю таблицу. Лишь те записи, которые подходят под указанную аналитику (счет ДТ и КТ, подразделение ДТ и КТ, валюта ДТ и КТ и период (месяц)). Но так как сканирование выполняется до 60 секунд (а иногда и более), то при интенсивной работе есть вероятность появления таймаутов на таких блокировках, особенно если эта аналитика часто используется. Вот если бы RCSI не был бы включен, то блокировок было бы еще больше!

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

Почему так

Но почему? Почему так? Первое, что приходит в голову, так это проверить фрагментацию индексов у таблицы итогов регистра, вдруг обслуживание почему-то не отработало и поэтому SQL Server не использует индексы? СУБД считает их использование нецелесообразным, т.к. фрагментация слишком высокая. А если высокая, то затраты ресурсов при их использовании могут быть выше, чем старое доброе сканирование таблицы? Смотрим.

 
 Что там с индексами?

Что ж, проблем с индексами нет. Давайте тогда посмотрим на состояние статистики.

 
 Статистика актуальная?

Бинго! Статистика стала неактуальной и SQL Server перестал использовать индексы в запросе. В начале статьи Вы могли видеть, что всего в таблице итогов между счетами примерно 415 тысяч записей. То есть, в таблице было потенциально изменено больше 30% всех данных, а статистика до сих пор не обновилась, что и не позволило СУБД использовать индексы должным образом. 

Но почему? Скрипт ведь обслуживания есть, он отработал.

Да, обслуживание прошло ночью без ошибок, но до таблицы итогов между счетами оно просто не добралось! Сравните сами количество записей в других таблицах регистра и этой: 415 тыс. в таблице итогов и 103 млн. записей в основной таблице регистра.  Разница существенная! Ночью были обслужены статистики больших таблиц, в которых изменения происходят чаще всего, а до мелких очередь просто не дошла. А ведь в базе есть не только регистр бухгалтерии, но и другие таблицы и пообъемнее!

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

Может возникнуть вопрос: "Почему же проблема "плавает" и не возникает каждый день?". Вопрос справедливый и ответ простой: массовые изменения в бухгалтерском регистре происходят не каждый день и зависят от каких-то неизвестных обстоятельств.  Например:

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

Плюс, в некоторых случаях обслуживание все же делает обновление статистики для этой таблицы, если в очереди нет других более тяжелых объектов к обслуживанию.

Как же быть в таких ситуациях?

Как быть

Для начала определимся что нужно сделать для оперативного исправления проблемы. Таблица небольшая, поэтому мы можем обновить статистику "на горячую", ведь кратковременное замедление в период работы скрипта лучше, чем блокировки, подвисания и таймауты на блокировках до конца рабочего дня (а то и больше, ведь следующее ночное обслуживание тоже может не добраться до нужного нам объекта).

 
 Обновляем статистику"на горячую"

Окей, мы стабилизировали ситуацию! Блокировок больше нет, а система летает (и не падает)! Если бы таблица была очень большой, то потребовалось бы больше времени на обновление статистики, во время которого наблюдалось бы снижение производительности. Принимайте взвешенное решение, прежде чем запускать скрипт на продакшене.

Но как предотвратить подобную аварию в будущем?

Работая над обслуживанием базы некоторое время начинаешь собирать информацию об особенностях ее работы. К таким особенностям относится и наш случай. Мы можем создать отдельный план обслуживания для индексов и статистик, актуальное состояние которых критично для функционирования всей системы. Так и поступим в нашем случае: добавим план обслуживания нашей "особенной" таблицы и ее статистик, который будет работать параллельно основному плану обслуживания. Расписание также можно выбрать на свое усмотрение. Конкретно в этом случае был настроен запуск каждые 4 часа, так как таблица небольшая, а изменений по ней много. Основной работе обслуживание никак не мешало и занимало обычно от 5 до 15 секунд на рабочем сервере.

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

Теперь одной проблемой обслуживания базы данных меньше!

Нет базы - нет проблем

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

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

Следите за своими базами, держите обслуживание эффективным!

Есть свои истории на этот счет? Добро пожаловать в комментарии!

Другие ссылки

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Region102 14.10.19 12:17 Сейчас в теме
Отличная статья!
dabu-dabu; RickyTickyTok; Summer_13; taiwanchik; geron4; YPermitin; +6 Ответить
2. пользователь 14.10.19 12:22
(1) спасибо за хороший отзыв! :)
3. geron4 186 14.10.19 15:28 Сейчас в теме
Как-то был у меня на практике случай, 1С ЗУП + MSSQL (версия Standart 2014) перестал использовать индекс, сбор/пересбор статистики не помогали, пришлось новый индекс запилить, оптимизатор его сам подхватил.

Хинты к сожалению в 1С не поставишь, есть вариант перехвата запроса и добавления хинта, точно не помню, но там тоже что не пошло.
Вот в случае, когда в течении дня статистика может стать не актуальной - хинты на индексы бы нормально зашли, только платформа их конечно не поддерживает. :(
Как вариант, можно капнуть, чтобы запретить менять план запроса для некоторых запросов, но это тема для изучения.
YPermitin; acanta; +2 Ответить
4. пользователь 14.10.19 15:31
(3) интересный случай. Вот бы воспроизвести и изучить.

P.S. Надеюсь в скором времени выпустить небольшую разработку для экспериментов с перехватом запросов от платформы с возможностью их изменения. Можно будет и с хинтами поэкспериментировать. Не для прода, конечно.
klezyk; geron4; +2 Ответить
5. geron4 186 14.10.19 15:38 Сейчас в теме
(4) На счет перехвата запросов - очень интересно, в каких-то версиях MSSQL есть штатные механизмы для отлова и подмены. Вспомнил почему не получилось штатными средствами - там привязка к точному тексту запроса, а если у тебя таблицы соединяются с временными, например #TT800 (или #TT1000), то запрос всегда разный.

На счет номеров временных таблиц это шутка из Терминатора :))), номера всегда разные.
acanta; YPermitin; +2 Ответить
6. пользователь 14.10.19 15:41
(5) штатный перехват не совсем то, что нужно. Там можно планы запросов свои делать для запроса или триггерами переопределять действия для запроса, но вот прям текст запроса поменять нельзя. В PostgreSQL есть возможность поменять текст запроса через AST-дерево запроса, но задача тоже не тривиальная.

Вообщем, будет публикация :)

P.S. про терминатора Огонь!
7. nicxxx 247 14.10.19 16:14 Сейчас в теме
Включите уже traceflag 2371 и забудьте о ручном обновлении статистики.
Irwin; Ashandy; YPermitin; +3 Ответить
8. пользователь 14.10.19 16:19
(7) это применимо, но далеко не всегда. Расскажите свой случай, где Вам настройка помогла, если есть такая возможность.
9. nicxxx 247 14.10.19 18:52 Сейчас в теме
(8)
Расскажите свой случай, где Вам настройка помогло

БП 3.0
Размер регистра бухгалтерии точно не скажу, в сумме наверно 200 ГБ
Прирост в день минимум 1 млн проводок
11. Ashandy 21.10.19 16:27 Сейчас в теме
(7)
traceflag 2371

спасибо, не знал о таком
Кстати, там еще написано:

Примечание. Начиная с версии SQL Server 2016 (13.x) и при уровне совместимости базы данных 130 или более высоком эта реакция управляется подсистемой, и флаг трассировки 2371 не оказывает влияния.
YPermitin; +1 Ответить
12. пользователь 21.10.19 16:36
(11) (9) все никак не успеваю ответить.

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

Тема обширная. Посмотрите в гугле.
13. nicxxx 247 22.10.19 16:33 Сейчас в теме
(11) Да, все правильно. С этой версии флаг включен по-умолчанию.
10. vihrov_av 16.10.19 08:26 Сейчас в теме
Подобные планы обслуживания нужно периодически актуализировать, так как таблицы в которых вчера статистика обновлялась за 5 секунд, сегодня может обновится целую минуту, а завтра и того больше. Поэтому данная процедура - цепь непрерывных улучшений. Которым нужно удалять время и включать в план работ.
Дмитрий74Чел; YPermitin; +2 Ответить
14. nicxxx 247 22.10.19 16:34 Сейчас в теме
(10)
таблицы в которых вчера статистика обновлялась за 5 секунд
хе-хе. 9 часов :)
YPermitin; +1 Ответить
15. nvv1970 23.10.19 18:34 Сейчас в теме
Объемные таблицы должны быть вынесены в отдельный план обслуживания. При чем при определенных условиях автоапдейт для отдельных таблиц имеет смысл выключать вообще.
YPermitin; +1 Ответить
16. пользователь 23.10.19 18:42
(15) полностью согласен.
А иногда и не только большие.
17. letarch 29.10.19 15:50 Сейчас в теме
подобные операции по обслуживанию индексов и статистик нужно применять и для postgres баз?
YPermitin; +1 Ответить
18. пользователь 29.10.19 16:28
(17) у PG тоже есть статистика, но работает несколько иначе.
26. Xershi 996 02.05.20 10:30 Сейчас в теме
(17) нужно, на днях была статья как это сделать.
27. letarch 03.05.20 11:24 Сейчас в теме
28. Xershi 996 03.05.20 12:30 Сейчас в теме
(27) вам повезло на днях админу скидывал, быстро нашел:
Держи данные в тепле, транзакции в холоде, а VACUUM в голоде.
Там также чутка и по мс скуль.

Кстати вопрос к автору. У клиента А есть 2012, у Б 2017 мс скуль.
У А 2 плана ежедневный и недельный. У Б ежедневный.
Каким образом проверяете время выполнения плана обслуживания?

У клиента Б мс скуль дает задать процент в частности указали 15%. И вот для таблицы заказы клиента при объеме в 400к документов нужно изменить 60к, чтобы скрипт отработал?
19. user706076_stravin 30.12.19 17:06 Сейчас в теме
спасибо за статью! очень выручает периодически.

скрипт по обновлению статистики отрабатывает заменив "where" на "and"
AND [o].[is_ms_shipped] = 0
-- Отбор по имени таблицы итогов, у которой мы расследуем проблему
WHERE AND o.name = '_AccRgCT1188'
20. rozer 300 28.04.20 20:52 Сейчас в теме
А процедурный кеш надо же сбрасывать после обновления статистики вроде бы... а то планировщик будет из старого кеша планы брать....
21. DarkAn 1046 30.04.20 11:57 Сейчас в теме
(20) вроде как, уже не актуально.
22. rozer 300 30.04.20 13:17 Сейчас в теме
(21) не актуально с какой версии sql server стало?
23. DarkAn 1046 30.04.20 13:22 Сейчас в теме
(22) Точно не отвечу. Андрей Бурмисров в курсе по оптимизации об этом говорил.
Одна из проблема с сбросом процедурного кэша в том, что он сбрасывается для ВСЕХ БД, а не отдельно взятой.
24. rozer 300 30.04.20 14:53 Сейчас в теме
странно во всех мануалах нужно процедурный кеш скидывать после статистики и иначе планировщик, который берет инфу из кеша используя старую статистику вместо например index seek фигачит менее оптимальные способы поиска и соединений в данных .... Ну Бурмистров не Гилев конеч но Бурмистрову виднее ))
25. пользователь 30.04.20 15:51
(24) с 2014 редакции SQL Server помечает планы после обновления статистики как устаревшие. Это если ооооочень кратко.
Очищать кэш каждый раз не лучшая идея. Видел ужас - днем обновляется статистика и тут же сбрасывается процедурный кэш. Все вроде хорошо, но на самом деле нет :) График компиляции планов запросов зашкаливает некоторое время, даже в замера 1С видны замедления операций.

Отсюда вывод: самый главный мануал - это документация к ПО и .... эксперименты.
30. vacony 22.12.20 12:08 Сейчас в теме
(25)
мануал - э


так а как правильно делать ?
Есть довольно большие базы , 1с розница. много данных по чекам, заказам и т.д.
Делается обновление статистики , если штатно, 7 - 12 - 16 часов... скриптом по выборочно таблицам (размеру) часа 2-3. И индексы ( реиндекс или обновление от фрагментации ) . Послед сброс процедурного кеша...

Это является более менее оптимальным планом ?
31. vacony 22.12.20 12:28 Сейчас в теме
(30)


так а как правильно делать ?
Есть довольно большие базы , 1с розница. много данных по чекам, заказам и т.д.
Делается обновление статистики , если штатно, 7 - 12 - 16 часов... скриптом по выборочно таблицам (размеру) часа 2-3. И индексы ( реиндекс или обновление от фрагментации ) . Послед сброс процедурного кеша...

Это является более менее оптимальным планом ?
29. vacony 22.12.20 10:30 Сейчас в теме
Супер статья !
очень помогает в работе.
Но море вопросов рождается -
хотя бы такой - в скуле (Microsoft SQL Server 2016 (SP2-CU12) ) стоит автообновление статистики , но на сейчас (22.12.2020) есть таблицы -
_Document168_VT3333 _WA_Sys_0000001E_2364B165 0 4474349 2020-12-18 07:07:26.113 0 0 NULL NULL NULL
_Document168_VT3333 _WA_Sys_00000013_2364B165 0 4474349 2020-12-18 07:10:34.190 0 0 NULL NULL NULL
_Document168_VT3333 _WA_Sys_00000004_2364B165 0 4474349 2020-12-18 07:21:23.380 0 0 NULL NULL NULL
_Document168_VT3333 _WA_Sys_00000003_2364B165 0 4474349 2020-12-18 07:23:45.840 0 0 NULL NULL NULL
_Document168_VT3333 _WA_Sys_0000000D_2364B165 0 4474349 2020-12-18 07:31:24.540 0 0 NULL NULL NULL
_Document168_VT3333 _WA_Sys_00000005_2364B165 0 3223395 2020-12-19 18:34:48.263 0 0 NULL NULL NULL
_AccumRg5051 _WA_Sys_0000000D_5860F2DB 0 2301412 2020-12-18 02:59:38.200 0 0 NULL NULL NULL
_AccumRg4923 _WA_Sys_00000012_187B77F0 0 2000919 2020-12-18 02:17:35.097 0 0 NULL NULL NULL
_AccumRg4923 _WA_Sys_00000013_187B77F0 0 2000919 2020-12-18 02:20:36.320 0 0 NULL NULL NULL
_Document144_VT2564 _WA_Sys_0000000E_7F1176FF 0 1929736 2020-12-18 05:14:54.590 0 0 NULL NULL NULL
_Document144_VT2564 _WA_Sys_00000007_7F1176FF 0 1929736 2020-12-18 05:16:26.363 0 0 NULL NULL NULL
_Document144_VT2564 _WA_Sys_00000009_7F1176FF 0 1929736 2020-12-18 05:19:00.517 0 0 NULL NULL NULL

Который НЕ обновляли статистику с 18 числа , с учетом что изменилось там 2 - 4 млн строк ! Почему ?

В самой таблице Document168_VT3333 - 259 млн строк ... 4 млн - типа мало изменилось ?
И считается что - строки самой таблицы или строки индекса для изменения ?
32. logarifm 1110 18.01.22 11:19 Сейчас в теме
Как всегда замечательнейшая статья - огромное спасибо за труды. Я в таких случаях делал несколько скриптов по обслуживанию статистики, чтобы скрипты успевали.
Оставьте свое сообщение

См. также

Postgres как предчувствие. Вычисляем процент импортозамещения в режиме Highload от 1С

HighLoad оптимизация Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

1С работает с СУБД Postgres более 10 лет, а сейчас это единственный легальный вариант для инсталляций в России. Много ли мы потеряем в производительности по сравнению с MS SQL? Выдержит ли Postgres 15.2 жесткий Highload со стороны 1С? Цель этой статьи - ответить на данные вопросы, с цифрами, которые можно использовать при расчете архитектуры.

23.03.2023    1007    1CUnlimited    8    

15

Delayed durability поможет вашему ORM увеличить производительность на 50% и более, если Вы только будете использовать …

HighLoad оптимизация Платформа 1С v8.3 Бесплатно (free)

ORM (Relational Mapping) используется во многих языках программирования, в том числе и в 1С. Однако реализация высоконагруженных решений, приводит к мысли, что разработчики ORM не учитывали ее влияния на производительность СУБД. Такая ситуация и в 1С, и ORM на Java, и наверняка в других ORM. В предыдущих частях показана глубина проблемы. В этой части предложено решение со стороны СУБД (MS SQL, Oracle, Postgres).

13.02.2023    503    1CUnlimited    0    

9

Командная строка - это просто, или три примера автоматизации рутины

Администрирование СУБД Платформа 1С v8.3 Бесплатно (free)

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

31.01.2023    1607    zeltyr    6    

24

Как исправить ошибку формата потока данных в 1С:Предприятие 8.3?

Администрирование СУБД Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Доброго времени суток! Уважаемый читатель, в данной статье будет рассмотрена сущность такого понятия, как «Ошибка формата потока», причины ее появления, а также методы устранения ошибки. Если Вы с ней столкнулись, эта статья специально для Вас!

25.01.2023    7009    Koder_Line    4    

2

Программы для исполнения 54-ФЗ Промо

С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.

Избавиться от скана таблицы в плане запроса

HighLoad оптимизация Запросы Платформа 1С v8.3 Запросы Бесплатно (free)

Для запросов, содержащих "LIKE %СтрокаПоиска%". Справедливо для MS SQL и Postgres.

20.12.2022    2821    vasilev2015    31    

23

Концепция ORM как двигатель прогресса - выдержит ли ее ваша СУБД?

HighLoad оптимизация Платформа 1С v8.3 Бесплатно (free)

ORM (Object-Relational Mapping) используется во многих языках программирования, в том числе и в 1С. Однако реализация высоконагруженных решений приводит к мысли что разработчики ORM не учитывали ее влияния на производительность СУБД. Такая ситуация и в 1С, и ORM на Java, и наверняка в других ORM. Причины приоткрывает данная статья.

16.12.2022    1170    1CUnlimited    5    

9

Реструктуризация базы в 1С: для чего требуется и о назначении в целом

Администрирование СУБД Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

07.12.2022    2074    Koder_Line    4    

4

Копии баз данных и размер БД. Проблемы и пути решения

Администрирование СУБД Архивирование (backup) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Столкнулся с проблемой быстрого роста объема БД. Статья о том, как решал эту проблему.

30.11.2022    1402    DrMih    5    

8

Видеокурс-практикум: как подготовить и написать ТЗ, ЗНР, ЧТЗ. Промо

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

3 500 рублей

Нагрузочное тестирование в 1С:ERP

HighLoad оптимизация Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

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

02.11.2022    3573    Tavalik    23    

32

Тормоза при записи номенклатуры в ERP 2.5.8.287

HighLoad оптимизация Платформа 1С v8.3 1С:ERP Управление предприятием 2 Россия Бесплатно (free)

Обратил внимание на медленную работу при пакетной записи элементов номенклатуры.

25.10.2022    740    m191    6    

5

Регистрация в центре лицензирования не выполнена

Администрирование СУБД Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

28.09.2022    2074    Koder_Line    2    

2

Как я Java учил, а потом 1С-у удивлялся

HighLoad оптимизация Платформа 1С v8.3 Бесплатно (free)

Сравнение производительности 1С с Java.

23.09.2022    2539    Hadgehogs    23    

3

Партицированная дисциплина программиста в 1С

HighLoad оптимизация Механизмы платформы 1С Запросы Платформа 1С v8.3 Бесплатно (free)

Почему при росте объемов базы 1С все становится медленней, даже если все индексы правильно сделаны? В статье на простом примере с регистром сведений показана причина и как этого избежать. Кто виноват больше, 1С или MS SQL решать Вам :)

20.09.2022    1859    1CUnlimited    2    

6

Распознавание и загрузка документов в 1С Промо

Универсальная программа-обработка для распознавания любых сканов или фото первичных документов в 1С (счета-фактуры, УПД, ТТН, акты и тд). Точность распознания до 98%.

от 11 рублей

Быстрый фронт в базе размером 6.8 терабайт – наши стандарты при разработке и рефакторинге запросов

HighLoad оптимизация Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

От быстродействия запросов, которые обращаются к крупным таблицам, напрямую зависит скорость работы всей базы в целом. Артем Кузнецов, тимлид команды 1С в компании ООО «Финтех решения» на конференции Infostart Event 2021 Moscow Premiere рассказал, как оптимизировать производительность при поддержке больших систем. Показал, на что следует обращать внимание при код-ревью запросов, как оптимизировать RLS, виртуальные таблицы, индексы и условия, и как доработка архитектуры решения может ускорить работу базы.

29.08.2022    5915    Chernazem    44    

106

Настройка отказоустойчивого кластера 1C + PostgreSQL (etcd+patroni+haproxy) на Centos 8

Администрирование СУБД Платформа 1С v8.3 Конфигурации 1cv8 ИТ-компания Россия Бесплатно (free)

Настройка отказоустойчивого кластера PostgreSQL для сервера приложений 1С на операционной системе Centos 8.

22.08.2022    3920    user1332168    10    

24

Workaround me в 1С/MS SQL и не только, системный подход к созданию костылей

HighLoad оптимизация Администрирование СУБД Платформа 1С v8.3 Бесплатно (free)

Workaround свидетельствует о невозможности решить проблему "правильным путем" и вызывает чувство стыда. Но практика показывает, что способность решать проблемы через workaround является порой единственным способом решить проблему в разумное время. А победителей, как говорят, не судят, так почему бы не создавать workaround по системе?

15.08.2022    1245    1CUnlimited    0    

6

Ускорим проведение в 1С:Управление холдингом

HighLoad оптимизация Запросы Платформа 1С v8.3 1С:Управление холдингом Бесплатно (free)

В 1С:Управление холдингом есть "нехороший" запрос, который съедает значительную часть времени проведения документов. Если его подправить, то проведение заметно ускорится.

10.08.2022    5040    sapervodichka    60    

73

Работа с 1С:Аналитика Промо

Онлайн-курс предусматривает изучение возможностей системы “1С:Аналитика”, которая работает как составная часть платформы “1С:Предприятие” и обеспечивает оперативный просмотр и анализ необходимых данных.

4500 рублей

Миссия невыполнима. Общие реквизиты разделители против временных таблиц

HighLoad оптимизация Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

05.08.2022    1652    1CUnlimited    0    

14

Методика похудения для 1С – 100%

Свертка базы HighLoad оптимизация Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

28.07.2022    5637    1CUnlimited    37    

43

Ошибка Dump в 1С

Администрирование СУБД Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В данной статье будет рассмотрено представление ошибки Dump в 1С, будет проведена её диагностика, а также определено, как устранить данную ошибку и продолжить дальнейшую корректную работу системы 1С. Также будет представлена общая информация об ошибке Memorydump, для более глубокого её понимания.

15.07.2022    1946    Koder_Line    3    

4

Режимы запуска системы 1С:Предприятие

Администрирование СУБД Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Существует несколько путей установки режимов запуска 1С:Предприятие. Рассмотрим запуски системы в режиме «1С:Предприятие» и в режиме Конфигуратора. Проговорим предварительно, что одновременное использование нескольких режимов не допускается для того, чтобы указать параметры командной строки.

12.07.2022    2492    Koder_Line    1    

6

1СПАРК РИСКИ. Сервис оценки благонадежности контрагентов. Промо

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

Экспертный кейс. История расследования одного небыстрого закрытия месяца в 1C:ERP. Пример неочевидных путей расследования в виде детективной истории

HighLoad оптимизация Механизмы платформы 1С Запросы Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

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

11.07.2022    5400    it-expertise    27    

56

Производительный режим работы RLS

HighLoad оптимизация Роли и права Платформа 1С v8.3 8.3.14 8.3.6 8.3.8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х Бесплатно (free)

Функционал подсистемы УправлениеДоступом позволяет работать с RLS в двух режимах: стандартном и производительном. Каждый из режимов имеет свои преимущества и недостатки относительно другого. Основные из них будут рассмотрены в данном материале.

14.06.2022    7580    Neti    7    

88

Любовь. Быстродействие. 1С

HighLoad оптимизация Платформа 1С v8.3 Бесплатно (free)

Несколько эпизодов на общую тему, собранные за последние полгода. Первый вариант, будет исправляться и дополняться.

26.05.2022    3971    vasilev2015    20    

34

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

HighLoad оптимизация Администрирование СУБД Платформа 1С v8.3 8.3.14 1С:ERP Управление предприятием 2 Россия Бесплатно (free)

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

24.05.2022    4046    avolsed    15    

33

Программы для исполнения 488-ФЗ: Маркировка товаров Промо

1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.

Заметки эксперта. Расследование длительного выполнения отчета “Движение ТМЦ и затрат в производстве” (1С:ERP 2)

HighLoad оптимизация Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Кратко: в ходе проведения нагрузочного тестирования “1С:ERP 2” под ОС Linux на СУБД Postgres выявлено существенное замедление формирования отчета “Движение ТМЦ и затрат в производстве” - до 60 минут. После проведенного расследования и точечной корректировки СКД в отчете, без изменения бизнес-логики результатов его работы, работа отчета была ускорена в 80 раз - средний показатель формирования составил 30 секунд.

19.05.2022    2258    it-expertise    19    

23

Ошибка формата потока расширения

Администрирование СУБД Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

19.05.2022    1508    yupi71    9    

7

Тестирование - игровое моделирование

HighLoad оптимизация Тестирование QA Платформа 1С v8.3 Бесплатно (free)

Мы рассмотрим подход к тестированию с применением элементов искусственного интеллекта

25.04.2022    1542    ivanov660    0    

15

Несколько слов про платформенный механизм оптимизации RLS

HighLoad оптимизация Платформа 1С v8.3 Бесплатно (free)

Смотрим, как работает платформенный механизм оптимизации RLS, сравним поведение на разных СУБД MS SQL, Postgres 11,13,14.

07.04.2022    3673    ivanov660    23    

69

Почему после обновления Бухгалтерии в марте 2022 года отчеты стали такими медленными

HighLoad оптимизация Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бухгалтерский учет Бесплатно (free)

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

05.04.2022    5193    DBOdin_Lab    33    

29

Готовые переносы данных из различных конфигураций 1C Промо

Рекомендуем готовые решения для переноса данных из различных конфигураций 1C. C техподдержкой от разработчиков и гарантией от Инфостарт.

Пропадающие файлы на томе в 1С: КА 2.5

Администрирование СУБД Платформа 1С v8.3 1С:Комплексная автоматизация 2.х Россия Бесплатно (free)

На протяжении месяца пропадали файлы: прикрепленные изображения, документы в ЭДО. КА 2.5, актуальная редакция на поддержке. Этого не описано НИГДЕ и если бы я нашел такую тему, у меня мы было гораздо меньше проблем.

05.04.2022    1438    mlashko    4    

10

Экспертный кейс. Расследование фатального замедления времени расчета себестоимости в 1С:ERP 2

HighLoad оптимизация Механизмы типовых конфигураций Запросы Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

При выполнении нагрузочного тестирования информационной системы на базе 1С:ERP для одного из клиентов с целью оценки возможности миграции системы на PostgreSQL и Astra Linux мы столкнулись с неприемлемым увеличением времени выполнения расчета себестоимости. Строго говоря, сценарий тестирования закрытия месяца не был выполнен вообще – он не укладывался в таймаут выполнения теста, 24 часа. По прошествии 18 часов всё ещё шло выполнение операции «Распределение затрат и расчет себестоимости». Более 16 часов выполнялся подэтап “Расчет партий и себестоимости. Этап. Расчет себестоимости: РассчитатьСтоимость”. Всё это время выполнялся запрос, который в текущей инфраструктуре клиента (СУБД MS SQL Server) выполняется чуть более 3 минут на аналогичных данных.

25.03.2022    5567    it-expertise    92    

67

Экспертный кейс. Расследование деградации производительности системы. Проведение документа “Поступление товаров и услуг” (1С:ERP 2)

Механизмы платформы 1С Запросы HighLoad оптимизация Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

В ходе проведения нагрузочного тестирования одним из наших клиентов была выявлена сильная деградация производительности системы в целом и, в частности, выполнения ключевой операции “Проведение документа поступление товаров и услуг” в течение выполнения теста. Согласно данным подсистемы БСП “Оценка производительности”, время выполнения ключевой операции “Проведение документа поступление товаров и услуг” возрастало в процессе тестирования с 15-20 секунд в начале тестирования до 150-200 секунд в его финале.

02.03.2022    4044    it-expertise    48    

30

Пример пошагового решения проблемы производительности на базе Postgres SQL с картинками

HighLoad оптимизация Технологический журнал Платформа 1С v8.3 Бесплатно (free)

Рассмотрим по шагам процесс обнаружения, анализа и решения проблемы производительности на примере базы ERP, сравним отличия в работе Postgres и MS SQL.

28.02.2022    12735    ivanov660    18    

145

Ошибка загрузки большого архива 1Cv8.dt в PostgresSQL на платформе 1С 8.3.19

Администрирование СУБД Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

1С для платформы 8.3.19 ускорили загрузку dt-файлов за счет разбивки на несколько фоновых заданий. В итоге словили ошибку блокировки при загрузке в СУБД PostgresSQL большого 1cv8.dt-файла размером 25 Gb "ERROR: canceling statement due to lock timeout". Напишу, как в итоге загрузили этот dt-файл.

30.01.2022    9883    sapervodichka    56    

131