Сказ о том, как online_analyze INSERT "удлинял"

Публикация № 1191082

Администрирование - Администрирование данных 1С - Статистика базы данных

postgresql online_analyze insert длительный

Немного о тонкостях работы модуля online_analyze для PostgreSQL. Опус для тех, у кого, как и у меня, не всегда хватает времени на то, чтобы разобраться, как это работает, и поэтому бывает так, что следуешь рекомендациям из сети и пользуешься методом "копипаста", пока не прижмет.

В тридевятой СУБД, в тридесятой PostgreSQL сущестовала одна таблица: ни большая, ни маленькая, - на каких-то несколько миллионов строк.

Приходили к таблице этой хлопцы разные, с именем заморским INSERT, подавали челобитные свои с прошением поселить в таблице строки новые.

И жили себе все счастливо до той поры, пока не явился админушко окоянный, который в разных бывал СУБД, да много каких "сводов правил" для PostgreSQL видовал. Так вот решил он и в этой СУБД установить нововведения "полезные", - пристройку сгородил online_analyze зовущуюся. Беда одна, - невнимательный он был, да то что к пристройке этой свой "свод правил" полагается, не учел ...

Наступила с той поры тоска в государстве "постгресовом": хлопцы с челобитными о поселении строк новых, стали долго ждать ответа на прошение свое ...

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

Чтож, отбросим лирические отступления, перейдем к фактическому материалу!

Как воиспроизвести? Для экспериментов необходимо найти таблицу в которой команда analyze выполняется весомое количество секунд!

ВНИМАНИЕ: Предполагается, что все опыты вы ставите на тестовой среде! Вся ответственность за опыты на продуктивной среде целиком и полностью лежит на вас!

Ниже приводятся команды, выполненные в psql

Если у вы еще не пользуетесь online_analyze, т.е этот модуль не загружен через конфигурационный файл postgresql.conf, то вам в текущей сессии необходимо выполнить команду

db_test=# load 'online_analyze';
LOAD

Установим ряд параметров для модуля

db_test=# set "online_analyze.enable" = on;
SET
db_test=# set "online_analyze.verbose" = on;
SET
db_test=# set "online_analyze.table_type" = 'all';
SET

Откроем явную транзакцию

db_test=# begin transaction;
BEGIN

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

db_test=# explain (analyze,buffers) INSERT INTO _AccRg29166 (...) VALUES(...);
ИНФОРМАЦИЯ:  анализируется "public._accrg29166"
ИНФОРМАЦИЯ:  "_accrg29166": просканировано страниц: 150000 из 164949, они содержат "живых" строк: 2592878, "мёртвых" строк: 20; строк в выборке: 150000, примерное общее число строк: 2851284
ИНФОРМАЦИЯ:  analyze "_accrg29166" took 12.00 seconds
                                              QUERY PLAN                                              
------------------------------------------------------------------------------------------------------
 Insert on _accrg29166  (cost=0.00..0.01 rows=1 width=1069) (actual time=0.194..0.194 rows=0 loops=1)
   Buffers: shared hit=32 dirtied=6
   ->  Result  (cost=0.00..0.01 rows=1 width=1069) (actual time=0.002..0.002 rows=1 loops=1)
 Planning time: 0.072 ms
 Execution time: 12014.868 ms
(5 строк)

Что мы здесь видим? Что у нас 12 секунд от времени выполнения запроса insert "съедено" выполнением analyze, в то время как сама вставка выполнялась 0.194 мс!

Делаем откат транзакции

db_test=# rollback transaction;
ROLLBACK

Отключаем online_analyze и вопроизводим предыдущие действия

db_test=# set "online_analyze.enable" = off;
db_test=# begin transaction; explain (buffers,analyze) INSERT INTO _AccRg29166 (...) VALUES(...); rollback transaction;
BEGIN
                                              QUERY PLAN                                              
------------------------------------------------------------------------------------------------------
 Insert on _accrg29166  (cost=0.00..0.01 rows=1 width=1069) (actual time=0.196..0.196 rows=0 loops=1)
   Buffers: shared hit=32 dirtied=6
   ->  Result  (cost=0.00..0.01 rows=1 width=1069) (actual time=0.002..0.002 rows=1 loops=1)
 Planning time: 0.072 ms
 Execution time: 0.325 ms
(5 строк)

ROLLBACK

И имеем вполне вменяемое время выполнения!

Какие вопросы родились из всего этого и какие ответы получены от автора online_analyze (Федора Сигаева):

1. То, что запрос ожидает завершения процесса обновления статистки - это "проектное" поведение, т.е. так и планировалось или может быть это неизбежное явление?

Да. Оно так было задумано.

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

Когда оно делалось, тогда background worker не было. Сейчас можно, но пока в плане нет.

3. То что при откате транзакции статистика остается неизменной и это может приводить к сильно "кривой" статистике - это является ошибкой или допустимым явлением?

Скорее допустимым. По трем причинам:
- "оптимистичесоке" поведение. Откатываются транзакции значительно реже, чем соммитятся
- все-таки расчет на то, что одиночный инсент/апдейт/делете меняет не так много записей
- откат транзакции в постгресе не значит немедленного удаления записей, они будут удалены вакуумом. А значит как минимум индекс сканам проверяться будут.
Поэтому мертные записи тоже должны учитываться статистикой.

А какие у вас возникают вопросы/мысли исходя из приведенной выше информации?

Что до меня, так после разбора возникшей ситуации модуль online_analyze и его настройки "заиграли" новыми красками! ;)

Надеюсь, данная информация окажется полезной ...

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

Оставьте свое сообщение

См. также

Отчет по размерам таблиц в базе данных как одно из средств анализа проблем Промо

Статистика базы данных v8 1cv8.cf Бесплатно (free)

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

21.07.2015    31969    0    Aleksey.Bochkov    15    

Выявляем и оптимизируем ресурсоемкие запросы 1С:Предприятия

Производительность и оптимизация (HighLoad) Администрирование СУБД Технологический журнал Структура метаданных v8::Запросы Бесплатно (free)

Обычно предметом оптимизации являются заранее определенные ключевые операции, т.е. действия, время выполнения которых значимо для пользователей. Причиной недостаточно быстрого выполнения ключевых операций может быть неоптимальный код, неоптимальные запросы либо же проблемы параллельности. Если выясняется, что основная доля времени выполнения ключевой операции приходится на запросы, то осуществляется оптимизация этих запросов. При высоких нагрузках на сервер СУБД в оптимизации нуждаются и те запросы, которые потребляют наибольшие ресурсы. Такие запросы не обязательно связаны с ключевыми операциями и заранее неизвестны. Но их также легко выявить и определить контекст их выполнения, чтобы оптимизировать стандартными методами.

24.05.2020    3673    0    DataReducer    19    

Секционирование в PostgreSQL 12

Администрирование СУБД Бесплатно (free)

Протестируем новый функционал секционирования в PG12.

20.05.2020    1644    0    D_astana    46    

Настоящий краудфандинг. Даешь сравнение двух СУБД!

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

Первый вариант сравнения двух СУБД. Каждый может внести правку и получить SM. Приветствуются конструктивные комментарии, начинающиеся словами "Автор ничего не понимает".

11.05.2020    1719    0    Mari_Kuznetzova    20    

Ubuntu vs CentOS vs Win2k8 vs Debian: производительность PostgreSQL Промо

Статистика базы данных Производительность и оптимизация (HighLoad) v8 Бесплатно (free)

Хотя интернет уже переполнен статьями о "правильной" настройке связки PostgreSQL и 1C 8.2, для подводных камней всегда остается место. При сравнении производительности СУБД PostgreSQL на разных ОС, показатели различаются в разы. Самую большую обиду принесла любимая Ubuntu (человечность). После долгих дней и ночей проведенных за консолью этой ОС, она разочаровала окончательно. Тормоза PostgreSQL в Ubuntu Server. Что с ними делать? Сколько раз можно наступать на грабли?

03.11.2012    41278    0    madmpro    32    

DBCC CHECKDB оповещение о повреждении баз данных SQL

Администрирование СУБД Россия Бесплатно (free)

Проверка целостности баз данных SQL при помощи DBCC CHECKDB и рассылка оповещений на почту.

09.05.2020    1494    0    P_enemy    2    

Эти занимательные временные таблицы

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

Кое-что интересное о временных таблицах и работе платформы 1С с ними.

06.04.2020    8632    0    YPermitin    0    

Как работает 1С размером 13 ТБ в условиях непрерывной разработки

Перенос данных из 1C8 в 1C8 Администрирование СУБД Бесплатно (free)

Обеспечение быстрого непрерывного обмена данными между высоконагруженными системами 1С, покрывающими всю территорию России, требует ответственного подхода к архитектуре и инструментам, используемым для обмена. Как правильно построить такую инфраструктуру и научиться ее оперативно мониторить, в своем докладе на конференции Infostart Event 2019 Inception рассказал разработчик компании «ДНС Ритейл» Максим Старков.

27.03.2020    9314    0    max_st    52    

1С + Apache + SSL: Перевод опубликованной базы на защищенное соединение https с сертификатом от Let's encrypt windows

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

Есть куча инструкции про связку с ISS, решил добавить свои 5 копеек, как я это настраивал на Apache на Windows.

02.03.2020    2287    0    rst_filippov    5    

Ошибка при обновлении: Записи регистра сведений стали неуникальными: Двоичные данные файлов

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

Способ обойти ошибку обновления Записи регистра сведений стали неуникальными: ДвоичныеДанныеФайлов.

26.02.2020    2550    0    dubovenko_m    9    

Контроль места на дисках

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

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

20.02.2020    2688    0    wowik    20    

Нюансы лицензирования 1С

Администрирование СУБД v8 1cv8.cf Россия Бесплатно (free)

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

19.02.2020    7555    0    fixin    112    

Настройка SoftEther VPN Client на Linux Debian/Ubuntu/Mint (связка Linux-Windows)

Администрирование СУБД Windows Linux Россия Бесплатно (free)

На сервере установлен и настроен VPN через программное обеспечение SoftEter VPN Server, настроены клиенты с доступом по сертификату, встала задача настроить доступ клиента из Linux и подключиться по RDP (VNC) в Windows к серверу VPN.

04.02.2020    2228    0    ClickUp    1    

Как мы научились автоматически отслеживать ошибки в 1С

Администрирование СУБД v8 1cv8.cf Россия Бесплатно (free)

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

04.02.2020    11583    0    slozhenikin_com    27    

Автономный сервер. Часть 2 - утилита управления

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

Утилита управления "Автономным сервером" может не только управлять. Какие возможности можно использовать уже сегодня? Разбираем с примерами и ищем отличия от привычных методов.

21.12.2019    8009    0    -vito-    26    

Автономный сервер. Часть 1 - новый вариант сервера

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

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

21.12.2019    10100    0    -vito-    19    

Взломать за 60 секунд!

Информационная безопасность Администрирование СУБД Бесплатно (free)

При работе с данными нужно обращать внимание не только на объемы, скорость и удобство, но и на безопасность. Если организация не уделяет внимания безопасности, пользователь с урезанными правами может получить полный доступ к базе данных за 1-5 минут. Набором типичных ошибок и действенных рецептов по усилению безопасности клиент-серверной 1С на конференции Infostart Event 2019 Inception поделился руководитель ИТ в компании «ИнфоСофт» Антон Дорошкевич.

16.12.2019    12795    0    a.doroshkevich    45    

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

Администрирование данных 1С Администрирование СУБД Бесплатно (free)

"Магия" индексов привела к множеству заблуждений об их работе. Попробуем развеять некоторые из них в контексте 1С.

28.11.2019    16183    0    YPermitin    44    

Набор скриптов для знакомства с PostgreSQL

Администрирование СУБД Бесплатно (free)

Немного скриптов для PostgreSQL, позволяющих познакомиться с состоянием сервера.

04.11.2019    11766    0    YPermitin    17    

Сюрприз fsync() PostgreSQL

Администрирование СУБД Бесплатно (free)

Предлагаю вашему вниманию продолжение перевода статьи Jonathan Corbet "PostgreSQL's fsync() surprise". Оригинал доступен по ссылке https://lwn.net/Articles/752063/

24.10.2019    2797    0    w.r.    0    

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

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

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

14.10.2019    15127    0    YPermitin    28    

Набор скриптов для знакомства с SQL Server

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

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

30.09.2019    19488    0    YPermitin    14    

За 5 шагов добавляем мониторинг счетчиков производительности серверов MS SQL и 1С

Статистика базы данных Производительность и оптимизация (HighLoad) v8 Бесплатно (free)

Мы расскажем и покажем, как добавить данные счетчиков производительности серверов 1С и MS SQL в нашу базу мониторинга за 15 минут. Приведем список наиболее важных из них, опишем основные особенности.

28.05.2019    16558    0    ivanov660    9    

1С Батл: PostgreSQL 9,10 vs MS SQL 2016

Администрирование СУБД Бесплатно (free)

PostgreSQL не так давно появился на российском рынке, поэтому у многих специалистов появляются сомнения, насколько удобно с ним работать, учитывая специфику 1С. Антон Дорошкевич, руководитель IT-отдела и направления оптимизации 1С компании «ИнфоСофт» (г. Новосибирск), рассказал о своем опыте применения этой СУБД. Тема его доклада звучала провокационно: «1С-батл между MS SQL 2016 и PostgreSQL версии 9 и версии 10».

18.12.2018    46090    0    a.doroshkevich    153    

Postgres Pro для 1С: что нового

Администрирование СУБД Бесплатно (free)

Postgres становится все популярнее, но специалисты 1С все равно немного побаиваются этой системы управления базами данных. Почему стоит решиться и попробовать эту СУБД – на конференции INFOSTART EVENT 2018 рассказал сооснователь и генеральный директор компании Postgres Professional Олег Бартунов.

10.12.2018    25352    0    user1068014    106    

Кластер серверов 1С

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

Какой уровень отказоустойчивости при проектировании серверов 1С выбрать? В чем отличия центрального и рабочего сервера? Как правильно настроить требования назначения функциональности? На что влияют настройки кластера и сервера 1С и как в них не запутаться? Антон Дорошкевич дает на эти и многие другие вопросы подробные ответы.

24.09.2018    40233    0    a.doroshkevich    67    

Инструментарий Linux администратора 1С

Администрирование СУБД Бесплатно (free)

Меня зовут Евгений Бессонов. Сегодня я собираюсь вам рассказать про инструментарий Linux администратора 1С. Сразу хочу сделать небольшую ремарку относительно моих знаний в этой области: я не могу отнести себя к разряду «линукс-гиков» – ядро по ночам не пересобираю и патчи не накладываю. Но, тем не менее, у меня накопились кое-какие наработки, которыми я с вами сейчас хочу поделиться.

31.05.2018    22852    0    _evgen_b    41    

Оптимизируй это! Или MS SQL и Экспертный подход творят чудеса!

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

В статье речь пойдет про взаимодействие сервера 1С с MS SQL. Мы очень часто слышим, как важно оптимизировать все критические участки системы заблаговременно, в плановом режиме, как надо, «от и до» во всех деталях. Но в реальной жизни бывает по-другому. Очень часто клиенты обращаются к нам, когда система уже не дает работать: «спасите, помогите, болит очень сильно, надо решать». Об одном из таких случаев я и хотел бы вам сегодня рассказать.

11.07.2017    32013    0    R.Tsarenko    32    

PostgreSQL на Windows – реальная альтернатива для высоконагруженных систем на базе 1С

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

Многие интересуются PostgreSQL, но не знают, насколько хорошо будет она работать с уже существующими системами. «Инфософт» - одна из первых компаний, кто опробовал PostgreSQL на Windows. О своем опыте перехода рассказывает руководитель отдела информационных технологий компании.      

23.06.2017    41522    0    a.doroshkevich    113    

Одна из причин медленной работы табеля (ЗУП 2.5, клиент-сервер, MS SQL Server)

Практика программирования Статистика базы данных Производительность и оптимизация (HighLoad) Учет рабочего времени Учет рабочего времени v8 ЗУП2.5 Россия Бесплатно (free)

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

19.01.2016    22045    0    KAPACEB.AA    16    

Для чего НЕ нужны индексы

Статистика базы данных Практика программирования v8 Бесплатно (free)

Индекс лишним не бывает? Чем больше индексов, тем лучше? А не проиндексировать ли это измерение на всякий случай? Если подобные вопросы иногда возникают в вашей голове, то эту статью прочитать было бы весьма полезно.

16.01.2016    48135    0    comol    94    

Статистика использования дополнительных отчётов и обработок

Статистика базы данных v8 1cv8.cf Бесплатно (free)

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

30.06.2015    13221    0    vasyak319    13    

Пример работы с SQLDMO

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

SQLDMO из 1С.

27.06.2013    3520    2    imm0rtal    2    

Скрипт MS SQL для вывода информации о дате последнего изменения БД и размере БД. Для всех БД на сервере.

Сервисные утилиты Статистика базы данных Администрирование данных 1С Бесплатно (free)

Что делает: Скрипт выводит в виде таблицы информацию о дате последнего изменения базы ( берется из _UsersWorkHistory) и её размер. Кому нужно: Может помочь администраторам у которых на сервере множество различных БД 1С. Одним нажатием кнопки можно понять какие БД стоит рассматривать как "неиспользуемые". Работает только с базами 8.2 управляемое приложение т.к. для определения даты последнего изменения используется системная таблица: _UsersWorkHistory

10.04.2013    18212    0    VVi3ard    7    

APDEX и оценка производительности стандартными средствами 1С

Статистика базы данных Производительность и оптимизация (HighLoad) v8 1cv8.cf Бесплатно (free)

В этом видеокурсе на примере конфигурации «1С:Комплексная автоматизация 8» мы покажем, как стандартными средствами 1С можно выполнить оценку производительности работы программы по методике APDEX.

09.10.2012    28259    0    ИТ-Терминал    6    

Хранимая процедура + job для сбора статистики о размере SQL БД на сервере

Статистика базы данных v7.7 v8 1cv8.cf 1cv7.md Бесплатно (free)

Если требуется узнать как изменяются размеры SQL БД с течением времени и как на них влияет shrink, то эта процедура может пригодится.

16.09.2010    14180    0    dgonson    5    

Количество справочников и документов в любой базе (1с:8.1)

Статистика базы данных v8 1cv8.cf Россия Бесплатно (free)

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

02.05.2010    14435    0    Economist    13    

Анализ количества документов в базе данных

Статистика базы данных v77::ОУ v77::БУ v77::Расчет 1cv7.md Россия Бесплатно (free)

Узкоспециализированный отчет. Анализ количества документов за период, в том числе проведенных и помеченных на удаление. Сортировка убывающая по полю "количество".

16.02.2010    14760    0    SiAl    10    

[DesktopGadget1C] - Гаджет для мониторинга активности баз 1С 8.х в клиент/серверном варианте

Сервисные утилиты Статистика базы данных Администрирование данных 1С v8 1cv8.cf Россия Бесплатно (free)

Утилита мониторит серверы 1С 8.1 и 8.2, выводит список активных баз и количество пользователей и позволяет просматривать параметры/настройки кластеров.

27.11.2009    17452    0    Душелов    34    

Количество документов за период

Статистика базы данных v77::ОУ v77::БУ v77::Расчет 1cv7.md Россия Бесплатно (free)

Часто для оценки работ, например по переносу, необходимо знать сколько документов в базе (может проще перенести вручную?). И хотя все понимают, что написать такой отчет очень просто, но в нужное время под рукой его почему-то не оказывается. А вот и он!

23.07.2009    12215    0    Pluto1    13    

Статистика информационной базы

Статистика базы данных v8 1cv8.cf Россия Бесплатно (free)

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

07.05.2009    27307    0    YVolohov    43    

Отчет о составе конфигурации (по количеству элементов справочников и количеству документов)

Статистика базы данных v8 1cv8.cf Бесплатно (free)

Если вы хотите узнать о количестве элементов в справочниках и количестве документов в базе, то...

05.05.2009    10696    0    black_doctor    10