Имя: Пароль:
1C
1С v8
Неожиданная скорость в SQL
,
0 MrStomak
 
02.04.12
23:41
Как правило, в монопольном режиме файловая база работает быстрее, чем в клиент-серверном режиме на SQL.
Тест по проведению документов от Гилёва, например, это демонстрирует.
Но тут внезапно обнаружилось странное.
Есть один сложный отчет, в нём много разных запросов, вложенных запросов, имеются запросы в цикле и так далее. Размер базы 2Гб.
В файловом режиме он выполняется 139 минут, в клиент-серверном(на той же машине) - 1 мин 40 сек.
Тут можно, конечно, заметить, что в файловом режиме процесс быстро упирается в возможности одного ядра, в то время как агент сервера использует все 4 - но такую драматическую разницу этим не объяснить.
Как такое может быть?
MSSQL 2008 R2
1 GROOVY
 
02.04.12
23:42
Может это объясняется тем что запросы в клиент-серверном варианте исполняются SQL сервером, а в файловом тупо перебором таблиц БД?
2 syktyk
 
02.04.12
23:47
(1)Вообще-то в обоих вариантах тупо перебираются таблицы, только выглядит по разному
3 zxcvb
 
02.04.12
23:47
Уволил бы... Сколько лет уже работаю, но так и не понимаю необходимость запросов в цикле.
Это же вообще... И не по теории, и само по себе криво. Есть же средства, даже встроенные, списком вынуть например...
4 zxcvb
 
02.04.12
23:48
(2) На винт не бросает.
5 GROOVY
 
02.04.12
23:49
(2) Ну как мы видим скуль это умнее делает :)
6 Лефмихалыч
 
02.04.12
23:50
(3) в крайне редких случаях бывает нужно. Например, если надо соединить две таблицы по иерархии, то варианта быстрее, чем построить временную таблицу с элементами, входящими в иерархию, запросами в цикле, нет. Но таких необходимостей лучше избегать
7 Armando
 
02.04.12
23:51
Пройдись отладчком по файловой базе. Выяви узкие места и думай.
А может там RLS или блокировки? Или железо разное?
И вообще, что можно 2 часа в 2Гб базе делать?
8 МихаилМ
 
02.04.12
23:51
сделайте замер производительности.
и поделитесь с нами результатом сравнения .
9 IamAlexy
 
02.04.12
23:52
(0) бгыыыыыыыыы

ага..

берем ПРОСТОЙ типический отчет "анализ субконто"  и внимательно курим как он формируется в файловой базе и в серверной...

в фейловой базе - может и часами фигачится
в серверной - секунды...


у меня из за типовой БП три клиента перешли на серверную базу причем количество юзверей у них было 2-5 :)
10 Лефмихалыч
 
02.04.12
23:52
(7) ждать взаимоблокировок?..
11 syktyk
 
02.04.12
23:53
Да, да! Профайлером надо.
12 vde69
 
02.04.12
23:53
если запрос в цикле - то SQL R2  оптимизирует план запроса и кеширует много чего...

сделай одним запросом разница будет в 2-3 раза
13 jsmith82
 
02.04.12
23:54
согласен, файловая зло
14 zxcvb
 
03.04.12
00:00
(13) Зачем же разработал такую кривулину, "Разработчик 1С v8 "?
15 zxcvb
 
03.04.12
00:02
(6) Список сортирни.
?
16 jsmith82
 
03.04.12
00:03
(14) какую???
17 zxcvb
 
03.04.12
00:07
(16) Такую. У тебя же в личке написанно, что ты разработчик 1С v8...
18 jsmith82
 
03.04.12
00:09
(17) ааа
не, меня на мисте все знают как лютого антагониста типовых
19 zxcvb
 
03.04.12
00:10
(18) Понимаю. Бывает поленишься или задачу не поймешь, и такую херню напишешь, что потом даже как-то стыдно признаваться, что твоя работа.
20 MrStomak
 
03.04.12
00:11
(13) Разработал это не я, но в данном случае имеется модуль на 4900 строк и очень-очень сложная структура получения данных. Это явный признак неверной проектировки БД - но тут в один запрос переделать невероятно трудно. Один маленький кусок тут я переделывал под один запрос, так он содержал около 15 временных таблиц, но через добавление нескольких измерений в регистрах он сократился до приемлемого вида.
21 jsmith82
 
03.04.12
00:11
(19) я с гамном в завязке щас, пейшу системы
22 jsmith82
 
03.04.12
00:11
я кстати недавно видел в бухии 2.0 запрос с ключевым словом в иерархии
23 zxcvb
 
03.04.12
00:15
(21) ???? ????? Шалом тогда! Привет пейсателям.
24 zxcvb
 
03.04.12
00:16
+(23) Зараза... У Стаса сайт иврит не понимает. Эти поляки - такие антисемиты! Хуже украинцев...
25 zxcvb
 
03.04.12
00:17
А Ромикс еще и Холокост отрицает. Рассадник прямо, махровщины. Закроют ведь. Надо исправляться!
26 Ardi
 
03.04.12
01:30
Я несколько баз - там запросы в цикле.
Так кроме этого - в запросах ещё и условия в регистрах остатков с помощью "Где " накладываются.

Так на SQL такой БыдлокодВКвадрате летает.
А на файловой в 30 раз медленней.
27 Ardi
 
03.04.12
01:30
+(26) Я несколько баз ВИДЕЛ
28 Ardi
 
03.04.12
01:44
Если "где" переписывал по нормальному, но цикл оставлял - на SQL прирост был копеечный.
Независимо от того, куда вы едете — это в гору и против ветра!