|
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
|
(15)(21) перемещаемся в v8: Многопоточный тест производительности 1с
|
|||
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) >на секунды
>при том же обновление конфигурации Забейте. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |