Имя: Пароль:
1C
Админ
PgSQL быстрее, чем MSSSQL
0 testov
 
20.08.13
18:48
Здравствуйте.

Хотелось бы разобраться "почему так". Дано:
1. Сервер с ESXi 5
2. Две виртуалки
2.1. CentOS с PgSql 9
2.2. Windows 2008R2 c MSSQL 2008R2 и сервер 1С:Предприятие 8.2.17.143
3. Некий отчет, которые выбирает данные.
4. Сервер, ОС, SQL все 64 битное.
5. Одинаковые характеристики машин.

При формирование отчета при работе с Pg выдает результат за время, чуть менее секунды. Если запускаю MSSQL, тот же отчет работает 15 секунд. В это время процессор загружен на 100% сервисом MSSQL. Так же идет потребление памяти, а после отчета постепенно падает.

Как заставить MSSQL работать хотя бы сравнимо с PgSQL (вопрос "зачем" оставим за рамками этой темы)?
1 testov
 
20.08.13
18:50
Все это тестируется на холодном запуске, т.е. вариант с кэшем отпадает.
2 Reaper_1c
 
20.08.13
18:52
(0) Это нормально, так и должно быть.
3 Fragster
 
модератор
20.08.13
18:54
(0) можешь протестить v8: Многопоточный тест производительности 1с ? очень интересны результаты на одинаковом железе разных СУБД
4 testov
 
20.08.13
18:57
(3) Сейчас сделаю
5 testov
 
20.08.13
18:58
(2) Тогда вопрос такой: почему это нормально, чем обусловлена такая разница во времени?
6 МихаилМ
 
20.08.13
19:01
какой сетевой  протокол обмена данными мс скл и сервера 1с ?
7 mistеr
 
20.08.13
19:03
Вероятно MSSQL выбирает не оптимальный план выполнения запроса.
Статистика в порядке?
8 Reaper_1c
 
20.08.13
19:07
(5) Разницей в архитектуре.
9 testov
 
20.08.13
19:07
(6) На данный момент TCP/IP. Предвижу вопрос: был оставлен ради честности сравнения, т.к. 1С с PG работает на том же уровне.
10 МихаилМ
 
20.08.13
19:12
сравните замеры производительности.
11 МихаилМ
 
20.08.13
19:12
(10)
возможно дело не в субд.
12 testov
 
20.08.13
19:13
(3) Сейчас тестируется, а пока был запущен тест Гилева и он показывает следующее: PG ~ 13, MSSQL ~ 24.
13 Fragster
 
модератор
20.08.13
19:15
(12) в настройке pgsql надо установить параметр max connections = 100 в бОльшее количество, так как тест использует > 100 потоков
14 testov
 
20.08.13
19:22
(7) Сейчас идет тестирование, после посмотрю.
15 floody
 
20.08.13
19:31
(13) я запускал ваш тест на своем железе, но после прохождения теста не понял, где смотреть результат
16 МихаилМ
 
20.08.13
19:34
(15)
про тест Fragster
есть отдельная ветка. давайте не будем создавать её дубль.
17 vde69
 
модератор
20.08.13
19:55
проблема в п.2

SQL требует специальных шаманских действий для виртуалок. про ПГ - не знаю.
18 testov
 
20.08.13
20:04
(17) А какие ритуалы вы порекомендуете для этих шаманских действий?
19 shuhard
 
20.08.13
20:28
(18) без указания конфигурации и текста запроса под отчета можно только камлать
20 Sammo
 
20.08.13
20:34
Насколько я помню - под виртуалки точили скуль 2012. 2008 может на виртуалке формировать неоптимальный план запроса
21 testov
 
20.08.13
20:41
(13) Готово. Тест на PG только останавливается на 4 потоке.
В каком виде нужно дать данные?

На вскидку цифры бОльшие показывает MSSQL. Раза в 2 для временных таблиц, для остального в районе 10% разница в большую сторону для MSSQL.
22 testov
 
20.08.13
20:44
(19) 1C:CRM 1.4, а сам запрос http://www.heypasteit.com/clip/0XQ5
23 Fragster
 
модератор
20.08.13
20:48
(22) запрос плохой. во первых - .ссылка не нужна, во вторых - ИЛИ - лучше заменить на объединение или внутреннее соединение с ВТ вида (Выбрать &П1, &П2 Объединить все Выбрать &П3, &П4)
24 Chai Nic
 
20.08.13
20:50
Бывает mssql выбирает неоптимальный план запроса, а бывает и постгрес... У каждого свои тараканы. Проблема в общем случае решается только одним способом - путем разделения сложного запроса на подзапросы с временными таблицами с индексированием ключевых полей. Тогда сервер будет вынужден прикрутить свою фантазию в смысле построения плана с nested loop по многомегабайтным таблицам..
25 Fragster
 
модератор
20.08.13
20:59
26 shuhard
 
20.08.13
21:15
(22) если сиквелу не зарезали память + не сделали ТиИ с индексацией/регламент, то такой запрос может и минуты на сиквеле отрабатывать
27 testov
 
21.08.13
00:27
(26) память отрезана, сделана реиндексация через ТиИ и регламент. Результат не поменялся.
28 angro
 
21.08.13
00:40
запрос походу неправильный видимо должно быть
И ((КонтактнаяИнформация.Тип.Ссылка = &Тип
                И КонтактнаяИнформация.Вид.Ссылка = &Вид)
            ИЛИ (КонтактнаяИнформация.Тип.Ссылка = &Тип2
                И КонтактнаяИнформация.Вид.Ссылка = &Вид2))
29 Reaper_1c
 
21.08.13
00:45
(28) Какая разница? Эти скобки, что есть, что нету - результат  один. А вот ".Ссылка" там явственный тормоз.
30 angro
 
21.08.13
01:05
(29) :) лучше медленно и правильно, чем быстро но фигню
31 Reaper_1c
 
21.08.13
01:08
Для справки.
A*B+Y*Z = (A*B)+(Y*Z)
32 testov
 
21.08.13
01:28
(29) Убрал "ссылки" и запрос стал мгновенно исполняться. Спасибо большое за путь истинный.
Т.е. получается, что PG оптимизирует этот запрос и идет по индексам, а MS этого не делает. Верно?
33 testov
 
21.08.13
01:31
Отдельное спасибо Fragster и Reaper_1c.
34 Reaper_1c
 
21.08.13
01:39
(32) Как PG обрабатывает такую ересь - не знаю. При работе с MS тупо строится соединение для каждого разыменования.
35 Sammo
 
21.08.13
04:55
(32) Обращение через точку приводит к тому, что мс скуль сделает соединение с таблицей.
Особоенно грустно поулчается, когда тип реквизита Все документы (например) и ты получаешь Реквизит.Дата
36 testov
 
22.08.13
21:58
(35) Спасибо большое за объяснение.
37 testov
 
22.08.13
22:03
Разработчик отчета говорит, что иногда, если не указывать "ссылку", то MSSql c конфигурацией 1C:CRM уходит в бесконечный цикл. Это ересь или есть "подводные камни"?
38 CepeLLlka
 
22.08.13
22:07
Парни.. извините что пишу тут не по теме..
Подскажите пожалуйста ответ на вопрос...
Что отвечает за порядок движений в документе по регистрам?
Кто решает какой регистр проводится первым, а какой вторым?
39 testov
 
22.08.13
22:08
Сегодня проводил тестирование разных вариантов работы 1С и в общем получается, что с PgSQL работает шустрее (на секунды, но быстрее): например при том же обновление конфигурации. Куда посоветуете копать: в сторону некорректной настройки MSSql или еще что-то?
40 Reaper_1c
 
22.08.13
22:08
(38) Внутренняя логика платформы.
41 CepeLLlka
 
22.08.13
22:10
(40)Блин.. я тут подредактировал немного один документ.. и логика изменилась у платформы.. стала наоборот сначала один регистр проводить, а потом второй.. а на этом оказалось завязана конфа.. замещаются там движения..
42 Hans
 
22.08.13
22:11
(41) попробуй в обработке проведения принудительно записывать движения.
43 Reaper_1c
 
22.08.13
22:13
(39) Не надо копать. Так и должно быть. Есть шанс, что MS SQL 2012 в связке с 8.3 продемонстрирует некий прирост, но это надо пробовать.
44 testov
 
22.08.13
22:24
(43) Хорошо, а чем обусловлено, что на синтетических тестах от Гилева и Fragster все-таки результаты выше у MS, чем у PG?
45 Reaper_1c
 
22.08.13
22:31
(44) Наверное тем, что тестирование не учитывает всех факторов, из которых складывается производительность реальной системы.
46 testov
 
22.08.13
22:33
(45) Ну т.е. их "синтетикой". Понятно, спасибо большое.
47 Reaper_1c
 
22.08.13
22:44
(46) Да не за что. Я тест Гилева воспринимаю только как инструмент для проверки того, как влияют изменения настроек/железа в рамках связки 1С+СУБД. Т.е. для сравнения результатов до и после. Сравнение разных систем этим тестом, как мне кажется, не является показательным, т.к. производительность реальной системы корректнее измерять временем исполнения пользовательских сценариев, а не временем исполнения каких-то конструкций языка. Тест Fragster'а не пробовал.
48 mistеr
 
23.08.13
08:38
(39) >на секунды
>при том же обновление конфигурации

Забейте.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.