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

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


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

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

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


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

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

а во втором
ГДЕ A ИЛИ B И С И D
судя структуре регистра, чтобы индекс был покрывающим нужно добавить еще условие по полю "план" и "месяц", также индекс не используется, если используется "НЕ" в условиях запроса.
mivari; azazana; NN2P; MVK80; +4 Ответить
6. json 2726 15.09.19 00:24 Сейчас в теме
(5) да, верное замечание.
Первый запрос в статье не эквивалентен второму по результату.
Не хватает пары скобок, группирующих условия по полю "ГрафикРаботы"
7. karpik666 2918 15.09.19 00:28 Сейчас в теме
(6) это же "гениальная" рекомендация, "если хотите чтобы работало быстрее, то переписывайте запрос на неправильный"
8. tormozit 6016 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 385 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 173 17.09.19 06:49 Сейчас в теме
(0) Крут тот, кто понимает что ему надо и как оно работает.
Все зависит от задачи и структуры данных....
24. capitan 1745 01.10.19 18:06 Сейчас в теме
Я бы для начала вынес подзапрос из условия во временную таблицу.
26. azazana 63 12.10.19 19:28 Сейчас в теме
Я попробовала. Результат 34 секунды. То же самое + индексирование в запросе по полю сотрудник выигрыша в скорости так же не дало.
25. vasilev2015 1914 11.10.19 16:40 Сейчас в теме
Здравствуйте, Анна !

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

См. также

Еще один тест 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    15024    Indgo    107    

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

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

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

1 стартмани

07.02.2020    4627    EShchavleva    6    

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

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

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

3 стартмани

17.12.2019    11324    sapervodichka    3    

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

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

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

01.08.2019    9526    DarkAn    6    

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

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

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

26.05.2017    49070    DarkAn    86    

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

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

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

1 стартмани

08.07.2019    11083    azazana    79    

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

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

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

1 стартмани

01.07.2019    9253    ivanov660    28    

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

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

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

1 стартмани

10.12.2018    10853    vasilev2015    22    

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

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

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

1 стартмани

01.06.2010    179757    alexk-is    413    

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    28093    vsasav    69    

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

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

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

1 стартмани

01.11.2018    28052    Vlx    55    

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

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

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

3 стартмани

03.09.2018    10865    vasilev2015    5    

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

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

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

1 стартмани

24.06.2018    10557    vasilev2015    9    

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

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

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

1 стартмани

04.01.2018    18830    Nykyanen    3    

1С:Предприятие 8.2. Управляемая Форма. Меняем иконку рабочего стола.

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

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

1 стартмани

28.09.2012    29035    ghostaz    39