Оптимизация запросов в 7 ТБ базе 1С

preview_player
Показать описание
А по промокоду yellowclub получишь 10% скидку.

В гостях у Желтого клуба Артём Кузнецов – тимлид в крупнейшей МФО в России.
Артёму есть чем поделиться. Он работает с 1С базой объемом более 7 ТБ.

ДОП. МАТЕРИАЛЫ от Артёма Кузнецова

НАВИГАЦИЯ
00:00 - Вступление
04:40 - Почему нужно оптимизировать 1С запросы
09:12 - Дашборды мониторинга работы 1С базы на 7 ТБ
18:55 - Правила работы с RLS в 1С запросах
29:00 - Правила работы с виртуальными таблицами
39:27 - Использование индексов в 1С запросах
51:37 - Использование условий в 1С запросах
01:09:05 - Ускоряем работу базы 1С без рефакторинга 1С запросов
01:23:40 - Пример оптимизации запроса
01:40:51 - Еще раз про крутые дашборды
01:43:10 - Как попасть на работу в компанию (tg Дмитрия Марочко @mothlike)
01:44:32 - Использование расширений
01:47:15 - Про обучение и сертификацию
01:48:37 - Как удалось построить такую крутую команду
01:50:00 - Реально ли начинающему получить тут работу
01:54:20 - Как попал в 1С сферу
02:01:00 - Почему сложно продавать бизнес приложения
02:03:50 - На каких еще языках пишет Артём
02:05:00 - Заключение

Реклама. Информация о рекламодателе по ссылкам в описании.
==========
Информационные площадки "Жёлтого клуба":

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

Огромное спасибо за информацию! Думал, что достаточно придерживаться стандартов оптимизации запросов, а тут, как оказалось, не все так гладко когда переходишь на уровень ооочень больших данных.
По выборке "В (ВЫБРАТЬ .. ИЗ ...)" в условиях виртуальной таблицы: проверял на записях до 1 млн, там она отрабатывала медленнее, чем внутреннее соединение виртуальной таблицы и таблицы задающей отбор (это при серверной базе). При файловой базе быстрее работает именно "В ()" в условиях. Получается, что при ооочень большом количестве записей серверная база начинает вести себя как файловая база (конкретно в данном примере, хотя может и в других случаях тоже, надо проверять).

pgoqqxw
Автор

Мой совет - смотрите это видео целиком, т.к. там где спикер говорит, что нельзя использовать частицу НЕ, В(), ИЛИ это относится к выборкам из больших таблиц (Документов, РС, РН). Дальше уточняется, что НЕ и В() вполне можно использовать в предварительных ВТ, в которых готовим списки для ВНУТРЕНЕЕ СОЕДИНЕНИЕ.
Очень полезный материал. Спасибо!

akrynetsky
Автор

Я вообще никогда не оставлял комментариев ни под каким видео, а тут просто не удержался, хочу написать, точнее даже выразить огромную благодарность за проделанную работу!! Спасибо большое ребят за видео!!

luckdmst
Автор

Это шикарное видео! Спасибо Артёму за кейсы. Нельзя просто так взять и написать сразу правильно 😂 А метрики использовать можно👍 Хочу так же😁 Было бы здорово в таком же формате посмотреть про настройку grafana.

mneoizy
Автор

Стоящее видео! Очень классно и приятно слушать. Бальзам на уши! Палец вверх поставил

leroka_valeroka_
Автор

Ребята, спасибо Вам за проделанную работу

daa
Автор

Митап супер!!! 👍👍👍 просто 🔥
Подробно, подготовленно, понятно даже про сложные вещи 🤗
Большое пребольшое спасибо!!!!

jikemhw
Автор

Только включил запись, поставил лайк, спасибо вам за то что вы делаете!

Gluk
Автор

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

kidxlei
Автор

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

dzjvzuw
Автор

Ничего не понятно, но очень интересно. Спасибо!

TRIALEX
Автор

Хочу работать с этим чуваком в команде

bbtptmo
Автор

Работа в качестве хоббито ) Спасибо, было очень интересно

ktoeto
Автор

Огромное спасибо за видео.

Очень хочется прояснить такие вопросы:

1) 45:00 Пусть для примера у таблицы есть кластерный индекс "Измерение1"+"Измерение2".
"Измерение1" принимает значения из ограниченного списка (например, перечисление или очень небольшой справочник).
"Измерение2" принимает очень большое количество значений и обладает высокой селективностью.
Большинство запросов к таблице имеют отбор по полю "Измерение1" плюс ещё что-то (например, "... ПЕРВЫЕ 1000 ... ГДЕ Измерение2 > &Мин ... УПОРЯДОЧИТЬ ПО Измерение2").

Надо улучшить запрос с отбором по некоторым значениям поля "Измерение2".
Как лучше это сделать?

А) Поменять поля в индексе местами. Насколько испортятся или останутся на прежней производительности большинство запросов?
Б) Добавить индексирование по "Измерение2". При этом, скорее всего, новосозданный индекс будет размером в половину от кластерного.
В) Сделать отбор по полю "Измерение1" из полного списка значений и отбор по полю "Измерение2".
Г) Сгенерировать текст запроса из блоков, связанных через "ОБЪЕДИНИТЬ ВСЕ", и в каждом блоке отбирать "Измерение1" по одному значению.


2) 1:05:30 Вроде бы, как-раз где при количестве записей до 100 или до 1000 (по данным статистики) планировщик MS SQL применит полный обход таблицы независимо от наличия индексов.

rusmus
Автор

Сделайте выпуск про настройку графиков графаны)

filaretbusoni
Автор

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

mobilitymoon
Автор

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

IvanAndreychuk
Автор

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

NemanEnt
Автор

Вопрос по примеру "ручного среза последних" (время 1:21:18): Рассматривали вариант помещения во временную таблицу строк с максимальным периодом? Что-то вроде ВЫБРАТЬ МАКСИМУМ(Период), ИДЗвонка ПОМЕСТИТЬ ВТ_СтатусыЗвонков ... СГРУППИРОВАТЬ ПО ИДЗвонка; ВЫБРАТЬ ВТ_СтатусыЗвонков.ИДЗвонка, ЖЗ.Статус ИЗ ВТ_СтатусыЗвонков ВНУТРЕННЕ СОЕДИНЕНИЕ РегистрСведений.ЖурналЗвонков КАК ЖЗ ПО ЖЗ.ИДЗвонка = ВТ_СтатусыЗвонков.ИДЗвонка И ЖЗ.Период = ВТ_СтатусыЗвонков.Период.

icsier
Автор

Интересный митап, спасибо. Скрытый герой - котейка. Открой, закрой... Закрыл? Открывай.. 😁

QVRJ
join shbcf.ru