Имя: Пароль:
1C
1С v8
1C 8.2 SQL vs. 1C 8.2 файловый - тормоза в 10x
,
0 ВагонНеЗнаний
 
19.07.13
12:28
Привет 1эснеги! У меня к вам вопрос по производительности 1с, как сисадмина. Вот есть файловый вариант базы 3,3Гб (УТ 11.0). Она лежит на сервере с 20Гбайт ОЗУ, крутится это все на ESXi 5 на железном RAID1. В базе 10 пользователей. Ту же самую базу разворачиваю на чистой Server 2012 (т.е. нет тормозящей прослойки в виде гипервизора) с 24Гбайт ОЗУ, процом корка i7 980x в SQL варианте (SQL 2008R2 SP1, сервер предприятия 1С 64бит, на том же сервере, файл транзакций 100Мбайт, база оптимизирована в Maintenance Plan). База лежит физически (и файл транзакций тоже (хотя транзакции разносил на другой RAID - ничего не меняется в принципе)) на железном RAID-1, собранном на SSD (430 Мбайт/с чтение, 90 Мбайт/с запись), ОС лежит на другом железном RAID-1 (правда на SATA).
Отчет "Анализ доступности товаров" с фильтром по 1 товару в первой, файловой версии, выполняется за 1 сек, в SQL 6-8-10сек. Запускаю параллельно оснастку производительность, смотрю узкое горлышко по дисковой подсистеме, процу, памяти. Никаких средних длин очереди диска более 2х и т.д. не наблюдаю. Что за х..я спрашивается? Это что, нормально да?
1 ВагонНеЗнаний
 
19.07.13
12:29
Рабочих процессов в сервере довел до количества ядер проца, установил лимит в 6Гбайт в кластере.
2 skunk
 
19.07.13
12:33
это нормально ... скул один на один проигрывает файловой ... и начинает выигрывать когда увеличивается количество пользователей
3 ВагонНеЗнаний
 
19.07.13
12:35
Ну т.е. по-любому, SQL ведь быстрее не будет выполнять отчет, если в базе будет 10 зверьков? И что тут делать-то? Писать прямые запросы как в семерке (если такое возможно)?
4 skunk
 
19.07.13
12:36
(3)зависит от базы ... но скорее всего да ... 10 пользователей сфориуют отчет на скуле быстрее, чем в файловой
5 Живой Ископаемый
 
19.07.13
12:37
2(3) тебе говорят, что когда в файловой будет 10 зверьков, она будет строить отчет в 2 раза медленней чем СКЛ
6 Fragster
 
гуру
19.07.13
12:38
скуль выигрывает в параллельности.

запусти www.forum.mista.ru/topic.php?id=658180 увидишь, что максимальная скорость будет раз в 10 больше, чем скорость одного потока (т.е. условно 10 юзеров будут работать с той же скоростью, что и один).
на файловой при активной работе умрете быстро. уже 2 _активных_ пользователя вызывают проблемы.
7 Fragster
 
гуру
19.07.13
12:39
ну и у скуля кэш наполнится, статистика актуализируется - твой отчет во второй и дальнейшие разы будет выполняться бстрее
8 Fragster
 
гуру
19.07.13
12:39
9 vogenut
 
19.07.13
12:55
Оключи параллельность при выполнении запросов
10 ВагонНеЗнаний
 
19.07.13
12:59
(9) Max Degree of Parallelism?
11 Fragster
 
гуру
19.07.13
13:01
(10) да. =1 для 1са хорошо в 95% случаев
12 skunk
 
19.07.13
13:01
(10)неотключай
13 Fragster
 
гуру
19.07.13
13:01
причем на 2012 скульсервере как-то вообще сильно влияет
14 ВагонНеЗнаний
 
19.07.13
13:04
У меня сейчас 1 стоит. В комментах народ пишет, что скуль 2005 поживей ворочается. Еще: вот сейчас в файловой базе 14 зверьков, а отчет все равно, выполняется за 1 секунду. Практически мгновенно, и это при том, что дисковая подсистема гораздо медленнее рейдов на новом сервере.
15 skunk
 
19.07.13
13:07
(14)поставь 2005 и сравни
16 Живой Ископаемый
 
19.07.13
13:08
2(14) не интересно
17 andreymongol82
 
19.07.13
13:16
(14) А пусть эти 14 человек одновременно запустят отчет и какую-нить тяжелую операцию. Тогда разница почувствуется
18 Kreont
 
19.07.13
13:19
(0) да, так нормально.
Погугли разницу между файл.любыми базами и СЮЛ-ными любыми.1С тут ни при чем :)
+ обрати внимание на:
а) целостность/устойчивость
б) паралелность чтения/записи в обоих вариантах
19 Maxus43
 
19.07.13
13:29
Ну и никто не видит запрос, может он кривой, для скуля надо оптимизировать
20 ВагонНеЗнаний
 
19.07.13
13:49
(7) опыт показал, что угол прямоты пальца, нажимающего на кнопку сформировать отчет в 10 итерациях не повлиял на скорость получения данных.
(17) представим себе ситуация, что база пользуется в не очень активном режиме. Но позвонил клиент и хочет знать, сколько такого товара в остатке и менеджер, как ужаленный (т.е. за 1-2 сек), должен сказать вот столько-то...
(18) нет, ну я понимаю, что такое блокировка на уровне таблицы/строки таблицы и как это влияет на скорость проведения
Что-то мне подсказывает, наскоро руку сваянный отчет в 1эс плюс плюс (в 7.7) получит данные за 0,2 мсек...
21 acsent
 
19.07.13
13:51
6-10 секунд при первом запуске или при любом?
22 Fragster
 
гуру
19.07.13
13:52
(20).1 а сколько скуль памяти скушал?
(20).2 так это оно с отбором столько работает? походу запрос кривой
(20).3 запросы 1с8 вполне грамотно транслируются в скуль, в отличии от 7.7
23 ВагонНеЗнаний
 
19.07.13
13:55
(21) 8-10 сек при любом
(20) 1. ~4Гбайт
(20) 2. С отбором
24 Fragster
 
гуру
19.07.13
14:03
(23) текст запроса в студию
25 H A D G E H O G s
 
19.07.13
14:06
(23) Бред Питт какой-то. Не верю.
26 ВагонНеЗнаний
 
19.07.13
14:12
(24) стандартный отчет Анализ доступности товаров.
Вот его запрос:
ВЫБРАТЬ РАЗРЕШЕННЫЕ
   График.Номенклатура                        КАК Номенклатура,
   График.Характеристика                      КАК Характеристика,
   График.Склад                               КАК Склад,
   -МИНИМУМ(График.КоличествоКонечныйОстаток) КАК Количество

Поместить ВтРезервыПоГрафику

ИЗ
   РегистрНакопления.ГрафикДвиженияТоваров.ОстаткиИОбороты(
           {КОНЕЦПЕРИОДА(&ТекущаяДата, ДЕНЬ)},
           {КОНЕЦПЕРИОДА(&ОкончаниеПериода, ДЕНЬ)},
           День,
           ДвиженияИГраницыПериода,
           Склад.ВариантКонтроля = ЗНАЧЕНИЕ(Перечисление.ВариантыКонтроля.ОстаткиСУчетомГрафика)
           {(Номенклатура).* КАК Номенклатура,
           (Склад).* КАК Склад,
           (Характеристика).* КАК Характеристика}
   ) КАК График
ГДЕ
   ВЫБОР
           КОГДА График.Склад.ГраницаГрафикаДоступности >= &ТекущаяДата
               ТОГДА График.Период <= График.Склад.ГраницаГрафикаДоступности
           КОГДА График.Склад.СрокПоставки > 0
               ТОГДА График.Период <= ДОБАВИТЬКДАТЕ(&ТекущаяДата, ДЕНЬ, График.Склад.СрокПоставки)
           ИНАЧЕ ЛОЖЬ
       КОНЕЦ
   И График.КоличествоКонечныйОстаток < 0

СГРУППИРОВАТЬ ПО
   График.Номенклатура,
   График.Характеристика,
   График.Склад
   
ИНДЕКСИРОВАТЬ ПО
   Номенклатура,
   Характеристика,
   Склад
;
////////////////////////////////////////////////////////////////////////////////
// Построение отчета
//
ВЫБРАТЬ РАЗРЕШЕННЫЕ
   СвободныеОстатки.Номенклатура    КАК Номенклатура,
   СвободныеОстатки.Характеристика  КАК Характеристика,
   СвободныеОстатки.Склад           КАК Склад,
   СвободныеОстатки.ВНаличииОстаток КАК ВНаличии,
   ВЫБОР
       КОГДА СвободныеОстатки.Склад.ВариантКонтроля = ЗНАЧЕНИЕ(Перечисление.ВариантыКонтроля.ОстаткиСУчетомРезерва) ТОГДА
           СвободныеОстатки.ВРезервеОстаток
       КОГДА СвободныеОстатки.Склад.ВариантКонтроля = ЗНАЧЕНИЕ(Перечисление.ВариантыКонтроля.ОстаткиСУчетомГрафика) ТОГДА
           ЕСТЬNULL(РезервыПоГрафику.Количество, 0)
       ИНАЧЕ 0
   КОНЕЦ                            КАК Резерв,
   СвободныеОстатки.ВНаличииОстаток
    - ВЫБОР
       КОГДА СвободныеОстатки.Склад.ВариантКонтроля = ЗНАЧЕНИЕ(Перечисление.ВариантыКонтроля.ОстаткиСУчетомРезерва) ТОГДА
           СвободныеОстатки.ВРезервеОстаток
       КОГДА СвободныеОстатки.Склад.ВариантКонтроля = ЗНАЧЕНИЕ(Перечисление.ВариантыКонтроля.ОстаткиСУчетомГрафика) ТОГДА
           ЕСТЬNULL(РезервыПоГрафику.Количество, 0)
       ИНАЧЕ 0
   КОНЕЦ                            КАК Свободно
ИЗ
   РегистрНакопления.СвободныеОстатки.Остатки(,
           {Номенклатура.*  КАК Номенклатура,
           Характеристика.* КАК Характеристика,
           Склад.*          КАК Склад}) КАК СвободныеОстатки

       ЛЕВОЕ СОЕДИНЕНИЕ ВтРезервыПоГрафику КАК РезервыПоГрафику
       ПО СвободныеОстатки.Номенклатура      = РезервыПоГрафику.Номенклатура
           И СвободныеОстатки.Характеристика = РезервыПоГрафику.Характеристика
           И СвободныеОстатки.Склад          = РезервыПоГрафику.Склад
           И (СвободныеОстатки.Склад.ВариантКонтроля = ЗНАЧЕНИЕ(Перечисление.ВариантыКонтроля.ОстаткиСУчетомГрафика))
ГДЕ
   СвободныеОстатки.ВНаличииОстаток <> 0
   ИЛИ ВЫБОР
           КОГДА СвободныеОстатки.Склад.ВариантКонтроля = ЗНАЧЕНИЕ(Перечисление.ВариантыКонтроля.ОстаткиСУчетомРезерва) ТОГДА
               СвободныеОстатки.ВРезервеОстаток
           КОГДА СвободныеОстатки.Склад.ВариантКонтроля = ЗНАЧЕНИЕ(Перечисление.ВариантыКонтроля.ОстаткиСУчетомГрафика) ТОГДА
               ЕСТЬNULL(РезервыПоГрафику.Количество, 0)
           ИНАЧЕ 0
       КОНЕЦ  <>  0
27 Fragster
 
гуру
19.07.13
14:13
а итоги рассчитаны?
28 Fragster
 
гуру
19.07.13
14:15
вот это для начала перенести в формирование ВТ:

СвободныеОстатки.Склад.ВариантКонтроля = ЗНАЧЕНИЕ(Перечисление.ВариантыКонтроля.ОстаткиСУчетомГрафика)
29 Fragster
 
гуру
19.07.13
14:16
вот это:    ВЫБОР
           КОГДА График.Склад.ГраницаГрафикаДоступности >= &ТекущаяДата
               ТОГДА График.Период <= График.Склад.ГраницаГрафикаДоступности
           КОГДА График.Склад.СрокПоставки > 0
               ТОГДА График.Период <= ДОБАВИТЬКДАТЕ(&ТекущаяДата, ДЕНЬ, График.Склад.СрокПоставки)
           ИНАЧЕ ЛОЖЬ
       КОНЕЦ

в параметры виртуальной таблицы
30 Fragster
 
гуру
19.07.13
14:17
а, не. не перенести это, если только руками не формировать таблицу...
31 ВагонНеЗнаний
 
19.07.13
14:18
господа, нужно уходить, вечером проведу тестирование (8) на старом файловом сервере в сравнение с новым.
32 ВагонНеЗнаний
 
19.07.13
14:18
спасибо!
33 КонецЦикла
 
19.07.13
14:19
Епать, SSD-диски, 20 Гиг ОЗУ при смешном объеме базы и 10 калеках.
Что дальше-то будет?
34 Fragster
 
гуру
19.07.13
14:19
(31) он пока в файловом варианте не работает, времени нету запилить фичу
35 hhhh
 
19.07.13
14:31
(34) в файловом тоже кстати во второй раз запрос выполняется раз в 5 быстрее, чем в первый.
36 fisher
 
19.07.13
14:48
Господа, какой нафиг, "выигрыш SQL в параллельности"? Не, это само собой, но скорость формирования отчетности обычно при переходе с файловой на скульную возрастает! А такая фигня как в (0) - абсолютно ненормальна.
ЗЫ. Может, это конечно конкретный прикол с этим отчетом на этих настройках. Я бы попробовал и другие отчеты тоже, в т.ч. более ресурсоемкие. Которые и на файловой не одну секунду формируются.
37 Fragster
 
гуру
19.07.13
14:54
здесь важно (27). ну и на файловой может быть выключен РЛС, а на скулевой - включен...
38 Reaper_1c
 
19.07.13
14:54
(0) Да, нормально.
(1) А вот это ты зря.
(36) Не надо так кричать о своих заблуждениях. Поработайте хотя бы сутки.
39 fisher
 
19.07.13
18:47
(38) Ну, сутками я уже давно не работаю.
И предпочитаю остаться в своей реальности, где переход на промышленный сервер БД не дает десятикратного замедления на обычной выборке.
40 Defender aka LINN
 
19.07.13
19:24
(36) Запусти сотню юзеров в файловую.
41 banco
 
19.07.13
19:39
(1) если сервер 1С 64 битный, то рабочий процесс оставь 1. в клиент серверном варианте отчет в ут 11 формируется в фоновом задании, если 1 процесс то результат выполнения фонового задания вернется быстрее.
42 Grobik
 
19.07.13
19:42
С темы прочитал только 20 гигабайт. 20 Не является степью двойки. И не является степенью двойки умноженной на число каналов. Вывезите на карьер ИТ директора.
43 Либерал
 
19.07.13
19:42
(0) а еще тупо поставь на сервере режим энергосбережения на мкс.производительность вместо сбалансированного
44 КонецЦикла
 
19.07.13
19:43
(43) + и перестань смотреть порнуху на серваке
45 Fragster
 
гуру
19.07.13
19:44
(42) 20 - это там, где файловая, где серверная - 24
46 Grobik
 
19.07.13
19:45
Заставь админа или началька ИТ почитать Гилева.
47 Grobik
 
19.07.13
19:46
Вроде все просто, а много вопросов по производительности скуля решается.
48 vde69
 
19.07.13
20:03
сделай на скульной базе 10 отчетов, потом сделай обновление статистики и будешь удивлен на сколько скуль ускорится...
49 Reaper_1c
 
19.07.13
20:07
(39) тебе результат нужен, или свои предпочтения отстоять?
50 Demiurg
 
19.07.13
20:11
51 fisher
 
19.07.13
21:57
(49) Мне тут ничего не нужно. "Мне за державу обидно". Даже у того же Гилева упоминается, что при нормальных раскладах сиквел примерно в ДВА раза медленнее. На операциях ЗАПИСИ (тот же нагрузочный тест Гилева, тестирующий запись регистров на сервере). И это соответствует действительности. Общеизвестно, что монопольное перепроведение на файловой значительно быстрее. Но речь не о записи. В реальной жизни я несколько раз на личном опыте наблюдал как скорость ВЫБОРКИ данных УВЕЛИЧИВАЛАСЬ при переходе на клиент-сервер. А тут замедление в ДЕСЯТЬ раз. Ты говоришь, что это нормально. Я говорю, что нет.
52 Demiurg
 
19.07.13
22:06
(51) если более точно, скуль примерно в 3 два раза больше выполняет различных функциональных и сервисных вещей во время записи: функции обеспечения целостности данных, контроль безопасности, возможность восстановления после сбоя, обеспечение коллективной работы...

(0) если честно, нет уверенности что отчет строящийся 10 секунд - это трагедия

какой бы вы бюджет потратили на устранение этой КОНКРЕТНОЙ проблемы? думаю это и будет ответ )
53 shuhard
 
19.07.13
22:16
(51)[В реальной жизни я несколько раз на личном опыте наблюдал как скорость ВЫБОРКИ данных УВЕЛИЧИВАЛАСЬ при переходе на клиент-сервер]
легко, если речь о переходе с файл-северной на клиент-серверную(за счет медленного транспорта данных), для маленьких баз на локальном диске не характерно
2 + 2 = 3.9999999999999999999999999999999...