Кто круче: "ИЛИ" или "ОБЪЕДИНИТЬ ВСЕ" в запросе?

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

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

Оптимизация запрос профайлер СУБД MS SQL Profiler.

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

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

На этот раз посмотрим оптимизацию запроса. Итак, имеется ЗУП версии 2.5.319.1 СУБД - MS SQL Платформа версии 8.3.14.1565 режим совместимости 8.2.13

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

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

Аж 34 секунды! Этот запрос растянулся больше, чем на 1000 строк, и понять без профайлера, где проблема, невозможно.

Данные, собранные подсистемой оценки производительности:

Как видно, apdex болтается где-то на дне. (Какая милая опечатка "дукумент"!) А среднее время выполнения операции на рабочей базе 25 секунд.

Итак, для настройки профайлера узнаем ID базы:

Use [database]
Go
Select DB_ID()

Настроим профайлер, выбрав необходимые события и установив отборы по длительности и ID базы:

На этот раз запрос выполнился быстрее, за 9 секунд. Находим самый тяжелый запрос:

Находим его в базе 1с:

ВЫБРАТЬ РАЗРЕШЕННЫЕ
ГрафикиРаботыПоВидамВремени.ГрафикРаботы КАК ГрафикРаботы,
ГрафикиРаботыПоВидамВремени.Дата КАК Дата,
НАЧАЛОПЕРИОДА(ГрафикиРаботыПоВидамВремени.Дата, МЕСЯЦ) КАК ПериодРегистрации,
ГрафикиРаботыПоВидамВремени.ОсновноеЗначение,
ГрафикиРаботыПоВидамВремени.ВидУчетаВремени КАК ВидУчетаВремени,
ГрафикиРаботыПоВидамВремени.Документ,
ГрафикиРаботыПоВидамВремени.План КАК План
ПОМЕСТИТЬ ВТГрафикиРаботыПоВидамВремени
ИЗ
РегистрСведений.ГрафикиРаботыПоВидамВремени КАК ГрафикиРаботыПоВидамВремени
ГДЕ
ГрафикиРаботыПоВидамВремени.ГрафикРаботы В
(ВЫБРАТЬ
Сотрудники.Сотрудник
ИЗ
ВТСотрудники КАК Сотрудники
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ГрафикиРаботников.ГрафикРаботы
ИЗ
ВТГрафикиРаботников КАК ГрафикиРаботников)
И ГрафикиРаботыПоВидамВремени.Дата МЕЖДУ &НачалоПериода И &КонецПериода
И ГрафикиРаботыПоВидамВремени.ВидУчетаВремени <> ЗНАЧЕНИЕ(Перечисление.ВидыУчетаВремени.ПоДням)  

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

Казалось бы, как оптимизировать этот запрос? Он написан согласно рекомендациям от 1С, но индекс почему-то не используется, хотя стоят условия по первому измерению. Но ради эксперимента, давайте перепишем запрос, используя "ИЛИ":

ВЫБРАТЬ РАЗРЕШЕННЫЕ
ГрафикиРаботыПоВидамВремени.ГрафикРаботы КАК ГрафикРаботы,
ГрафикиРаботыПоВидамВремени.Дата КАК Дата,
НАЧАЛОПЕРИОДА(ГрафикиРаботыПоВидамВремени.Дата, МЕСЯЦ) КАК ПериодРегистрации,
ГрафикиРаботыПоВидамВремени.ОсновноеЗначение,
ГрафикиРаботыПоВидамВремени.ВидУчетаВремени КАК ВидУчетаВремени,
ГрафикиРаботыПоВидамВремени.Документ,
ГрафикиРаботыПоВидамВремени.План КАК План
ПОМЕСТИТЬ ВТГрафикиРаботыПоВидамВремени
ИЗ
РегистрСведений.ГрафикиРаботыПоВидамВремени КАК ГрафикиРаботыПоВидамВремени
ГДЕ
ГрафикиРаботыПоВидамВремени.ГрафикРаботы В
((ВЫБРАТЬ
Сотрудники.Сотрудник
ИЗ
ВТСотрудники КАК Сотрудники) или 
ГрафикиРаботыПоВидамВремени.ГрафикРаботы В(ВЫБРАТЬ
ГрафикиРаботников.ГрафикРаботы
ИЗ
ВТГрафикиРаботников КАК ГрафикиРаботников))
И ГрафикиРаботыПоВидамВремени.Дата МЕЖДУ &НачалоПериода И &КонецПериода
И ГрафикиРаботыПоВидамВремени.ВидУчетаВремени <> ЗНАЧЕНИЕ(Перечисление.ВидыУчетаВремени.ПоДням)  

И что же мы видим? 

Выполнение запроса меньше чем за секунду.

Текст запроса на языке SQL:

Индекс используется:

После обновления в рабочей базы:

Аpdex по этой операции вырос до 0,914. Среднее время выполнения операции - 3 секунды.

Послесловие

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

Скачать файлы

Наименование Файл Версия Размер
УнифицированнаяФормаТ13
.erf 68,08Kb
16.09.19
0
.erf 68,08Kb Скачать

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

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. json 2632 14.09.19 23:39 Сейчас в теме
Такое условие выглядит странно:
ГДЕ
	ГрафикиРаботыПоВидамВремени.ГрафикРаботы В
	(ВЫБРАТЬ
		Сотрудники.Сотрудник
	ИЗ
		ВТСотрудники КАК Сотрудники) 
2. karpik666 2846 14.09.19 23:44 Сейчас в теме
(1) вообще-то, нормально, так обозначаются индивидуальные графики работы сотрудника, в поле "График работы" в данном случае будет ссылка на сотрудника, у кого используется такой график.
4. json 2632 15.09.19 00:15 Сейчас в теме
(2) никогда не работал с этим регистром, хотя это типовой УППшный регистр (посмотрел ради интереса).
Со стороны кажется нелогично.
Но согласен, что запрос в данном случае корректный
3. json 2632 15.09.19 00:08 Сейчас в теме
В рекомендациях от 1С вроде сравниваются два варианта
1)
ВЫБРАТЬ
	Поле
ИЗ Таблица
ГДЕ (&Условие1) ИЛИ (&Условие2)


2)
ВЫБРАТЬ
	Поле
ИЗ Таблица
ГДЕ (&Условие1)

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	Поле
ИЗ Таблица
ГДЕ (&Условие2)
Показать


И вариант 2) вроде как обычно быстрее чем 1)

В данной статье ОБЪЕДИНИТЬ ВСЕ находится не в основном запросе, а в запросе в условии.
И не совсем корректно ссылаться на рекомендации в данном конкретном случае.
5. karpik666 2846 15.09.19 00:19 Сейчас в теме
(0) (3) меня больше смущает другое, это приоритет булевых операций, по-моему автор забыл добавить скобку, потому и такой выигрыш скорости. в первом варианте было
ГДЕ A И B И C

а во втором
ГДЕ A ИЛИ B И С И D
судя структуре регистра, чтобы индекс был покрывающим нужно добавить еще условие по полю "план" и "месяц", также индекс не используется, если используется "НЕ" в условиях запроса.
mivari; azazana; NN2P; MVK80; +4 Ответить
6. json 2632 15.09.19 00:24 Сейчас в теме
(5) да, верное замечание.
Первый запрос в статье не эквивалентен второму по результату.
Не хватает пары скобок, группирующих условия по полю "ГрафикРаботы"
7. karpik666 2846 15.09.19 00:28 Сейчас в теме
(6) это же "гениальная" рекомендация, "если хотите чтобы работало быстрее, то переписывайте запрос на неправильный"
8. tormozit 5801 15.09.19 08:58 Сейчас в теме
(5) Думаю автору помогло бы избежать этой ошибки оформление условия в виде И-ИЛИ дерева . В конструкторе запроса ИР эта опция называется "Иерархич. логика".
Оригинальное условие выглядело бы так
ГДЕ ИСТИНА
	И ГрафикиРаботыПоВидамВремени.ГрафикРаботы В (
			ВЫБРАТЬ
				Сотрудники.Сотрудник КАК Сотрудник
			ИЗ
				ВТСотрудники КАК Сотрудники
			ОБЪЕДИНИТЬ ВСЕ
			ВЫБРАТЬ
				ГрафикиРаботников.ГрафикРаботы КАК Сотрудник
			ИЗ
				ВТГрафикиРаботников КАК ГрафикиРаботников)
	И ГрафикиРаботыПоВидамВремени.Дата МЕЖДУ &НачалоПериода И &КонецПериода
	И ГрафикиРаботыПоВидамВремени.ВидУчетаВремени <> ЗНАЧЕНИЕ(Перечисление.ВидыУчетаВремени.ПоДням)
Показать

Некорректно изменное условие выглядело бы так
ГДЕ ЛОЖЬ
	ИЛИ ГрафикиРаботыПоВидамВремени.ГрафикРаботы В (
			ВЫБРАТЬ
				Сотрудники.Сотрудник КАК Сотрудник
			ИЗ
				ВТСотрудники КАК Сотрудники)
	ИЛИ (ИСТИНА
		И ГрафикиРаботыПоВидамВремени.ГрафикРаботы В (
				ВЫБРАТЬ
					ГрафикиРаботников.ГрафикРаботы КАК ГрафикРаботы
				ИЗ
					ВТГрафикиРаботников КАК ГрафикиРаботников)
		И ГрафикиРаботыПоВидамВремени.Дата МЕЖДУ &НачалоПериода И &КонецПериода
		И ГрафикиРаботыПоВидамВремени.ВидУчетаВремени <> ЗНАЧЕНИЕ(Перечисление.ВидыУчетаВремени.ПоДням))
Показать

А правильно изменное условие бы выглядело так
ГДЕ ИСТИНА
	И (ЛОЖЬ
		ИЛИ ГрафикиРаботыПоВидамВремени.ГрафикРаботы В (
				ВЫБРАТЬ
					Сотрудники.Сотрудник КАК Сотрудник
				ИЗ
					ВТСотрудники КАК Сотрудники)
		ИЛИ ГрафикиРаботыПоВидамВремени.ГрафикРаботы В (
				ВЫБРАТЬ
					ГрафикиРаботников.ГрафикРаботы КАК ГрафикРаботы
				ИЗ
					ВТГрафикиРаботников КАК ГрафикиРаботников))
	И ГрафикиРаботыПоВидамВремени.Дата МЕЖДУ &НачалоПериода И &КонецПериода
	И ГрафикиРаботыПоВидамВремени.ВидУчетаВремени <> ЗНАЧЕНИЕ(Перечисление.ВидыУчетаВремени.ПоДням)
Показать
Прикрепленные файлы:
artkor; mivari; fancy; VasDmi666; karpik666; MVK80; json; +7 Ответить
11. azazana 63 16.09.19 11:45 Сейчас в теме
(5) Да, действительно, спасибо, вы правы, на тестовой базе, когда я воспроизводила эту оптимизацию для статьи, я действительно допустила ошибку. В рабочей как раз все было хорошо.
Чуть позже я выложу замеры и трассировку с исправленной ошибкой. Но да, и в таком варианте выигрыш в скорости на порядок.
16. azazana 63 16.09.19 12:18 Сейчас в теме
(5)
судя структуре регистра, чтобы индекс был покрывающим нужно добавить еще условие по полю "план" и "месяц", также индекс не используется, если используется "НЕ" в условиях запрос

Если бы индекс был покрывающим, это было бы совсем идеально, но не всегда реализуемо. А в данном случае можно сделать так, чтобы индекс использовался хотя бы частично - по первому измерению, остальное, да, пришлось сканировать, но все равно выигрыш в скорости получился на порядок.
18. azazana 63 16.09.19 12:56 Сейчас в теме
(5) Спасибо большое за замечание, ошибка исправлена, новые результаты замера производительности и трассировки в статье.
22. azazana 63 20.09.19 18:19 Сейчас в теме
(3) Согласна. Исправила.
У меня почему-то в голове осталось, что "ОБЪЕДИНИТЬ ВСЕ" всегда лучше чем "ИЛИ"
Кстати, если переписать запрос вот так:
ВЫБРАТЬ РАЗРЕШЕННЫЕ
   ГрафикиРаботыПоВидамВремени.ГрафикРаботы КАК ГрафикРаботы,
   ГрафикиРаботыПоВидамВремени.Дата КАК Дата,
   НАЧАЛОПЕРИОДА(ГрафикиРаботыПоВидамВремени.Дата, МЕСЯЦ) КАК ПериодРегистрации,
   ГрафикиРаботыПоВидамВремени.ОсновноеЗначение,
   ГрафикиРаботыПоВидамВремени.ВидУчетаВремени КАК ВидУчетаВремени,
   ГрафикиРаботыПоВидамВремени.Документ,
   ГрафикиРаботыПоВидамВремени.План КАК План

ПОМЕСТИТЬ ВТГрафикиРаботыПоВидамВремени

ИЗ
      РегистрСведений.ГрафикиРаботыПоВидамВремени КАК ГрафикиРаботыПоВидамВремени

ГДЕ
   ГрафикиРаботыПоВидамВремени.ГрафикРаботы В
      (ВЫБРАТЬ
      Сотрудники.Сотрудник
           ИЗ
                ВТСотрудники КАК Сотрудники)
   И ГрафикиРаботыПоВидамВремени.Дата МЕЖДУ &НачалоПериода И &КонецПериода
   И ГрафикиРаботыПоВидамВремени.ВидУчетаВремени <> ЗНАЧЕНИЕ(Перечисление.ВидыУчетаВремени.ПоДням)

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   ГрафикиРаботыПоВидамВремени.ГрафикРаботы,
   ГрафикиРаботыПоВидамВремени.Дата,
   НАЧАЛОПЕРИОДА(ГрафикиРаботыПоВидамВремени.Дата, МЕСЯЦ),
   ГрафикиРаботыПоВидамВремени.ОсновноеЗначение,
   ГрафикиРаботыПоВидамВремени.ВидУчетаВремени,
   ГрафикиРаботыПоВидамВремени.Документ,
   ГрафикиРаботыПоВидамВремени.План

ИЗ

   РегистрСведений.ГрафикиРаботыПоВидамВремени КАК ГрафикиРаботыПоВидамВремени

ГДЕ
   ГрафикиРаботыПоВидамВремени.ГрафикРаботы В
      (ВЫБРАТЬ
           ГрафикиРаботников.ГрафикРаботы
       ИЗ
           ВТГрафикиРаботников КАК ГрафикиРаботников)
    И ГрафикиРаботыПоВидамВремени.Дата МЕЖДУ &НачалоПериода И &КонецПериода
    И ГрафикиРаботыПоВидамВремени.ВидУчетаВремени <> ЗНАЧЕНИЕ(Перечисление.ВидыУчетаВремени.ПоДням)
Показать


То тоже работает быстро. Так что не все "ОБЪЕДИНИТЬ ВСЕ" одинаково полезны.
9. gzharkoj 15.09.19 17:31 Сейчас в теме
После исправления логики условий прирост остался?
12. azazana 63 16.09.19 11:46 Сейчас в теме
(9) Да, остался. Я чуть позже выложу трассировку и замер.
17. azazana 63 16.09.19 12:55 Сейчас в теме
(9) Выложила исправленное решение.
10. Famza 83 16.09.19 11:05 Сейчас в теме
Каков тип измерения "ГрафикРаботы"?
14. azazana 63 16.09.19 12:09 Сейчас в теме
(10) Составной. Справочники Сотрудники, Физические Лица, Графики работы.
19. Famza 83 16.09.19 18:31 Сейчас в теме
(14) В рекомендациях 1С в таких случаях требуется использовать "ВЫРАЗИТЬ". С данной конструкцией измерялся прирост скорости?
23. azazana 63 20.09.19 18:27 Сейчас в теме
(19) Боюсь, что "Выразить" в данном случае не поможет. У этот реквизит может быть как типом значения "сотрудник", так и "график".
ВЫБРАТЬ
                Сотрудники.Сотрудник КАК Сотрудник
            ИЗ
                ВТСотрудники КАК Сотрудники
            ОБЪЕДИНИТЬ ВСЕ
            ВЫБРАТЬ
                ГрафикиРаботников.ГрафикРаботы
            ИЗ
                ВТГрафикиРаботников КАК ГрафикиРаботников
Показать
13. kiruha 384 16.09.19 12:09 Сейчас в теме
А зачем было "ОБЪЕДИНИТЬ ВСЕ" , а не "ОБЪЕДИНИТЬ"
и что будет если условие "ГрафикиРаботыПоВидамВремени.ГрафикРаботы В" заменить на внутреннее соединение (Подзапрос с "Объединить")
pm74; A_Max; +2 Ответить
15. azazana 63 16.09.19 12:14 Сейчас в теме
(13)
А зачем было "ОБЪЕДИНИТЬ ВСЕ" , а не "ОБЪЕДИНИТЬ"

Это вопрос скорее к разработчикам типового решения.
А идею с "ОБЪЕДИНИТЬ" вместо "ОБЪЕДИНИТЬ ВСЕ" попробую. Мне кажется, что ничего не изменится, но я попробую.
21. azazana 63 18.09.19 15:35 Сейчас в теме
(13) Проверила - выполняется так же долго.
20. DrZombi 116 17.09.19 06:49 Сейчас в теме
(0) Крут тот, кто понимает что ему надо и как оно работает.
Все зависит от задачи и структуры данных....
24. capitan 1631 01.10.19 18:06 Сейчас в теме
Я бы для начала вынес подзапрос из условия во временную таблицу.
26. azazana 63 12.10.19 19:28 Сейчас в теме
Я попробовала. Результат 34 секунды. То же самое + индексирование в запросе по полю сотрудник выигрыша в скорости так же не дало.
25. vasilev2015 1811 11.10.19 16:40 Сейчас в теме
Здравствуйте, Анна !

Как правило, вместо проверки включения лучше использовать внутреннее соединение.
27. azazana 63 12.10.19 20:09 Сейчас в теме
(25) Добрый вечер!
Спасибо, это хороший совет. Я проверила - результат выполнения 2 секунды запроса, индекс используется.
Посмотрела план запроса, он очень похож на тот который получился при использовании ИЛИ.
Оставьте свое сообщение

См. также

Еще один тест 1C: Postgres SQL 11 Pro Enterpise против MSSQL 14 под Windows 2012 Server R2 Промо

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

Проработав 15 лет с MSSQL в 2017 начал активно СУБД Postgres SQL. За два года успел поработать в 9 версии Postgres и в 10-ой. И пришел к выводу, что существуют реальное замедление работы баз после перехода на Postgres. Недавно вышла 11 версия Postgres Pro Enterpise, которая обещает почти 2-х кратное ускорение над 11 Pro Standart и 10-ой версией. Закупив лицензию Postgres 11 Pro Enterpise Это я и решил проверить на 1С.

1 стартмани

05.09.2019    11943    39    Indgo    106    

Простая параллельная обработка данных

Производительность и оптимизация (HighLoad) Прочие инструменты разработчика v8 v8::УФ 1cv8.cf Абонемент ($m)

Предлагаю способ быстрой параллельной обработки "неких" данных. Методика проста как дважды два. Предварительно подготовленная обработка запускается вручную в нескольких сеансах, и каждый сеанс занимается обработкой своей части (случайного диапазона). Может пригодиться для ускоренной обработки данных. К примеру, необходимо заполнить реквизит большого справочника, заполнение в один поток идёт долго, а сроки поджимают.

1 стартмани

10.02.2020    2392    1    Amadeus007    8    

Zabbix: Мониторинг рабочих процессов

Zabbix v8 1cv8.cf Абонемент ($m)

Мониторинг памяти, потребляемой рабочими процессами, средствами Zabbix. Создание пользовательских LLD правил с помощью One Script

1 стартмани

07.02.2020    3172    0    EShchavleva    6    

Транслятор запросов 1С в SQL

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

Инструмент для трансляции запросов платформы 1С в SQL, а также их диагностики.

10 стартмани

07.01.2020    9334    71    YPermitin    89    

Многопоточная обработка данных Промо

Производительность и оптимизация (HighLoad) Администрирование данных 1С v8 v8::УФ 1cv8.cf Абонемент ($m)

Конфигурация "Универсальные механизмы: пакеты данных". Набор инструментов для быстрой организации отказоустойчивой многопоточной обработки данных.

1 стартмани

23.11.2018    17020    50    _ASZ_    15    

Тест серверного оборудования на допустимое количество пользователей: как это использовать?

Администрирование СУБД Нагрузочное тестирование Сервера v8 1cv8.cf Абонемент ($m)

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

3 стартмани

17.12.2019    9117    10    sapervodichka    3    

Работа с базами данных 1С в SQL Server Management Studio (Расширение для SSMS)

Администрирование СУБД Производительность и оптимизация (HighLoad) Администрирование данных 1С Структура метаданных v8 Абонемент ($m)

Расширение позволяет просматривать связи объектов метаданных и таблиц БД, сгруппированные данные (по группам метаданных) об используемом дисковом пространстве и выполнять трансляцию SQL текста запроса в термины 1С. И бонусом - при наведении курсора мыши на таблицу или поле показывает назначение объекта в терминах 1С.

10 стартмани

27.11.2019    9206    36    akpaevj    46    

Мониторинг количества использованных программных лицензий, выданных выделенным сервером лицензирования

Zabbix v8 Абонемент ($m)

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

1 стартмани

22.11.2019    2920    2    Sloth    4    

Многопоточность. Универсальный «Менеджер потоков» (фреймворк) с отслеживанием зависимости объектов Промо

Практика программирования Математика и алгоритмы Универсальные функции Производительность и оптимизация (HighLoad) v8 1cv8.cf Россия Абонемент ($m)

Восстановление партий, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

26.05.2017    46131    15    DarkAn    86    

Быстрая реструктуризация базы данных

Производительность и оптимизация (HighLoad) Конфигурирование 1С v8 v8::УФ 1cv8.cf Россия Абонемент ($m)

Внешняя обработка для быстрой реструктуризации клиент-серверной базы данных. Способ ускорения реструктуризации - замена таблиц большого объема пустыми копиями перед проведением обновления БД и возврат к исходным таблицам после обновления с предварительной корректировкой их структуры. Полностью автоматизировано создание и выполнение всех требуемых скриптов SQL. Представлены версии обработки для обычных форм (1С:Предприятие 8.2 (8.2.19.130)) и управляемого приложения (1С:Предприятие 8.3 (8.3.9.1818)).

1 стартмани

05.11.2019    10998    40    dmitrydemenew    35    

Влияние БСП на производительность базы 1С с добавленными метаданными

Производительность и оптимизация (HighLoad) Адаптация типовых решений БСП (Библиотека стандартных подсистем) v8 УТ11 Абонемент ($m)

Повод для статьи — заметное снижение быстродействия при переводе учета с УТ 11.1 на 11.4 по «нашим» не стандартным метаданным (регламенты работы с массовым заполнением/проведением документов/регистров). Предварительно причину увидел во влиянии БСП. Была создана тестовая подсистема, быстродействие которой оцениваем в демобазе "Управление торговлей". С включенными и выключенными подписками БСП.

5 стартмани

04.11.2019    5746    2    VsHome    1    

Оптимизация прав ролей

Производительность и оптимизация (HighLoad) Роли и права v8::УФ v8::Права 1cv8.cf Россия Абонемент ($m)

Решение вопроса по неоптимальной настройке (избыточной) ролей, влияющей на производительность системы (потребление оперативной памяти). Алгоритм работы следующий: Выгрузка конфигурации в файлы - Обработка (изменение) файлов прав ролей - Загрузка измененных прав в конфигурацию. Проверено на платформе начиная с 8.3.12.

1 стартмани

09.09.2019    5963    5    toxilamer    11    

Версионирование объектов. Сжатие регистра "ВерсииОбъектов" Промо

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

Cжимаем версии объектов в регистре сведений "ВерсииОбъектов". Экономия занимаемого версиями объектов объема более 50% !!!

1 стартмани

30.12.2014    26295    24    ZLENKO    14    

Количество баз 1С как счетчик в Zabbix

Статистика базы данных Zabbix v8 1cv8.cf Абонемент ($m)

Делаем счётчик баз 1С в Zabbix.

1 стартмани

26.08.2019    4847    0    MrWonder    7    

Менеджер потоков: реализация "любой" задачи в потоках

Производительность и оптимизация (HighLoad) Инструментарий разработчика v8 Абонемент ($m)

Менеджер потоков – один их новых инструментов, который упрощает работу разработчиков. Насколько легко с ним, на конференции Infostart Event 2018 Education показал начальник отдела автоматизации 1С Иван Филимонов компании «Трансстроймеханизация».

01.08.2019    8342    0    DarkAn    6    

Бухгалтерия 3.0: медленная работа при загрузке данных контрагента по ИНН

Производительность и оптимизация (HighLoad) v8 v8::БУ БП3.0 Россия Абонемент ($m)

Поиск и исправление медленной загрузки контрагентов по ИНН в Бухгалтерия 3.0.71.75.

1 стартмани

10.07.2019    4004    3    MaxxiMiliSan    2    

Многопоточное тестирование производительности сервера 1С - СУБД Промо

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

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

1 стартмани

12.02.2013    80567    274    Fragster    179    

Ловец дедлоков СУБД

Производительность и оптимизация (HighLoad) Практика программирования Разработка v8 Россия Абонемент ($m)

Анализ простейшего дедлока СУБД в рабочей базе с использованием ЦУП (центра управления производительностью) и profiler MS SQL (Microsoft SQL Server). Эта статья будет полезна людям, изучающим вопросы оптимизации работы 1С, или тем, у кого возникают дедлоки в рабочей базе. UPD 09.07.2019 добавлено воспроизведение блокировки в случае установки управляемой блокировки перед чтением набора записей регистра сведений. UPD 10.07.2019 добавлена тестовая база с примером.

1 стартмани

08.07.2019    9769    2    azazana    79    

Мониторинг производительности и искусственный интеллект

Производительность и оптимизация (HighLoad) Практика программирования Разработка v8 Абонемент ($m)

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

1 стартмани

01.07.2019    8275    12    ivanov660    28    

Исправление долгого запуска БП 3.0.70 по причине большого количества платежек

Производительность и оптимизация (HighLoad) v8 v8::БУ БП3.0 Россия Абонемент ($m)

Обработка исправления долгого запуска БП 3.0.70 по причине большого количества платежек.

1 стартмани

18.04.2019    4299    7    a_v_u    1    

Многопоточный МикроСервер для файловой базы управляемого приложения 1c Промо

Сервисные утилиты Производительность и оптимизация (HighLoad) v8 1cv8.cf Абонемент ($m)

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

1 стартмани

19.12.2013    36515    46    Chai Nic    57    

Взаимодействие при редактировании одних и тех же данных [Расширение] УТ11

Производительность и оптимизация (HighLoad) v8 УТ11 Россия Абонемент ($m)

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

2 стартмани

14.04.2019    4553    2    noprogrammer    1    

Методика оптимизации программного кода 1С: проведение документов

Обработка документов Производительность и оптимизация (HighLoad) Инструментарий разработчика v8 v8::УФ Абонемент ($m)

Описание простого метода анализа производительности программного кода 1С, способов его оптимизации и оценки результатов в виде числовых показателей прироста производительности. Не требует сторонних программных продуктов, используются только типовые возможности платформ 1С. Методика проверена на линейке платформ начиная с 1С:Предприятие 8.2 (обычные формы, управляемые формы). Позволяет ускорить проведение проблемных документов в 3 и более раз, провести проверку корректности формирования проводок оптимизированным кодом и подтвердить результаты оптимизации реальными замерами производительности в режиме предприятия. К публикации приложены демонстрационные базы для режимов обычного и управляемого приложения на платформе 1С:Предприятие 8.3 (8.3.9.2033).

1 стартмани

19.03.2019    20954    16    dmitrydemenew    83    

Методика упрощения поддержки конфигураций. Переопределение и вызов обработчиков событий для УФ 1С 8.2-8.3 Промо

Производительность и оптимизация (HighLoad) Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

10.02.2013    52570    27    pbazeliuk    40    

Исправление ЦУП 2.1.2

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

Расширение для конфигурации Центр управления производительностью, редакция 2.1 (2.1.2.11), которое позволяет настроить регламентный мониторинг. Работает на платформе 1С:Предприятие 8.3 (8.3.13.1644).

2 стартмани

21.01.2019    4576    5    Neco    0    

Многопоточное тестирование производительности по методике APDEX (управляемые формы)

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

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

10 стартмани

09.01.2019    7210    11    capitan    24    

Решение проблемы быстродействия в ERP на рабочем примере

Производительность и оптимизация (HighLoad) v8 ERP2 Абонемент ($m)

Рассмотрим практический пример оптимизации, определим последовательность действий и воспользуемся специализированными инструментами.

3 стартмани

18.12.2018    14494    97    ivanov660    15    

Заметочки про 1С:Предприятие 8 (редакция 22.06.2012) Промо

Производительность и оптимизация (HighLoad) Практика программирования v8 1cv8.cf Россия Абонемент ($m)

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

1 стартмани

01.06.2010    175207    46    alexk-is    413    

Короткое нагрузочное тестирование PostgreSQL простыми запросами

Производительность и оптимизация (HighLoad) v8::УФ Абонемент ($m)

Короткое нагрузочное тестирование PostgreSQL простыми запросами. Прилагаются результаты в файлах pgBadger и perfmon.

1 стартмани

10.12.2018    9986    1    vasilev2015    22    

PostgreSQL для 1С 8.3: ускоряем резервное копирование и восстановление для отдельной базы очень большого размера

Производительность и оптимизация (HighLoad) Тестирование и исправление v8 1cv8.cf Россия Абонемент ($m)

В этой статье разберем оптимизацию работы с моментальным снимком отдельной базы 1С в кластере PostgreSQL средствами pg_dump.exe, pg_restore.exe, psql.exe в среде Windows Server 2008,2012,2016. А также разберем проблемные ситуации и неожиданные ограничения при работе 1С в связке с PostgreSQL. Для Linux все аналогично.

1 стартмани

03.12.2018    24720    36    vsasav    68    

Замер производительности. КА 2, УТ 11

Статистика базы данных Производительность и оптимизация (HighLoad) v8 УТ11 Абонемент ($m)

Отчет позволяет замерять на актуальных базах КА2 и УТ11 (в том числе на демо-базах) три параметра: время выборки данных, время передачи с клиента на сервер, время вывода данных. Тестировал на релизах КА 2.4.1.240 и УТ 11.4.5.32.

1 стартмани

22.11.2018    6391    5    FarFar    9    

И снова о скорости работы 1с 8.х + тест от Гилева (конфигурация TPС_1C_GILV_A) + как Выбрать сервер для 1С 8.х Промо

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

Предыстория: Есть в конторе, где я работаю, пара практически ОДИНАКОВЫХ по железу сервера... так вот заметили что на одном из них 1С 8.2 работает значительно быстрей что в Клиент-Серверном, что в файловом варианте... и что именно удивило так это что медленней работал сервер с большим количеством Оперативной памяти + RAID10 на SSD. Проводили много тестов на работу дисковой системы + различные тесты SQL - ВЫВОД: ничего непонятно где тормоза. И вот попала ко мне конфигурация 1С для оценки производительности 1С от Гилева http://infostart.ru/public/57204/ Подробности в Описании...

2 стартмани

13.08.2012    373553    183    sanfoto    2558    

Скорость работы 1С8 файловой по сети

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

Как я увеличил скорость работы файловой 1С8 по сети, изменив формат БД и размер страницы.

1 стартмани

01.11.2018    25106    15    Vlx    55    

Мониторинг показателей систем 1С 8.3 с помощью Zabbix

Внешние источники данных Zabbix v8 1cv8.cf Абонемент ($m)

Опишу свой опыт мониторинга наших систем 1С с помощью Zabbix и ту пользу, которую можно извлечить из этого.

1 стартмани

05.10.2018    33193    47    akimych    48    

Очистка и обновление индекса полнотекстового поиска (регламентное задание)

Производительность и оптимизация (HighLoad) v8 УНФ ДО БП3.0 УТ11 УХ ЗУП3.x Россия Абонемент ($m)

Обработка-регламентное задание позволяет в автоматическом режиме очищать и обновлять индекс полнотекстового поиска. Это необходимо делать для устранения проблем производительности на крупных базах. Подключаем в доп.обработках, задаем расписание выполнения на выходные и радуемся :)

2 стартмани

14.09.2018    18324    72    Kyrales    6    

Ускоряем расчет себестоимости УПП Промо

Производительность и оптимизация (HighLoad) Закрытие периода Закрытие периода v8 УПП1 Россия БУ УУ Абонемент ($m)

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

1 стартмани

05.03.2013    33735    21    Антон Ширяев    46    

Пересечение транзакций. Примеры

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

Рассматривается пересечение транзакций типа чтение-запись над одним элементом справочника при разных уровнях изоляции.

3 стартмани

03.09.2018    10074    0    vasilev2015    5    

Монитор блокировок пользователей

Производительность и оптимизация (HighLoad) v8 v8::blocking 1cv8.cf Россия Абонемент ($m)

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

1 стартмани

17.08.2018    6106    13    Re:аниматор    7    

Нагрузочное тестирование. В дни проведения ЧМ по футболу.

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

Нагрузочное тестирование. Подготовка к экзамену 1С:Эксперт. По мотивам доклада Виктора Богачева Инфостарт Event 2014. В дни проведения ЧМ по футболу.

1 стартмани

24.06.2018    9896    4    vasilev2015    9    

Автоформатирование кода Промо

Сервисные утилиты Обработки Чистка базы Справки Производительность и оптимизация (HighLoad) Инструментарий разработчика Практика программирования Универсальные обработки Решение задач на 1С:Специалист Математика и алгоритмы Администрирование данных 1С Разработка Тестирование и исправление Стартеры 1С v8 1cv8.cf Абонемент ($m)

Как часто приходится работать в режиме аврала, когда на оформление кода не хватает времени? И как лениво порой бывает, возвращаться к уже рабочему коду, что бы отформатировать его и привести в порядок. Данная обработка позволяет автоматически форматировать текст кода, в соответствии с настройками пользователя. Это позволит привести ваш код, как уже написанный так и будущий к единому оформлению.

1 стартмани

19.12.2012    38271    46    Sibars    57    

Ускорение отчета 'Контроль передвижений агентов (онлайн-карты)' от AgentPlus v1.5.2

Производительность и оптимизация (HighLoad) Рабочее место v8 1cv8.cf Украина Абонемент ($m)

У пользователей системы AgentPlus (Агент Плюс) отчет 'Контроль передвижений агентов (онлайн-карты)' v1.5.2 вызывает восторг и разочарование одновременно. Восторг – потому, что позволяет увидеть маршрут передвижения пользователя системы с привязкой к карте и дорогам, разочарование – от длительности построения отчета. Отчет по 45 точкам маршрута у меня строится больше минуты. Тестировалось на "Управление торговым Предприятием" 1.2.45.2.

1 стартмани

03.05.2018    5482    2    DiegoLidabo    0    

В «1С:ЗУП КОРП 3.1» тормоза (медленная работа) в журналах документов при использовании критериев отбора

Практика программирования Производительность и оптимизация (HighLoad) v8::Запросы ЗУП3.x Абонемент ($m)

Статья для тех, у кого: 1) используете RLS (ограничение доступа на уровне записей и полей), 2) много документов (более 100 тысяч в одном журнале), 3) используете «Журналы документов», 4) отборы в динамическом списке (по сотруднику). Скорее всего, Вы испытали на себе, как отбор происходит минутами (жутко тормозит) – тогда Вам сюда.

1 стартмани

04.01.2018    17792    0    Nykyanen    3    

Обработки  для проведения сценарного нагрузочного тестирования на примере конфигурации ЗУП версии 3.1.1.91

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

Обработки предназначены  для проведения сценарного нагрузочного тестирования, включая  пример описанного  сценария  с обработками (epf) -  ГлавныйРасчетчик, Кадровик, Расчетчик, Табельщик. Обработка будет полезна прежде всего тому, кто внедряет решение на базе конфигурации 1С "Зарплата и Управления персоналом" с необходимостью воспроизвести определенный сценарий с заданным количеством пользователей для расчета, а также возможность посмотреть, какая будет при этом нагрузка на ваше оборудование и скорость выполнения операций с учетом блокировок СУБД. Также это будет интересно тем, кто хочет прощупать, как на практике пользоваться конфигурацией "Тест Центр", входящий в состав пакета 1С:КИП.

2 стартмани

15.09.2017    8484    19    podorojnii_ayu    0    

Графический план выполнения запроса 1С

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

Просмотр графического отображения плана выполнения для запросов 1С. Для информационных баз на MS SQL Server.

1 стартмани

24.06.2017    14253    55    berezdetsky    28    

Перерасчет итогов регистра бухгалтерии в 1С

Производительность и оптимизация (HighLoad) v8::БУ БП1.6 Россия БУ Абонемент ($m)

Вариант перерасчета итогов частями (помесячно), если при типовом пересчете 1С зависает.

1 стартмани

30.05.2017    13538    17    MarcoPolo3    1    

График времени выполнения ключевой операции

Статистика базы данных Производительность и оптимизация (HighLoad) v8 v8::УФ Розница ДО ERP2 БП3.0 УТ11 ЗУП3.x Абонемент ($m)

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

1 стартмани

09.04.2017    12796    15    info1i    0    

Просмотр заблокированных строк в 1С

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

Ввиду своей деятельности, мне часто приходится рассказывать про различные аспекты оптимизации и в том числе про блокировки. Очень часто слушатели задают следующие вопросы: Как посмотреть в реальном времени, какие именно данные сейчас заблокированы? Как понять, что сейчас заблокировано в терминах 1С? Если гранулярность блокировки страница, как увидеть, какие данные в ней находятся? Раньше приходилось отвечать, что инструмента, который показывает все вышеописанное, сейчас просто нет. Но потом мне это надоело, и я решил сделать собственный инструмент, который позволяет ответить на все вышеописанные вопросы.

1 стартмани

25.10.2016    37822    670    Andreynikus    58    

Настройка PostgreSQL для работы в связке с 1С 8.х на платформе Windows Server 2012, объём БД более 200 Гб

Производительность и оптимизация (HighLoad) Администрирование данных 1С v8 Россия Абонемент ($m)

Настройка бесплатной СУБД PostgreSQL для работы в связке с 1С 8.х на платформе Windows Server 2012 х64. Объём БД более 380 Гб для мощного сервака. Конфигурация КА 1.1.108.2, 50 пользователей. Более 1 млн. проводок при закрытии месяца. Время закрытия месяца сравнимо с MSSQL и составляет в среднем 2 часа. Время отмены закрытия месяца - всего 10 минут! Ликвидированы зависания PostgreSQL. Всё за счет настроек файла postgesql.conf.

1 стартмани

11.10.2016    75251    64    vsasav    45    

Zabbix: Мониторинг состояния сервера 1С

Сервисные утилиты Администрирование данных 1С Внешние источники данных Zabbix v8 Абонемент ($m)

Скрещиваем мощную систему мониторинга Zabbix с 1С

1 стартмани

02.09.2016    44822    116    deevil    28    

Средство поиска "узких мест" при проведении документов

Производительность и оптимизация (HighLoad) Практика программирования v8 1cv8.cf Россия Абонемент ($m)

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

1 стартмани

31.05.2016    11056    4    ibs10    12