Сказ о том, как 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 и его настройки "заиграли" новыми красками! ;)

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

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

Избранное Подписка Сортировка: Древо
В этой теме еще нет сообщений.
Оставьте свое сообщение

См. также

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

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

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

вчера в 09:20    1593    fixin    78       

Голосование за доклады на INFOSTART MEETUP Kazan - до 25 февраля. Промо

Выбирайте и голосуйте за самые интересные доклады! Лучшие из лучших попадут в окончательную программу казанского митапа. Оставить свой голос можно до 25 февраля 2020 года.

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

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

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

04.02.2020    547    ClickUp    1       

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

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

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

04.02.2020    8719    slozhenikin_com    27       

INFOSTART MEETUP Kazan. 13 марта 2020 г. Промо

Инфостарт продолжает путешествие по России. Следующая остановка - Казань. Тема мероприятия - управление и технологии автоматизации учета на платформе "1С: Предприятие". Ждем всех: докладчиков и участников! Стоимость участия - 5 500 рублей. Цена действительна до 30.01.2020

5 500

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

Статья Системный администратор Программист Нет файла v8 Бесплатно (free) Администрирование СУБД

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

21.12.2019    4671    -vito-    18       

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

Статья Системный администратор Программист Нет файла v8 Бесплатно (free) Администрирование СУБД

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

21.12.2019    6505    -vito-    14       

Онлайн-курс "Подготовка к экзамену 1С:Эксперт и 1С:Профессионал по технологическим вопросам" с 7 по 24 апреля 2020 г. Промо

На курсе вы получите практические навыки решения задач производительности 1С, в том числе характерных для высоконагруженных информационных систем (более 1000 пользователей). Подготовка к экзамену – только одна из составляющих курса. 70% слушателей приходят за знаниями, которые позволят расти и зарабатывать, делать сложные задачи на крупных проектах.

16450 рублей

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

Статья Системный администратор Программист Нет файла Бесплатно (free) Администрирование данных 1С Администрирование СУБД

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

28.11.2019    12299    YPermitin    44       

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

Статья Системный администратор Программист Нет файла Бесплатно (free) Администрирование СУБД

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

04.11.2019    7833    YPermitin    15       

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

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

Сюрприз fsync() PostgreSQL

Статья Системный администратор Программист Нет файла PostgreSQL Бесплатно (free) Администрирование СУБД

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

24.10.2019    1804    w.r.    0       

Сдача регламентированной отчетности из программ 1С Промо

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

от 1500 руб.

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

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

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

30.09.2019    15357    YPermitin    14       

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

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

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

28.05.2019    12078    ivanov660    9       

Базовый курс по обмену данными в системе 1С:Предприятие. Онлайн-интенсив с 12 по 28 мая 2020 г. Промо

Данный онлайн-курс предусматривает изучение механизмов платформы “1С:Предприятие”, обеспечивающих обмен данными между различными прикладными 1С-решениями и взаимодействие с другими информационными системами. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие”.

5500 рублей

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

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

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

19.01.2016    20841    KAPACEB.AA    16       

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

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

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

16.01.2016    45598    comol    94       

Новый раздел на Инфостарте - Electronic Software Distribution Промо

Инфостарт напоминает: на нашем сайте можно купить не только ПО, связанное с 1С. В нашем арсенале – ESD-лицензии на ПО от ведущих вендоров: Microsoft, Kaspersky, ESET, Dr.Web, Аскон и другие.

  • Низкие цены, без скрытых платежей и наценок
  • Оперативная отгрузка
  • Возможность оплаты с личного счета (кешбек, обмен стартмани на рубли и т.п.)
  • Покупки идут в накопления для получения скидочных карт лояльности Silver (5%) и Gold (10%)

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

Статья Системный администратор Нет файла v8 1cv8.cf Windows Бесплатно (free) Статистика базы данных

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

21.07.2015    29782    Aleksey.Bochkov    15       

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

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

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

30.06.2015    12416    vasyak319    13       

1C:Предприятие для программистов: Расчетные задачи (зарплата). Онлайн-интенсив с 01 по 17 июня 2020 г. Промо

Данный онлайн-курс предусматривает изучение механизмов платформы “1С:Предприятие”, которые предназначены для автоматизации периодических расчетов, а именно - для расчета зарплаты. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие”, а также для опытных пользователей прикладного решения “1С:Зарплата и управление персоналом” и прочих прикладных решений, в которых реализован функционал расчета зарплаты.

4900 рублей

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

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

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

10.04.2013    17504    VVi3ard    7       

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

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

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

03.11.2012    40071    madmpro    32       

​​​​​​​CorelDRAW Graphics Suite 2019 Промо

CorelDRAW – пакет профессиональных инструментов для редактирования фотографий, разработки дизайна, создания макетов страниц и векторных иллюстраций

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

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

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

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

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

Инструменты и обработки Системный администратор Программист Компонента, плагин (dll, vbs,..) v7.7 v8 1cv8.cf 1cv7.md Windows Бесплатно (free) Статистика базы данных

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

16.09.2010    12842    62    dgonson    5       

Базовый курс по управлению ИТ-проектами. Курс проходит с 26 февраля по 22 апреля 2020 года. Промо

Отличительная черта курса - органичное сочетание трех вещей: 1.Теория проектного управления (PMI®+Agile Alliance+Российские ГОСТ+Методологии от 1С); 2. Опыт внедрения продуктов 1С (опыт франчайзи и успешных компаний + тренды Infostart Event и Agile Days); 3. Разбор реальных проблем и рекомендации экспертов по проектам слушателей. Мы будем фиксироваться на тех инструментах, которые реально оказываются полезными в практике руководителей проектов внедрения. Ведущая курса - Мария Темчина.

от 11000 рублей

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

Инструменты и обработки Системный администратор Внешняя обработка (ert,epf) v8 1cv8.cf Россия Бесплатно (free) Статистика базы данных

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

02.05.2010    13777    675    Economist    13       

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

Инструменты и обработки Системный администратор Программист Внешний отчет (ert,erf) v77::ОУ v77::БУ v77::Расчет 1cv7.md Россия Windows Бесплатно (free) Статистика базы данных

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

16.02.2010    14160    332    SiAl    10       

1C:Предприятие для программистов: Запросы и отчеты. Второй поток. Онлайн-интенсив с 17 марта по 16 апреля 2020 г. Промо

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

6500 рублей

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

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

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

27.11.2009    16620    344    Душелов    34       

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

Инструменты и обработки Системный администратор Внешний отчет (ert,erf) v77::ОУ v77::БУ v77::Расчет 1cv7.md Россия Бесплатно (free) Статистика базы данных

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

23.07.2009    11655    149    Pluto1    13       

Подборка программ для взаимодействия с ЕГАИС Промо

ЕГАИС (Единая государственная автоматизированная информационная система) - автоматизированная система, предназначенная для государственного контроля за объёмом производства и оборота этилового спирта, алкогольной и спиртосодержащей продукции. Инфостарт рекомендует подборку проверенных решений для взаимодействия с системой.

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

Инструменты и обработки Системный администратор Внешняя обработка (ert,epf) v8 1cv8.cf Россия Бесплатно (free) Статистика базы данных

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

07.05.2009    26252    1098    YVolohov    43