|
Кратная разница производительности SQL сервера. | ☑ | ||
---|---|---|---|---|
0
Skom2
20.11.23
✎
08:12
|
Имеем два виртуальных сервера. серверы полные близнецы.
На одном сервере тяжелый тестовый запрос выполняется 4,5 сек. На втором 0,6 сек. Помогите найти причину. Версии серверов: 15.0.2093.5 (этот медленный), 15.0.2101.7 (этот шустрее) Сначала грешил на разные сборки. На тестовом отдельном компьютере проверил эту гипотезу: ставил 3 разные версии с постепенным увеличением версии СКЛ сервера до 15.0.2101.7. На всех сборках тестовый запрос показывал одно и то же время. Сегодня повторно прогонял запросы на проблемных серверах и третьем контрольном, с предварительным обновлением статистики на всех БД. результат тот же. Было замечено, что на проблемном и быстром сервере скорость дисковой подсистемы различается. чтение 540 МБ/с против 380. Администраторы поменяли виртуалки в кластере местами и теперь на проблемном серваке чтение составляет 540 Мб/с, а на втором 380. Однако, это повиляло на скорость выполнения запросов примерно на 10 мсек. Оказалось, что запрос пожирает в большей степени ЦПУ, нежели диск. Проверил настройки СКЛ серверов запросом select * from sys.configurations Настройки одинаковы. Пока больше не знаю, куда уже и смотреть |
|||
1
Волшебник
20.11.23
✎
08:13
|
замените сервер прода быстрым, а медленный погасите
|
|||
2
Skom2
20.11.23
✎
08:16
|
(1) у нас есть второй сервер прода, на котором также медленно, по сравнению с тестом.
Хочется понять причину. |
|||
3
Skom2
20.11.23
✎
08:18
|
Забыл уточнить. При замерах времени я использовал время выполнения запроса на стороне СКЛ, т.е. в замерах исключено влияния сервера 1С предприятия на общую картину
|
|||
4
Chai Nic
20.11.23
✎
08:25
|
Смотрите планы запросов. Есть подозрение, что на одном сервере выбирается неоптимальные методы например из-за неактуальной статистики.
|
|||
5
Skom2
20.11.23
✎
08:26
|
(4) статистика обновлена перед контрольным замером.
Планы запросов одинаковы до неприличия :-) |
|||
6
Chai Nic
20.11.23
✎
08:33
|
(5) То есть планы одинаковые, а временные характеристики исполнения запросов разные? Можешь сюда кинуть фактический план с таймингами?
|
|||
7
Skom2
20.11.23
✎
08:46
|
(6) в xml план?
|
|||
8
Chai Nic
20.11.23
✎
08:59
|
(7) Хотя бы. Чтобы было на что посмотреть, а не тупо фантазировать.
|
|||
9
Chai Nic
20.11.23
✎
08:59
|
+(8) Только именно фактический, а не прогнозный план
|
|||
10
Skom2
20.11.23
✎
09:08
|
(9) из хранилища запросов сейчас выдерну.
|
|||
11
Lama12
20.11.23
✎
09:08
|
(0)У меня такое было из-за распараллеливания выполнения запросов. На проде было выключено согласно рекомендациям. На тесте было включено "из коробки". Включил на проде, подобрал стоимость распараллеливания.
|
|||
12
Skom2
20.11.23
✎
09:13
|
(11) параллелиризм выключен на всех серваках
|
|||
13
Волшебник
20.11.23
✎
09:18
|
(2) Сделайте полный бэкап быстрого сервера и разверните его на вторую машину. Клонируйте скорость!
|
|||
16
Xapac
20.11.23
✎
09:24
|
(5) Нам то покажите планы.
|
|||
17
Dzenn
20.11.23
✎
09:26
|
Возможно, в новой версии добавили какой-то фикс, который в вашем случае сработал и оказал влияние на производительность. В принципе, версии же именно для этого и делают — для устранения старых ошибок и добавления новых. Моя рекомендация — почитайте "новое в версии", возможно, именно оно оказало влияние.
|
|||
18
Garykom
20.11.23
✎
10:01
|
||||
19
Garykom
20.11.23
✎
10:03
|
надеюсь у вас одинаковая ось на обоих?
|
|||
20
rphosts
20.11.23
✎
10:10
|
(0) и настройки совпадают и базы околоидентичны и статистика свежая и т.п.?
|
|||
21
Skom2
20.11.23
✎
10:12
|
(16) пока небольшой баг нашелся.
восстановил копию базы с прода на тесте. теперь показывает медленное выполнение запросов :-) Сейчас пытаюсь найти разницу между базами. |
|||
22
Skom2
20.11.23
✎
10:12
|
(19) да.
|
|||
23
Skom2
20.11.23
✎
10:13
|
(20) как оказалось, какие-то различия есть. именно в БД.
|
|||
24
Skom2
20.11.23
✎
12:36
|
Запрос 1С
ВЫБРАТЬ РАЗЛИЧНЫЕ ВТ_ДанныеДляПодбораОплат.ВалютаВзаиморасчетов КАК Валюта, ВТ_ДанныеДляПодбораОплат.КорСчет КАК Счет, ВТ_ДанныеДляПодбораОплат.КорСубконто1 КАК Контрагент, ВТ_ДанныеДляПодбораОплат.КорСубконто2 КАК ДоговорКонтрагента, ВТ_ДанныеДляПодбораОплат.КорСубконто3 КАК ДокументРасчетов ПОМЕСТИТЬ ВТ_ДанныеДляПодбораОплат ИЗ &ИсходнаяТаблица КАК ВТ_ДанныеДляПодбораОплат ГДЕ ВТ_ДанныеДляПодбораОплат.СуммаБУ < 0 И ВТ_ДанныеДляПодбораОплат.СуммаВзаиморасчетов < 0 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ 1 КАК ВариантОстатка, ХозрасчетныйОстатки.Счет КАК Счет, ХозрасчетныйОстатки.Подразделение КАК Подразделение, ХозрасчетныйОстатки.Субконто1 КАК Контрагент, ХозрасчетныйОстатки.Субконто2 КАК ДоговорКонтрагента, ХозрасчетныйОстатки.Субконто3 КАК ДокументРасчетов, ХозрасчетныйОстатки.Валюта КАК Валюта, 1 ПОМЕСТИТЬ ВТ_ОстаткиВзаиморасчетов ИЗ РегистрБухгалтерии.Хозрасчетный.Остатки( &ДатаКорректировки, Счет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыСПокупателямиВал)), , Организация = &Организация И (Субконто1, Субконто2, Валюта) В (ВЫБРАТЬ А.Контрагент, А.ДоговорКонтрагента, А.Валюта ИЗ ВТ_ДанныеДляПодбораОплат КАК А)) КАК ХозрасчетныйОстатки |
|||
25
Skom2
20.11.23
✎
12:36
|
куда план запроса выложить? на какой ресурс?
|
|||
26
rphosts
20.11.23
✎
12:43
|
(23) перетащи базу на другой сервак и сравни результат ещё раз но на идентичных базах
|
|||
27
lodger
20.11.23
✎
12:52
|
||||
28
Skom2
20.11.23
✎
12:56
|
Ок. Завтра вернусь к этому вопросу. У меня раб.день закончился. Пора убегать
|
|||
29
Skom2
20.11.23
✎
12:57
|
(27) спасибо
|
|||
30
Skom2
20.11.23
✎
13:01
|
Обнаружилось следующее:
если указать параметры виртуальной таблицы через временную таблицу (как в (24)), то план запроса различается, если убрать ВТ и указать параметры напрямую, через параметры запроса (там в данных ТЗ с одной строкой) То план запроса совпадает. Это утренняя копия базы и пятничная на одном и том же сервере. Уже удалось понять, что разница не между серверами, а между копиями БД разных дней. DBCC freeproccache не помогает |
|||
31
leshikkam
20.11.23
✎
13:02
|
(29) добавь в первой ВТ индекс по самому селективному полю.
ДоговорКонтрагента |
|||
32
Chai Nic
20.11.23
✎
14:29
|
А кстати, разве договор не определяет однозначно и контрагента и валюту? Может оставить отбор по одному полю вообще?
|
|||
33
Skom2
20.11.23
✎
15:24
|
(32) там субконто же.
(31) в ВТ всего одна строка |
|||
34
Chai Nic
20.11.23
✎
15:38
|
(33) И что? Если одно субконто дает 100% селективность, зачем отбирать и по остальным тоже?
|
|||
35
Skom2
20.11.23
✎
18:00
|
(34) не помню, как там индексы на ВТ указаны.
Оба надо указывать или они по отдельности. Завтра в базе гляну. |
|||
36
Skom2
21.11.23
✎
10:47
|
(34) Состав индекса по таблицам итогов по счетам так, устроен таким образом, что для попадания в индекс необходимо указать все предшествующие субконто.
|
|||
37
Chai Nic
21.11.23
✎
10:49
|
(36) И что, попадает? Дает какой-то эффект в плане быстродействия? Пробовали так и эдак, смотрели планы запросов?
|
|||
38
Skom2
21.11.23
✎
10:55
|
(37) когда миллионы записей и обращение к виртуальным таблицам в модуле проведения, то прирост скорости существенный на 50-100 тысячах документов.
|
|||
39
Skom2
21.11.23
✎
11:00
|
(37) кратко, о попадании в индекс.
Вот часть неоптимального запроса |ИЗ | РегистрБухгалтерии.Хозрасчетный.Остатки( | &ДатаКорректировки, | Счет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыСПокупателямиВал)), //++Оптимизация попадания в индекс | &ВидыСубконтоСчета62, //++Оптимизация попадания в индекс | Организация = &Организация | И (Субконто1, Субконто2, Валюта) В | (ВЫБРАТЬ | А.Контрагент, | А.ДоговорКонтрагента, | А.Валюта | ИЗ | ВТ_ДанныеДляПодбораОплат КАК А)) КАК ХозрасчетныйОстатки После добавления фильтра на виды субконто запрос вместо 4-х секунд стал выполняться за 0,5 секунды. |
|||
40
Chai Nic
21.11.23
✎
12:53
|
(39) Какая связь между отбором по видам субконто и фильтром по всем субконто сразу? Одно может быть и без другого.
|
|||
41
Skom2
21.11.23
✎
19:10
|
(40) Я не виноват, так индекс устроен.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |