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

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

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

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

10
Реальный пример оптимизации запроса. Статья будет полезна людям, изучающим вопросы оптимизации запросов в 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 секунды.

Послесловие

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

10

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

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

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

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


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

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

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


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

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

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

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

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

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

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

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

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

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

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

ИЗ

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

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


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

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

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

См. также

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

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8::УФ v8::Права 1cv8.cf Россия Windows Абонемент ($m) Производительность и оптимизация (HighLoad) Роли и права

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

1 стартмани

09.09.2019    1897    2    toxilamer    11       

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

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

Проработав 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    3923    7    ogidni    84       

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

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

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

01.08.2019    4106    17    DarkAn    6       

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

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

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

1 стартмани

08.07.2019    6079    2    azazana    76       

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

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

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

1 стартмани

01.07.2019    3806    3    ivanov660    28       

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

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

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

2 стартмани

14.04.2019    1692    2    noprogrammer    0       

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

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

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

1 стартмани

19.03.2019    13880    13    dmitrydemenew    83       

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

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

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

2 стартмани

21.01.2019    2182    5    Neco    0       

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

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Производительность и оптимизация (HighLoad)

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

10 стартмани

09.01.2019    4040    8    capitan    24       

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

Инструменты и обработки Программист Конфигурация (md, cf) v8 ERP2 Абонемент ($m) Производительность и оптимизация (HighLoad)

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

3 стартмани

18.12.2018    7622    44    ivanov660    8       

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

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

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

1 стартмани

10.12.2018    6388    1    vasilev2015    22       

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

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

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

1 стартмани

03.12.2018    15697    30    vsasav    62       

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

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

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

1 стартмани

23.11.2018    10395    43    _ASZ_    14       

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

Отчеты и формы Системный администратор Программист Внешний отчет (ert,erf) v8 УТ11 Абонемент ($m) Статистика базы данных Производительность и оптимизация (HighLoad)

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

1 стартмани

22.11.2018    3721    5    FarFar    9       

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

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

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

1 стартмани

01.11.2018    17227    11    Vlx    55       

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

Инструменты и обработки Системный администратор Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Внешние источники данных Zabbix

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

1 стартмани

05.10.2018    20059    36    akimych    48       

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

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 УНФ ДО БП3.0 УТ11 УХ ЗУП3.x Россия Абонемент ($m) Производительность и оптимизация (HighLoad)

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

2 стартмани

14.09.2018    10822    53    Kyrales    3       

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

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

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

3 стартмани

03.09.2018    6870    vasilev2015    5       

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

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

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

1 стартмани

24.06.2018    7223    3    vasilev2015    9       

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

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

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

1 стартмани

03.05.2018    4158    4    DiegoLidabo    0       

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

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

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

1 стартмани

04.01.2018    14774    Nykyanen    3       

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

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

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

2 стартмани

15.09.2017    6873    14    podorojnii_ayu    0       

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

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

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

1 стартмани

24.06.2017    11385    51    berezdetsky    26       

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

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

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

1 стартмани

30.05.2017    11314    16    MarcoPolo3    1       

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

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

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

26.05.2017    38256    166    DarkAn    86       

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

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

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

1 стартмани

09.04.2017    10935    17    info1i    0       

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

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Производительность и оптимизация (HighLoad)

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

1 стартмани

25.10.2016    32545    602    Andreynikus    54       

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

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

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

1 стартмани

11.10.2016    59885    55    vsasav    40       

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

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Windows Абонемент ($m) Производительность и оптимизация (HighLoad) Практика программирования

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

1 стартмани

31.05.2016    9700    5    ibs10    12       

Просмотр структуры БД, парсинг запросов SQL 94

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Статистика базы данных Производительность и оптимизация (HighLoad)

Получение некоторых данных о БД и сеансе, просмотр внутренней структуры таблиц БД 1С в SQL, "перевод" запросов SQL в терминологию 1С. Чуть больше, чем "ПолучитьСтруктуруХраненияБазыДанных"; чуть удобнее, чем аналоги; чуть другая, чем КИП.

1 стартмани

26.02.2016    23693    221    Yashazz    15       

Парсер технологического журнала 1С 14

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

Простой, шустрый и легкий в использовании off-line парсер технологического журнала 1С.

10 стартмани

06.12.2015    17318    78    sarycheff    29       

Поиск в динамическом списке (по части строки): попытка оптимизации 14

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

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

1 стартмани

24.11.2015    16725    2    logarifm    5       

Фиксируем SPID для отслеживания в SQL Profiler 17

Инструменты и обработки Системный администратор Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Производительность и оптимизация (HighLoad)

Для разбора запросов бывает полезным использовать SQL Profiler. При настройке выборки событий предлагаю дополнительно наложить еще один фильтр по полю SPID.

1 стартмани

22.09.2015    13293    22    break    3       

1С:Бухгалтерия 3.0. Борьба за производительность 6

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

Программисты в шоке: закрытие месяца в БП 3.0. Как закрыть ноябрь 2014 года и успеть встретить новый год.

49 стартмани

01.06.2015    9367    pit201201    21       

Тест производительности 1С 5

Инструменты и обработки Системный администратор Внешняя обработка (ert,epf) v8 Windows Абонемент ($m) Производительность и оптимизация (HighLoad)

Глубоко убежден, что организациям с числом активных пользователей 1с большим чем 10, крайне необходимо уходить от файловых баз. И тут возникает дилемма: Какую СУБД выбрать? SQL или Postgre? Скуль хорош. Очень хорош. Практически "из коробки" он обеспечит превосходную производительность. Но стоит нереальных денег. Очень хорош... Но дорог... Очень дорог... С Постгри все сложнее. "Из коробки" мы получаем конструктор "очумелые ручки". Чтобы насладиться более-менее приемлемым результатом, придется попотеть. Зато "халява, сэр".

1 стартмани

22.04.2015    10912    14    smallbuk    22       

Сбор и анализ счетчиков производительности через 1С по шагам 8.3 95

Инструменты и обработки Системный администратор Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Производительность и оптимизация (HighLoad)

Для поиска узких мест в производительности сервера можно включить и настроить счетчики этой самой производительности «Performance Monitor». По умолчанию данные собираются и пишутся в файлы, но это не всегда удобно. Появилась задача, для которой более удобно собирать счетчики в базу данных MS SQL и позднее анализировать через 1С. Далее о том, как это настроить, и какая обработка получилась у меня.

1 стартмани

06.04.2015    30339    81    Silmariil    25       

Использование общих модулей "Длительные операции" из состава БСП или асинхронное выполнение серверных процедур без блокировки пользовательского интерфейса 124

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Практика программирования Производительность и оптимизация (HighLoad) Универсальные функции БСП (Библиотека стандартных подсистем)

В статье кратко описан способ использования процедур общих модулей "Длительные операции" из состава библиотеки стандартных подсистем (БСП). Статья будет полезна программистам и администраторам, работающих с объемными клиент-серверными базами, конфигурации которых включают в себя БСП. К длительным операциям можно отнести, например, такие процедуры как групповое проведение документов, формирование объемистых отчетов, работа с внешними источниками данных.

1 стартмани

17.03.2015    54945    163    Bassgood    15       

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

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Производительность и оптимизация (HighLoad)

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

1 стартмани

30.12.2014    24219    45    ZLENKO    14       

Обновление статистики MS SQL прямо из 1С 11

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Сервисные утилиты Статистика базы данных Производительность и оптимизация (HighLoad)

Обработка позволяет обновить статистику любого объекта: документа, справочника или регистра или конкретного индекса прямо из 1С

1 стартмани

26.10.2014    16438    47    kser87    7       

Как в 1С оптимизировать запрос – пример ускорения в 6 раз 53

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

Что Вы узнаете из этой статьи? • Одну из основных причин медленной работы запросов • Анализ возможных методов ускорения запросов • Эффективный способ ускорения запросов, в которых происходит обращение через «2 точки»

1 стартмани

23.10.2014    26451    13    Насипов Фарит    1       

Как ускорить 1С за 5 минут – Протокол Shared Memory 44

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

Что Вы узнаете из этой статьи? • Рассмотрены возможности ускорения «1С:Предприятие 8» в небольших организациях • Показана процедура включения протокола Общая память (Shared Memory) • Продемонстрирована диагностика использования Shared Memory

1 стартмани

23.10.2014    53700    21    Насипов Фарит    1