Поиск причин блокировок СУБД

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

Администрирование - Производительность и оптимизация (HighLoad)

технологический bash context регулярные Богачев grep egrep awk gawk cat sed print printf echo sort logcfg

Расследование блокировок СУБД. Статья написана по мотивам вебинара Виктора Богачева.

Вступление

Количество пользователей нашей основной базы данных активно увеличивается за счет слияния второстепенных баз. Динамика примерно такая: 2020 – 150, 2021 – 300, 2022 – 500 (план). Поэтому оптимизация и быстродействие для нас важны: при увеличении числа пользователей проблемы растут нелинейно. Одно время даже хотели заключить договор ЦКТП, но пока справляемся своими силами.

Был один случай..

.. участились ошибки блокировки СУБД.


Анализ типов блокировок на сервере СУБД (за пол-дня). Ожидания LCK_M_X, LCK_M_U занимают доминирующие позиции.

Что делать ?

Нашел видео по ключевым словам «блокировки, эксперт», автор - Виктор Богачев. Составил краткий конспект

0-3 Вступление, рабочие инструменты

3-4 Поиск блокировок по dmv

4-5 Причина блокировок - отсутствует подходящий индекс

5-8 План запроса, поиск запроса в 1С, используя logcfg

8-10 Ключ dbmslocks

10-12 Заключение, контакты

Решил посмотреть в СУБД. В видео использован запрос

SELECT
db.name,
a.session_id,
a.blocking_session_id,
a.transaction_id,
a.wait_time,
a.wait_type,
st.text,
qp.query_plan
FROM sys.dm_exec_requests AS a
OUTER APPLY sys.dm_exec_sql_text(a.sql_handle) AS st
OUTER APPLY sys.dm_exec_query_plan(a.sql_handle) AS qp
LEFT JOIN sys.sysprocesses AS p
OUTER APPLY sys.dm_exec_sql_text(p.sql_handle) AS stblock
ON a.blocking_session_id > 0 AND a.blocking_session_id = p.spid
LEFT JOIN sys.databases db
ON a.database_id = db.database_id
WHERE NOT a.status IN ('background', 'sleeping')
ORDER BY a.cpu_time DESC

представление sys.dm_exec_requests показывает выполняемые запросы в реальном времени, оно содержит поле blocking_session_id которое указывает на блокирующую сессию. (Доступна документация)

 

Как я уже говорил, у нас большая компания с развитой инфраструктурой. Физически невозможно иметь доступ ко всем серверам компании. Получение информации с сервера целевой СУБД — через системного администратора. Поэтому просматривать состояние базы данных в реальном времени с помощью динамических представлений было неудобно. Мы не знали - в какой момент происходит блокировка. Договорились, что системный администратор соберет extended events по описанию (Спасибо, Юрий Пермитин) но напрямую задачу решить не удалось — события блокировок в СУБД происходят настолько часто, что производительность сервера упала. Составил более подробное описание, с фильтрами по длительности.

 

Количество логируемых событий сократилось до приемлемого уровня. Оказалось неожиданностью: событие lock_timeout тоже нуждается в ограничении по длительности. Оказывается, при соединении внутренних процессов с tempdb, команда SET LOCK_TIMEOUT timeout_period не выполняется, и работа с временными таблицами #tt сопровождается lock_timeout, длительность=0. Файл записался при остановке сессии сбора данных. В результате я получил файл и открыл его Management Studio на тестовом сервере.

События lock_timeout, фрагменты sql_text

1. DELETE FROM T1 FROM dbo._InfoRg18447 T1 WHERE (T1._Fld18454RRef = @P1) AND (T1._Fld1420 = @P2)

С помощью функции ПолучитьСтруктуруБазыДанных() нашел имя регистра и имя поля. Как вы догадываетесь, индекс поля отсутствует. Очень похоже на ситуацию из видео на минуте 7. Для поля поставил значение «индексировать», флаг «ведущее» использовать не стал: могут быть пустые значения. Кстати, до добавления индекса события lock_deadlock на таблице dbo._InfoRg18447 тоже происходили. Причина блокировок СУБД подробно описана в видео: отсутствует индекс, происходит сканирование (с захватом) всей таблицы в режиме исключительной блокировки. При этом управляемые блокировки не учитывают план запроса, блокируют по значениям конкретных полей, конфликта между ними не происходит.

 

2. UPDATE T1 SET _Description = @P1, …. FROM dbo._ScheduledJobs31390 T1 WHERE T1._ID = @P15 AND T1._Version = @P16

Может показаться, что не хватает индекса по полю Version. Я даже полез на сайте смотреть возможные индексы https://its.1c.ru/db/metod8dev/content/1590/hdoc, но потом сообразил, что это регламентное задание. Такие таблицы содержат только одну строку, индекс не нужен. Регламентное задание запускалось в устарелой версии УТ при открытии программы, для целей rls. В новой версии его можно отключить.

 

3. Было несколько ошибок блокировок, связанных с шиной обмена Datareon. При зависании службы шины, отслеживаемые события в 1С не записывались, создавали lock_timeout. Эта ситуация была исправлена без моего участия.

 

События lock_escalation

Иногда происходит эскалация при работе с ценами по регистру «Цены номенклатуры» и табличной части документа «Установка цен». Документы больше 5000 строк табличной части, решение этой проблемы лежит в области организации процессов.

 

Итоги работы

Стало заметно лучше. Ниже анализ ожиданий на сервере СУБД за неделю, суммарная длительность ожиданий LCK_M_X, LCK_M_U составляет 18 минут, до начала работ суммарная длительность ожиданий могла быть до 2 часов в день.

 

P.S. Чтобы счастье было полным

настроил технологический журнал для dbmslocks (важно, что события собираются без отборов).

<?xml version="1.0"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="C:\Log\Logs\UT" history="24">
<event>
<eq property="name" value="DBMSSQL"/>
<eq property="p:processName" value="My_Database_Name"/>
</event>
<property name="all"/>
<property name="lkaid"/>
<property name="lka"/>
<property name="lkp"/>
<property name="lkpid"/>
<property name="lksrc"/>
</log>
<dbmslocks />
</config>

Свойства описаны на сайте ИТС.

 
 Есть один способ эффективно находить информацию на сайте ITS.


    lka=‘1’ поток является источником блокировки.

    lkp=‘1’ поток является жертвой блокировки.

    lkpid номер запроса к СУБД, «кто кого заблокировал» (только для потока-жертвы блокировки).

    lkaid список номеров запросов к СУБД, «кто кого заблокировал» (только для потока-источника блокировки).

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

    lkpto время в секундах, прошедшее с момента обнаружения, что поток является жертвой.

    lkato время в секундах, прошедшее с момента обнаружения, что поток является источником блокировок.

Файлы по часам получились более 6 Гб, поэтому для выделения информации использовал bash:

egrep -e ',lk.id=' -B20 -A20 '21042614.log' > result14.txt

Для строчек, содержащих lkaid / lkpid выбрать 20 строк сверху и снизу, поместить в файл. Ниже пример: два источника, одна жертва. Ожидание длилось 0,84 секунды, прежде чем команда ПланыОбмена.ЗарегистрироватьИзменения() дождалась освобождения ресурса и установила блокировку.

********************************************************************************************************************************************************************
48:57.589056-4,DBMSSQL,6,process=rphost,p:processName=My_Database_Name,OSThread=9868,t:clientID=19295,t:applicationName=1CV8C,t:computerName=my_pc,t:connectID=73248,SessionID=345069,Usr=Иванов И.И.,AppID=1CV8C,DBMS=DBMSSQL,DataBase=My_Database_Name,Trans=1,dbpid=113,Sql=TRUNCATE TABLE #tt364,lka=1,lkaid=10,lkato=0,Context='Форма.Записать : Документ.ЗаказКлиента.Форма.ФормаДокумента
Документ.ЗаказКлиента.МодульОбъекта : 914 : ПроведениеСерверУТ.ЗаписатьНаборыЗаписей(ЭтотОбъект);
	ОбщийМодуль.ПроведениеСерверУТ.Модуль : 355 : Объект.Движения.Записать();
		РегистрНакопления.СвободныеОстатки.МодульНабораЗаписей : 69 : СформироватьТаблицуИзмененийДвижений();
			РегистрНакопления.СвободныеОстатки.МодульНабораЗаписей : 347 : Результат = Запрос.ВыполнитьПакет();'

********************************************************************************************************************************************************************
48:57.589064-2,DBMSSQL,5,process=rphost,p:processName=My_Database_Name,OSThread=9868,t:clientID=19295,t:applicationName=1CV8C,t:computerName=my_pc,t:connectID=73248,SessionID=345069,Usr=Иванов И.И.,AppID=1CV8C,DBMS=DBMSSQL,DataBase=My_Database_Name,Trans=1,dbpid=113,Sql='SELECT
T1._Fld14389
FROM dbo._Const14388 T1
WHERE ((T1._Fld1420 = ?)) AND (T1._RecordKey = ?)
p_0: 0N
p_1: 0x31
',Rows=1,RowsAffected=-1,lka=1,lkaid=10,lkato=0,Context='Форма.Записать : Документ.ЗаказКлиента.Форма.ФормаДокумента
Документ.ЗаказКлиента.МодульОбъекта : 914 : ПроведениеСерверУТ.ЗаписатьНаборыЗаписей(ЭтотОбъект);
	ОбщийМодуль.ПроведениеСерверУТ.Модуль : 355 : Объект.Движения.Записать();
		ОбщийМодуль.обменУправлениеРегистрацией.Модуль : 9 : ЗарегистрироватьДляВыгрузки(Источник);
			ОбщийМодуль.обменУправлениеРегистрацией.Модуль : 142 : ОписанияСобытий = обменКэшированиеПовтИсп.ПолучитьОписанияСобытий(ИмяМетаданных, обменПривелигированный.ПоследнееИзменениеНастроекОбмена());
				ОбщийМодуль.обменПривелигированный.Модуль : 6 : Возврат Константы.обменПоследнееИзменениеНастроекОбмена.Получить();'

********************************************************************************************************************************************************************
48:58.293069-1,DBMSSQL,5,process=rphost,p:processName=My_Database_Name,OSThread=9868,t:clientID=19295,t:applicationName=1CV8C,t:computerName=my_pc,t:connectID=73248,SessionID=345069,Usr=Иванов И.И.,AppID=1CV8C,DBMS=DBMSSQL,DataBase=My_Database_Name,Trans=1,dbpid=113,Sql='UPDATE T1 SET _Fld20718 = T1._Fld20718 + ?, _Fld20719 = T1._Fld20719 + ?, _Fld20720 = T1._Fld20720 + ?, _Fld20721 = T1._Fld20721 + ?, _Fld20722 = T1._Fld20722 + ?
FROM dbo._AccumRgT20725 T1
WHERE (T1._Period = ? AND T1._Fld20715RRef = ? AND T1._Fld20716_TYPE = 0x08 AND T1._Fld20716_RTRef = 0x00000205 AND T1._Fld20716_RRRef = ? AND T1._Fld20717RRef = ? AND T1._Fld1420 = ? AND T1._Splitter = ?) AND (T1._Fld1420 = ?)
p_0: 1679366.4N
p_1: 1679366.4N
p_2: 1679366.4N
p_3: 302N
p_4: 302N
p_5: 40210201000000
p_6: 0x8D0E005056B09D4611EB55AD87043C08
p_7: 0x8D0E005056B09D4611EB55AC6E9EE5B2
p_8: 0x8CAA005056B05DE111EAD5B0BAFEE5A6
p_9: 0N
p_10: 0N
p_11: 0N
',Rows=0,RowsAffected=1,lka=1,lkaid=10,lkato=0,Context=Форма.Записать : Документ.ЗаказКлиента.Форма.ФормаДокумента

********************************************************************************************************************************************************************
48:58.308002-843849,DBMSSQL,6,process=rphost,p:processName=My_Database_Name,OSThread=2360,t:clientID=6553,t:applicationName=1CV8C,t:computerName=my_pc,t:connectID=61336,SessionID=331639,Usr=Иванов И.И.,AppID=1CV8C,DBMS=DBMSSQL,DataBase=My_Database_Name,Trans=1,dbpid=90,Sql='UPDATE T1 SET _MessageNo = CAST(NULL AS NUMERIC(38,8))
FROM dbo._ReferenceChngR26488 T1
WHERE (T1._IDRRef = ? AND (T1._NodeTRef = 0x0000005A AND T1._NodeRRef IN (?))) AND (T1._Fld1420 = ?)
p_0: 0xA9C2001060A2672011DBFFF79783C8BB
p_1: 0x8CEE005056B09D4611EB2A5A6D45303C
p_2: 0N
',Rows=0,RowsAffected=1,lkp=1,lkpid=10,lksrc=73248,lkpto=0,Context='Форма.Записать : Документ.ЗаказКлиента.Форма.ФормаДокумента
Документ.ЗаказКлиента.МодульОбъекта : 914 : ПроведениеСерверУТ.ЗаписатьНаборыЗаписей(ЭтотОбъект);
	ОбщийМодуль.ПроведениеСерверУТ.Модуль : 355 : Объект.Движения.Записать();
		ОбщийМодуль.Б_ОбменССайтомСервер.Модуль : 190 : ЗарегистрироватьИзменения(Источник, Замещение);
			ОбщийМодуль.Б_ОбменССайтомСервер.Модуль : 594 : ПланыОбмена.ЗарегистрироватьИзменения(МассивУзловТовары, Запись.Номенклатура);'
********************************************************************************************************************************************************************

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

 
 прилагаю разрешение на цитирование

 

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Hatson 430 28.04.21 12:22 Сейчас в теме
3. vasilev2015 2190 28.04.21 13:45 Сейчас в теме
(1) Здравствуйте, Василий !

Краткость - сестра ! :-))
2. YPermitin 10831 28.04.21 12:42 Сейчас в теме
Хорошая статья. Напишу немного информации. Интересно будет что скажите.

Вы, наверное, использовали этот скрипт для анализа:LOCKS
Он годится для более детального сбор данных. Обычно результаты загружаю в ClickHouse или PostgreSQL, чтобы потом делать более детальный анализ и ретроспективу тоже можно со старыми периодами сделать. Но на постоянной основе нереально его использовать, чаще для точечной диагностики или на ненагруженных базах.

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

С их помощью можно собирать информацию о дедлоках и ожиданиях на блокировках более 5 секунд (это настраивается). Объем информации намного меньше, но позволяет расследовать все основные проблемы с ожиданиями. Чтобы сопоставлять соединение с СУБД и сеанс 1С также отдельно собирают раз в минуту информацию о сеансах 1С. В большинстве случаев этого достаточно.

Вот пример скрипта настройки сбора отчетов по блокировкам с помощью Extended Events.

Событие dbmslocks в ТЖ стараюсь вообще не включать, потому что создает замедление в работе системы. По моему мнению это больше для расследования конкретной проблемы в указанный промежуток времени, но не для постоянного мониторинга.

Это один из подходов. Также есть еще некоторые способы мониторинга и диагностики, но комментарий и так уже большой получился. :)
vasilev2015; mirco; +2 Ответить
4. vasilev2015 2190 28.04.21 13:49 Сейчас в теме
(2) Здравствуйте, Юрий !

Спасибо, у Вас хорошие материалы. Часто пользуюсь.
5. ardn 262 28.04.21 19:01 Сейчас в теме
Николай, отличная статья. Вместе с тем вопросы:
Зачем вообще искали ошибки управляемых блокировок - ведь по тексту ошибки понятно, что это проблема SQL?
В анализе ожиданий у вас совсем нет CXPacket - MDOP на сервере равен 1 или просто этот тип ожиданий не учитываете?
6. vasilev2015 2190 28.04.21 19:18 Сейчас в теме
(5) Здравствуйте, Юрий !

Спасибо за одобрение.
Мне было интересно, почему отсутствуют управляемые блокировки.
К решению этой практической задачи я пришел постепенно,
проверял разные гипотезы, которые не вошли в статью.
Про задержки CXPacket буду уточнять.
7. Gilev.Vyacheslav 1879 29.04.21 10:10 Сейчас в теме
я так понимаю нормальным путём любой дурак сможет http://www.gilev.ru/latch/ так слишком легко...
8. vasilev2015 2190 29.04.21 10:40 Сейчас в теме
(7) Здравствуйте, Вячеслав !

У Вас неплохие сервисы и они имеют свою долю на рынке, но лично меня отталкивает,
для их использования необходимо вводить пароль от сервера СУБД в другую программу.
Думаю, если Вы измените этот порядок - будет больше клиентов.
Желаю удачи.
9. Gilev.Vyacheslav 1879 29.04.21 15:05 Сейчас в теме
(8) 1. бесплатный сервис и доля на рынке... ну-ну
2. а вас не смущает что у клиентской части открытый код и видно что авторизация нужна для сбора трассировки и никуда дальше не передается, а код контролируете вы, а не мы
думаю если вы измените порядок, то у вас будет более результативная работа
Желаю удачи
Дмитрий74Чел; +1 3 Ответить
10. bulpi 184 30.04.21 13:38 Сейчас в теме
(7)
Я использовал Ваш сервис, он мне помог, спасибо. Но если бы мне хватило мозгов, то сделал бы сам, так надежнее. Вот автор и сделал - ему хватило.
11. Gilev.Vyacheslav 1879 30.04.21 17:45 Сейчас в теме
(10) да я так и понял аргументов не будет почему не использовать бесплатные инструменты
просто делаешь людям добро, а не рубку бабок как некоторые, и в ответ "нате" - тихие минусы от альтернативноориентированных...
Smilk; Дмитрий74Чел; toltec; itmind; maXon777; +5 1 Ответить
12. Smilk 27.05.21 19:17 Сейчас в теме
(11) Ваши инструменты помогают многим людям, но есть отдельные личности которые в профессиональном плане считают себя ровней с вами и сами хотят копать поэтому возможно предвзято относятся к вашим инструментам. Не нужно на них обижаться, другие ведь вам все равно благодарны.
Оставьте свое сообщение

См. также

Исследование технологического журнала 1С при помощи регулярных выражений в блокноте Промо

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

Все из тех, кто пробовали сдать на сертификат "Эксперт по технологическим вопросам 1С", сталкивались с методикой ЦКТП - разбор файлов технологического журнала при помощи консоли bash. Я, в свою очередь,внёс изменения в данную методику. Мне хотелось достичь более понятного вида и сфокусироваться на Perl, в качестве предпочтительного средства обработки файлов ТЖ. Вот что из этого вышло:

30.10.2017    31644    MrWonder    42    

Parameter sniffing и генерация планов для разработчиков 1С

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

Особенности генерации планов запросов. Статья написана по мотивам вебинара Виктора Богачева.

01.06.2021    2658    vasilev2015    13    

Ускорение реструктуризации больших таблиц. Мой вариант

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

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

28.04.2021    925    buganov    0    

Тонкости эксплуатации, плюшки и особенности Postgres Pro Enterprise

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

В ходе онлайн-встречи INFOSTART MEETUP Novosibirsk Руководитель ИТ из компании ИнфоСофт Антон Дорошкевич поделился с коллегами тонкостями и опытом работы с Postgresql для 1С. 

22.04.2021    1444    a.doroshkevich    2    

Долго открывается конфигуратор Промо

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

В ОС Windows Server 2012 бывает полезно выключать службу Dynamic Fair Share Scheduling (DFSS позволяет балансировать и распределять ресурсы между пользователями), чтобы повысить производительность 1С:Предприятие 8 в ряде случаев.

22.04.2015    42781    Gilev.Vyacheslav    1    

Решение нестандартных проблем производительности на реальных примерах

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

На екатеринбургском Infostart Meetup выступил с докладом архитектор ИС центра разработки ФТО Александр Криулин. Он поделился с коллегами кейсами нестандартных проблем производительности и рассказал о способах их решения.

24.03.2021    3424    AlexKriulin    37    

Соединение вложенными циклами

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

Nested loops и отсутствующие индексы. Статья написана по мотивам вебинара Виктора Богачева.

12.03.2021    2801    vasilev2015    21    

Долгое воспроизведение звука по RDP с удаленной машины

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

При воспроизведении короткого звука в 38 Кб, сигнализирующего об успешном сканировании, порою происходило подвисание примерно в 5 секунд.

09.02.2021    621    pashamak    2    

Как можно "положить" SQL сервер с помощью обычной консоли запросов 1С Промо

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

Описано как из 1С, с помощью безобидной на первый взгляд обработки, можно сделать неработоспособным SQL сервер. Предложены меры, позволяющие избежать этого.

22.01.2014    68527    yuraos    112    

Highload-оптимизация 1С: теория и практика на примере консолидированной отчетности группы "Магнит" и розничной аптечной сети "Магнит"

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

Тема оптимизации 1С на больших данных бесконечная и всеобъемлющая, поскольку на производительность влияет целый ряд факторов – количество пользователей, данных, транзакций, неоптимальные запросы и т.д. Об инструментах для локализации проблем производительности и практических кейсах оптимизации рассказал Алексей Олейник, руководитель сектора автоматизации отчетности МСФО компании «Информационные технологии Магнит».

11.01.2021    24922    user662404_itlexusss    14    

Анализ блокировок СУБД: таблица изменений плана обмена 1С

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

Практический пример анализа типичной проблемы ожидания на блокировках СУБД, возникающих при использовании планов обмена 1С. Сервер СУБД: Microsoft SQL Server.

18.12.2020    2459    zhichkin    7    

Анализ проблем производительности по динамике мониторинга RAS 1C

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

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

07.10.2020    4218    ivanov660    12    

Ускоряем списание партий УПП 1.2 / 1.3 / УТ 10.3 Промо

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

Не секрет, что многие пользователи, использующие партионный учет (а таких очень много, даже среди огромных холдингов, несмотря на пропаганду РАУЗ) при больших нагрузках сталкиваются с резким замедлением списания партий.

21.06.2013    58575    Антон Ширяев    117    

Ускорение медленной работы строк в 1С на примере 1С:Документооборот КОРП

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

Если у вас в 1С:Документооборот КОРП 2.1.11.5 (часть более старых и новых конфигураций): 1) Долго отправляется почта в формате HTML; 2) Медленно открывается документы внутренние / входящие / исходящие; 3) Тормозит область просмотра или открытие задач. Тогда вам сюда.

02.10.2020    4850    Nykyanen    16    

Тест скорости работы мобильной платформы 1С

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

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

14.09.2020    1645    capitan    25    

Описание почти всех событий технологического журнала

Технологический журнал v8 Бесплатно (free)

Краткое описание событий технологического журнала с примерами. Все для быстрого старта.

19.08.2020    19476    YPermitin    34    

Сравнение скорости работы 1C+MSSQL и файлового варианта Промо

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

На форумах постоянно задается один и тот же вопрос: почему 1C+MSSQL медленнее обрабатывает запросы чем файловая? Затем обычно идет «флуд» на несколько десятков страниц. Есть два популярных «течения» в таких форумах — одни говорят что для клиент-серверного варианта это нормально, файловый вариант всегда должен работать быстрее, другие говорят что 1С плохо работает с субд. В результате «баталий и выяснения отношений» на форумах люди расходятся при своих мнения.

19.02.2013    58650    Gilev.Vyacheslav    46    

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

Технологический журнал v8 1cv8.cf Бесплатно (free)

Корректируем классификацию ошибок ТЖ в процессе работы для конфигурации мониторинг производительности

17.08.2020    753    ivanov660    0    

SQL для 1С: пишем правильно, красиво, сложно

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

Многие программисты боятся работать с Null, считая, что от этих данных в запросах нужно избавляться. О том, как с помощью Null-полей в запросе решать востребованные в учете задачи по выборке данных, на конференции Infostart Event 2019 Inception рассказал ведущий разработчик ГК WiseAdvice Дмитрий Дудин.

14.08.2020    12964    dmurk    33    

Нестандартные блокировки при работе с OLAP-нагрузкой

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

Если выполнение отчета мешает работе других пользователей и провоцирует блокировки, даже с учетом «грязного чтения» – ситуация кажется парадоксальной. О том, как расследовать такие проблемы, на конференции Infostart Event 2019 Inception рассказали ведущий программист торгового дома «Петрович» Станислав Щербаков и специалист по производительности компании «СофтПоинт» Александр Денисов.

20.07.2020    2448    Филин    7    

Параллельные вычисления в 1С 8 Промо

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

Решение позволяет ускорять выполнение запросов в 1С 8 в отчетах путем их параллельного выполнения в разных потоках.

11.02.2013    33533    gallam99    19    

Автоматическая классификация ошибок технологического журнала

Технологический журнал v8 1cv8.cf Бесплатно (free)

В статье обсудим пример практической настройки конфигурации «Мониторинг производительности» для автоматической классификации ошибок по группам/кластерам на данных текстов описания ошибок. Используем механизм векторной модели текстов и косинусное сходство между ними.

25.06.2020    3561    ivanov660    13    

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

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

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

24.05.2020    9899    DataReducer    22    

[SQL Server] Использование trace flag 9592 для сжатия траффика в кластере AlwaysOn

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

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

18.05.2020    2489    Aleksey.Bochkov    4    

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

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

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

03.11.2012    45048    madmpro    32    

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

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

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

06.04.2020    14477    YPermitin    0    

Оптимизация запросов 1С посредством индексации временных таблиц. Миф? Тестируем, смотрим, считаем

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

Появилось свободное время, решил проверить на работе индексацию таблиц. Решил поделиться с Вами результатами исследования. Давайте порассуждаем на эту тему? Часто ли вы пользуетесь индексацией в запросах? Платформа 8.3.16.1224

03.04.2020    6968    feva    15    

Как я собрал для себя высокопроизводительный и бесплатный облачный бекенд для 1С на PosgreSQL + PostgREST

Производительность и оптимизация (HighLoad) WEB Интеграция Мобильная разработка Администрирование веб-серверов v8 Бесплатно (free)

В этой статье я расскажу о проблемах бека для мобильных приложений или другого фронта, который требует производительности, быстрой реакции и отказоустойчивости, и как я решил это благодаря opensource проекту PostgREST и СУБД Postgre SQL 12. Проведу простой тест производительности для сравнения 1С с данным решением. Это может быть полезно всем, кто разрабатывает мобильные приложения либо фронтсайд-приложения для 1С на чем угодно - на мобильной платформе или на нативном языке или на Simple UI. И также обзор новых функций SimpleUI для связи с этим бекендом.

31.03.2020    15038    informa1555    35    

Многострочный контекст событий

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

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

31.03.2020    3580    vasilev2015    11    

Анализ взаимоблокировок

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

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

20.03.2020    6245    vasilev2015    27    

Многопоточность

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

Увеличиваем скорость загрузки данных в 20 раз. Как следует использовать многопоточность и готовый модуль для внедрения.

18.03.2020    8190    kaliuzhnyi    44    

Планы запросов - это просто! Разбор оптимизаций запросов PostgreSQL на живых примерах

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

Проблема быстродействия 1С напрямую зависит от производительности запросов. Но как понять механику работы СУБД с помощью плана запроса? Андрей Овсянкин и Никита Грызлов на конференции Infostart Event 2019 Inception подробно рассмотрели алгоритм работы с планом запроса СУБД PostgreSQL, полученным из технологического журнала, и рассказали, на что обратить внимание, чтобы оптимизировать работу системы.

17.02.2020    12720    Evil Beaver    13    

Оптимизатор запросов. Вторая часть

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

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

23.01.2020    7135    darkdan77    59    

Улучшаем производительность 1С. Рекомендации

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

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

23.01.2020    10706    Kaval88    26    

Мониторим производительность с помощью 1С RAS

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

Подключаемся и анализируем данные через 1С RAS. Необходимо выполнить 5 пунктов и серьезный инструмент мониторинга будет у вас в руках.

19.12.2019    14111    ivanov660    20    

Весёлые картинки о работе Performance Monitor на Windows Server 2016 Std по мотивам расследования потери производительности на базе 1С

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

Данная публикация посвящена одной особенности Performance Monitor на Windows Server 2016 Std. Как понимать графики Performance Monitor на Windows Server 2016 Std при расследовании проблем в работе 1С.

22.10.2019    8464    EugeneSemyonov    11    

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

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

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

14.10.2019    20425    YPermitin    31    

Мониторинг высоконагруженной системы

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

Высоконагруженной системе (более 8000 клиентских сессий) мониторинг необходим. Про опыт использования инструментов для мониторинга – самописной системы информирования, написанной на C#, и конфигурации «Центр контроля качества» в связке с системой отображения данных Grafana, на конференции Infostart Event 2018 Education рассказал Олег Репников.

13.09.2019    9824    Repich    5    

Использование Zabbix для сбора информации о серверных вызовах и управляемых блокировках с сервера 1С Предприятия, работающего на платформе GNU/Linux

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

Описанные в данном опусе механизмы ни в коей мере не противопоставляются тому, что реализует КИП от 1С или какие-либо другие инструменты (решения)! Это всего лишь еще один взгляд на "проблему", который может быть полезен в некоторых ситуациях.

10.09.2019    20919    Sloth    32    

Хранение файлов - как уменьшить размер базы данных

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

Хранение файлов в базе 1С можно оптимизировать для уменьшения размера хранимых данных.

09.09.2019    9593    2tvad    17    

Неочевидные проблемы производительности: важность системного подхода при анализе

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

Часто программисты и 1С-ники сталкиваются с совершенно необъяснимыми на первый взгляд проблемами. Но это потому, что их внимание направлено только на один сегмент системы, а не на всю систему полностью. О том, почему нужно стараться смотреть на ситуацию комплексно, рассказал специалист по производительности компании SOFTPOINT Александр Денисов.

19.07.2019    9477    Филин    12    

Ловля блокировок на связке "Microsoft SQL server - 1С"

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

Материал относится к базам данных на связке «1С - MS SQL Server». Один из способов отлова блокировок в бд 1С . Переход к управляемым блокировкам через режим "Автоматический и управляемый".

16.07.2019    11640    fhqhelp    0    

Анти-оптимизация: как мы ускорили запрос в 4 раза, сделав его неоптимальным

Производительность и оптимизация (HighLoad) Практика программирования Решение задач на 1С:Специалист Разработка v8 Бесплатно (free)

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

02.07.2019    12211    igordynets    120    

Ускорение чтения правил обмена в УПП 1.3 в 20 раз!

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

Способ оптимизации чтения правил обмена конвертации данных. Может понадобиться при большом размере правил и высокой периодичности обмена.

27.06.2019    10491    YPermitin    17    

Хотите снизить нагрузку на процессор сервера в 2 раза?

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

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

27.06.2019    11138    Дмитрий74Чел    6