Имя: Пароль:
1C
1С v8
Бешеные тормоза после переноса на MS SQL
,
0 Альбатрос
 
11.05.15
10:36
После переноса переписанной файловой базы УТ 10.3 на MS SQL наблюдается лютые тормоза при работе с ней. Пользователей немного, штук 15 одновременной работы.При проведении ОРП с ТЧ в 226 строк система задумывается на 2(!) минуты, при чем 97% времени на строчку:
УправлениеЗапасамиПартионныйУчет.ДвижениеПартийТоваров(Ссылка, Движения.СписанныеТовары.Выгрузить()); Ну и формирование всяких отчетов стало занимать намного больше времени.
На этом же сервере крутится еще 4 базы, с ними таких проблем нет. Настройки БД у всех одинаковые. Вроде и гуглил, и статейки всякие читал - причину найти не могу. Спасайте!

Вводные:
8-ядерный Xeon CPU E5-2407
32Гб оперативной памяти
SCSI винт (на котором базы)
База УТ 10.3 размером в почти 9 Гб
Платформа 1С:Предприятие 8.2 (8.2.19.90)
Сервер 1с предприятия находится на другом компе
Если нужна еще какая-нибудь информация - скажите.

Насоветуйте чего-нибудь.
38 Альбатрос
 
14.05.15
05:22
Max degree of parallelism (DOP) значение 1
У меня такая проблема, при добавлении строчки -debug у меня перестает запускаться агент на сервере.

Вот такая ошибка, это мне админ прислал:

Имя журнала:   System
Подача:        Microsoft-Windows-DistributedCOM
Дата:          14.05.2015 8:03:56
Код события:   10016
Категория задачи:Отсутствует
Уровень:       Ошибка
Ключевые слова:Классический
Пользователь:  1CSERVER\USR1CV82
Компьютер:     1CSERVER.kom-kastor.local
Описание:
Параметры разрешений для конкретного приложения не дают разрешения Локальный Активация для приложения COM-сервера с CLSID
{BA126AD1-2166-11D1-B1D0-00805FC1270E}
пользователю 1CSERVER\USR1CV82 с SID (S-1-5-21-4102014034-2086728852-1080897402-1002) и адресом LocalHost (с использованием LRPC). Это разрешение безопасности можно изменить с помощью служебной программы управления службами компонентов.
Xml события:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">;
  <System>
    <Provider Name="Microsoft-Windows-DistributedCOM" Guid="{1B562E86-B7AA-4131-BADC-B6F3A001407E}" EventSourceName="DCOM" />
    <EventID Qualifiers="49152">10016</EventID>
    <Version>0</Version>
    <Level>2</Level>
    <Task>0</Task>
    <Opcode>0</Opcode>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2015-05-14T01:03:56.000Z" />
    <EventRecordID>792819</EventRecordID>
    <Correlation />
    <Execution ProcessID="0" ThreadID="0" />
    <Channel>System</Channel>
    <Computer>1CSERVER.*******.local</Computer>
    <Security UserID="S-1-5-21-4102014034-2086728852-1080897402-1002" />
  </System>
  <EventData>
    <Data Name="param1">для конкретного приложения</Data>
    <Data Name="param2">Локальный</Data>
    <Data Name="param3">Активация</Data>
    <Data Name="param4">{BA126AD1-2166-11D1-B1D0-00805FC1270E}</Data>
    <Data Name="param5">1CSERVER</Data>
    <Data Name="param6">USR1CV82</Data>
    <Data Name="param7">S-1-5-21-4102014034-2086728852-1080897402-1002</Data>
    <Data Name="param8">LocalHost (с использованием LRPC)</Data>
  </EventData>
</Event>


Я так понимаю, там что-то с настройками безопасности. Админ комментариев не дает. Подскажите, что не так?
39 Альбатрос
 
14.05.15
05:40
для (38) вроде вот решение, вечером только проверим
http://forum.kaspersky.com/lofiversion/index.php/t161843.html
40 Альбатрос
 
14.05.15
06:36
(34) увеличил до 200 - по фигу...
для журнала тоже
41 vde69
 
14.05.15
09:48
(28)для 8 лучше ставить 0, это для 7.7 надо ставить 1
42 Альбатрос
 
14.05.15
10:07
(41) вернул обратно на ноль
43 Альбатрос
 
14.05.15
10:08
sql server 2008 r2 best practices analyzer ничего страшного не выяснил
44 leonidkorolev
 
14.05.15
10:38
(0) Я бы посмотре что внутри этой процедуры тормозит.

УправлениеЗапасамиПартионныйУчет.ДвижениеПартийТоваров(Ссылка, Движения.СписанныеТовары.Выгрузить())
45 Альбатрос
 
14.05.15
10:59
(44) для этого надо отладку на сервере включить, а это не получается пока
46 Гёдза
 
14.05.15
11:03
(45) без этого дальнейший разговор бессмысленный.
Может там блокировки идут
47 leonidkorolev
 
14.05.15
11:05
(45) Ну ок. Можно в профайлере посмотреть что происходит на скуле в момент выполнения этой процедуры. Поставь точку останова на процедуру, перед выполнение запусти профайле и смотри самые тяжелые запросы.
48 vde69
 
14.05.15
11:05
(45) сделай (37)...
49 Альбатрос
 
14.05.15
11:12
(48) Я несколько хз, где это запускать :))) И не понял, что конкретно этот скрипт делает. Буду рад пояснениям )))
50 vde69
 
14.05.15
11:14
(49) запускать в скуле, скрипт выводит статистику ожидания блокировок (показывает слабые места)
51 Альбатрос
 
14.05.15
11:21
(50) Этот скрипт будет 5 часов мониторить при первом значении в 300?
52 vde69
 
14.05.15
11:21
(51) да
53 Альбатрос
 
14.05.15
11:24
(52) Поставил на 5 минут и начал проведение проблемного документа, жду...
54 Klesk666
 
14.05.15
11:25
+(33) прогони тест Гилева
55 Kvant1C
 
14.05.15
11:27
(40) Проверь размер приращения БД, вот полезная статья на эту тему: http://www.sql.ru/blogs/dbasimple/1924

не поленись прочитать
56 Альбатрос
 
14.05.15
11:28
(52) Таааак, а результат в мс?
57 Klesk666
 
14.05.15
11:28
какая конфигурация дисковой системы?
58 vde69
 
14.05.15
11:29
(56) там в % куда нагляднее... нормально когда запись и чтение диска занимает 5-15%
59 Альбатрос
 
14.05.15
11:29
(54) (55) Ок, спасибо. Щас после оценки результата из (37) займусь
60 Klesk666
 
14.05.15
11:30
может админы все на один диск запихали
61 Альбатрос
 
14.05.15
11:30
(58) LAZYWRITER_SLEEP процент  = 25
62 slavikzzz
 
14.05.15
11:30
вот еще статья по оптимизации + делали пересчет итогов
http://1cgmix.ru/base/base1c/30-optimize1cupp
63 Альбатрос
 
14.05.15
11:31
(60) Рейд массив там вроде как. А так да, все на одном диске
64 vde69
 
14.05.15
11:31
(61) запускать на менее часа смысла нет...
65 Альбатрос
 
14.05.15
11:32
(64) Надо ведь и нагрузку тогда обеспечить на проблемную базу для хорошего результата, не?
66 Kvant1C
 
14.05.15
11:33
Кстати на счет дисков, был такой случай когда проблемы на новом сервере были связаны именно с дисками, был косяк с контроллером, после настройки проблема ушла.
В общем не лишне саму дисковую подсистему проверить на скорострельность.
67 Альбатрос
 
14.05.15
11:34
(66) Ну как бэ я не могу это сделать, а сисадмин по-любому скажет, что все норм и проверять не надо.
68 Kvant1C
 
14.05.15
11:34
(65) Попробуй бэкап свернуть/развернуть
69 Klesk666
 
14.05.15
11:34
а не проблемные базы типовые?
70 vde69
 
14.05.15
11:35
(65) запускать нужно на рабочем сервере во время обычной работы юзеров... никаких эмуляторов, перепроведений и т.д.

там анализируется например время отклика клиента и т.д. то есть ситема в целом а не сервер
71 Kvant1C
 
14.05.15
11:36
(67) >>сисадмин по-любому скажет, что все норм и проверять не надо

ну тогда скажи ему чтобы он со скулем тогда сам боролся...
72 Альбатрос
 
14.05.15
11:38
(69) да, и все обновленные до последнего релиза. А проблемная это "Управление торговлей", редакция 10.3 (10.3.18.3)

(71) Ну он заявит что проблема в самой базе. При этом его заявление будет выглядеть логичным, ведь остальные базы не тормозят.

(70) Запустил на час без нагрузки, кроме обычной
73 Kvant1C
 
14.05.15
11:42
(72) Ну тогда проблемы с диском можно отмести.
74 Альбатрос
 
14.05.15
11:43
(73) Размер прироста выставлен в 200 мб при базе в 9гб. Судя по статье - норм показатель.
75 Гёдза
 
14.05.15
11:45
(72) один работаешь или нет? Может регламент какой блокировки накладывает?
76 Гёдза
 
14.05.15
11:46
Если только с этой базой так на этом сервере, то очень вероятно что именно они
77 Klesk666
 
14.05.15
11:46
(73) это если база располагается также как остальные
78 Альбатрос
 
14.05.15
11:52
(75) Нет, не один. На протяжении рабочего дня регламентов нет.
79 dmrjan
 
14.05.15
11:52
Попробуй в MSSQL включить регулятор запросов, и поставь 2000-10000, документы будет проводится быстрее, а вот кто больше всего начнет кричать, у того и смотри. Обычно отчеты сами начинают ругаться на этот параметр.
80 dmrjan
 
14.05.15
11:53
Начни с 2000.
81 Альбатрос
 
14.05.15
11:54
(79) Это не скажется на работе других баз?
82 dmrjan
 
14.05.15
11:55
(81) Если скажется, значит не все в порядке с другими базами. Но это не смертельно, всегда можно отключить это значение. Или поменять.
83 dmrjan
 
14.05.15
11:57
Кстати - какой у тебя размер tempdb?
84 Kvant1C
 
14.05.15
12:00
(74) Модель восстановления какая устновлена, full или simple? Если full, то поменяй на simple.
85 Альбатрос
 
14.05.15
12:01
(84) Simple
86 Альбатрос
 
14.05.15
12:01
(83) Где посмотреть? ))))
87 dmrjan
 
14.05.15
12:04
В системных базах данных (86)
88 vde69
 
14.05.15
12:06
да не мечись... надо делать все по порядку, иначе на одни результаты будут наслаивается твои эксперименты...

оптимизация - она не быстрая... сделал проверил подумал, потом снова можно делать
89 Зеленый пень
 
14.05.15
12:12
(45) Тогда сделай копию базы, там у модуля поставь галку "клиент" и отлаживай.
90 dmrjan
 
14.05.15
12:14
Может проблема в том, что в файловой версии было прописано, что процедура выполняется локально, а нужно на сервере? Посмотри - при проведении - сколько у тебя грузится сеть.
91 Альбатрос
 
14.05.15
12:44
(89) Ошибки валятся про мутабельные значения
92 Альбатрос
 
14.05.15
12:46
(88) Тест ничего особо не показал, кроме LAZYWRITER_SLEEP, у нее 21 %, все остальные не превышают 12
Может все-таки нагрузить ее?
93 Альбатрос
 
14.05.15
12:47
(90) Но ведь тогда замер бы на нее сработал, нет?
94 Альбатрос
 
14.05.15
12:48
(87) Tempdb = 8мб, прирост 10%
95 Альбатрос
 
14.05.15
12:49
+(92) ghjcnj ,fpf ctqxfc vj;tn ,snm yt jcj,j yfuhe;tyf gjkmpjdfntkzvb
96 Альбатрос
 
14.05.15
12:49
+(92) просто база сейчас может быть вообще не нагружена пользователями
97 0wl
 
14.05.15
13:00
(94) Получается, сервер недавно перезагружал?

Для tempdb это очень маленький размер, поставь изначальный размер хотябы Мб 500, иначе постоянно будут блокировки на расширении файла данных.

И я пропустил, индексы уже перестраивал? Если нет, запусти на ночь, днем перестроение индексов помешает работе пользователей
98 Альбатрос
 
14.05.15
13:01
(97) Индексы регламентом перестраиваются в воскресенье - не помогло... Сервер перегружали сегодня ночью.
99 vde69
 
14.05.15
13:21
(92) так ты выложи табличку...
100 dmrjan
 
14.05.15
13:28
(94) (97) Получается база небольшая?
101 dmrjan
 
14.05.15
13:31
(93) Замер мог и не сработать, ведь если запрос большой, то как раз пару минут данные и перекачиваются на твой компьютер, где потом происходит выборка.
102 Альбатрос
 
14.05.15
13:56
(99) табличка результата
http://my-files.ru/jgf2g3
103 vde69
 
14.05.15
13:58
(102) сюда ТЕКСТ скопируй...

а то у многих помойки заблокированы
104 Альбатрос
 
14.05.15
14:05
***total***;                    30759327.0;      100.0
LAZYWRITER_SLEEP;               6494140.0;       21.1
XE_TIMER_EVENT;                 3571619.0;       11.6
LOGMGR_QUEUE;                   3536668.0;       11.5
REQUEST_FOR_DEADLOCK_SEARCH;    3545187.0;       11.5
SQLTRACE_INCREMENTAL_FLUSH_SLEEP;3535646.0;      11.5
FT_IFTS_SCHEDULER_IDLE_WAIT;    3480672.0;       11.3
CHECKPOINT_QUEUE;               2967207.0;       9.6
SLEEP_TASK;                     1774646.0;       5.8
BROKER_TO_FLUSH;                1771903.0;       5.8
SLEEP_BPOOL_FLUSH;              20295.0;         0.1
CHKPT;                          0.0;             0.0
105 Альбатрос
 
14.05.15
14:06
Остальные по процентам нули
106 vde69
 
14.05.15
14:11
у тебя статистика запросов не обновляется, поставь раз в час и проверь, что реально срабатывает... потом жди сутки двое, потом повтори
107 vde69
 
14.05.15
14:12
(106)+ план запросов кривой строится.
108 Альбатрос
 
14.05.15
16:36
(106) Попробую, спасибо
(107) можно поподробней про план запросов?
109 mr_K
 
14.05.15
16:51
Я в УТ не силен, но в УПП переписав думаю аналогичную процедуру УправлениеЗапасамиПартионныйУчет.ДвижениеПартийТоваров получил жутчайший прирост производительсти.
До этого были испробованы буквально все танцы с бубном вокруг SQL с практически нулевыми результатами.
110 Fragster
 
гуру
14.05.15
17:16
(109) я об этом еще в (13) написал - что неплохо бы замер производительности сделать
111 Альбатрос
 
15.05.15
05:24
(109) (110) Да, так и есть. Подключили мне наконец отладку на сервере и замер показал 92% времени выполнения на вот эту строчку - Возврат Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
112 Альбатрос
 
15.05.15
05:25
начинаю ковырять запрос )))
113 Альбатрос
 
15.05.15
05:28
Уважаемые, киньте пожалуйста информацией по оптимизации запросов для клиент-серверной работы базы.
114 Альбатрос
 
15.05.15
07:27
Прошу советов )))) Помогите, укажите где исправить:

    Запрос.Текст =
    "ВЫБРАТЬ
    |    СписанныеТовары.НомерСтрокиДокумента КАК НомерСтрокиДокумента,
    |    ПартииТоваровНаСкладах.Номенклатура,
    |    ПартииТоваровНаСкладах.ДокументОприходования КАК ДокументОприходования,
    |    ПартииТоваровНаСкладах.ДокументОприходования.Дата КАК ДокументОприходованияДата,
    |    ПартииТоваровНаСкладах.Склад,
    |    ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры,
    |    ПартииТоваровНаСкладах.СерияНоменклатуры,
    |    ПартииТоваровНаСкладах.Качество,
    |    ПартииТоваровНаСкладах.Заказ,
    |    ПартииТоваровНаСкладах.КоличествоОстаток КАК Количество,
    |    ПартииТоваровНаСкладах.СтоимостьОстаток КАК Стоимость,
    |    ПартииТоваровНаСкладах.СтатусПартии,
    |    ВЫБОР
    |        КОГДА СписанныеТовары.СерияНоменклатуры = ПартииТоваровНаСкладах.СерияНоменклатуры
    |            ТОГДА 0
    |        ИНАЧЕ 1
    |    КОНЕЦ КАК ЧислоСерияНоменклатуры,
    |    ВЫБОР
    |        КОГДА СписанныеТовары.ДокументПартии = НЕОПРЕДЕЛЕНО
    |            ТОГДА 0
    |        ИНАЧЕ ВЫБОР
    |                КОГДА СписанныеТовары.ДокументПартии = ПартииТоваровНаСкладах.ДокументОприходования
    |                    ТОГДА 0
    |                ИНАЧЕ 1
    |            КОНЕЦ
    |    КОНЕЦ КАК ЧислоДокументОприходования,
    |    ВЫБОР
    |        КОГДА СписанныеТовары.ЗаказПартии = НЕОПРЕДЕЛЕНО
    |            ТОГДА 0
    |        ИНАЧЕ ВЫБОР
    |                КОГДА ПартииТоваровНаСкладах.Заказ = &ПустойЗаказ
    |                    ТОГДА 1
    |                ИНАЧЕ 0
    |            КОНЕЦ
    |    КОНЕЦ КАК ЧислоЗаказ,
    |    ВЫБОР
    |        КОГДА ПартииТоваровНаСкладах.СтатусПартии = &НаКомиссию
    |            ТОГДА 1
    |        ИНАЧЕ 0
    |    КОНЕЦ КАК ЧислоСтатусПартии
    |ИЗ
    |    РегистрСведений.СписанныеТовары КАК СписанныеТовары
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Остатки(
    |        &Дат,
    |        Номенклатура В
    |            (ВЫБРАТЬ
    |                РегистрСведений.СписанныеТовары.Номенклатура
    |            ИЗ
    |                РегистрСведений.СписанныеТовары
    |            ГДЕ
    |                РегистрСведений.СписанныеТовары.Регистратор = &Ссылка)" + ?(ВестиПартионныйУчетПоСкладам, "
    |        И (Склад В
    |            (ВЫБРАТЬ
    |                РегистрСведений.СписанныеТовары.Склад
    |            ИЗ
    |                РегистрСведений.СписанныеТовары
    |            ГДЕ
    |                РегистрСведений.СписанныеТовары.Регистратор = &Ссылка) ИЛИ Склад = &ПустойСклад)", "") + ") КАК ПартииТоваровНаСкладах
    |        ПО СписанныеТовары.Номенклатура = ПартииТоваровНаСкладах.Номенклатура
    |            И СписанныеТовары.ХарактеристикаНоменклатуры = ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры
    |            И (ВЫБОР
    |                КОГДА ПартииТоваровНаСкладах.Качество = &ПустоеКачество
    |                    ТОГДА ИСТИНА
    |                ИНАЧЕ ВЫБОР
    |                        КОГДА СписанныеТовары.Качество = &ПустоеКачество
    |                            ТОГДА ПартииТоваровНаСкладах.Качество = &КачествоНовый
    |                        ИНАЧЕ ПартииТоваровНаСкладах.Качество = СписанныеТовары.Качество
    |                    КОНЕЦ
    |            КОНЕЦ)
    |            " + ?(ВестиПартионныйУчетПоСкладам, "И (ПартииТоваровНаСкладах.Склад = СписанныеТовары.Склад ИЛИ ПартииТоваровНаСкладах.Склад = &ПустойСклад)", "") + "
    |            И (ВЫБОР
    |                КОГДА СписанныеТовары.ДопустимыйСтатус1 <> &ПустойСтатус
    |                        ИЛИ СписанныеТовары.ДопустимыйСтатус2 <> &ПустойСтатус
    |                        ИЛИ СписанныеТовары.ДопустимыйСтатус3 <> &ПустойСтатус
    |                        ИЛИ СписанныеТовары.ДопустимыйСтатус4 <> &ПустойСтатус
    |                    ТОГДА ПартииТоваровНаСкладах.СтатусПартии = &ПустойСтатус
    |                            ИЛИ ПартииТоваровНаСкладах.СтатусПартии = &СтатусПартииПоОрдеру
    |                            ИЛИ ПартииТоваровНаСкладах.СтатусПартии = СписанныеТовары.ДопустимыйСтатус1
    |                            ИЛИ ПартииТоваровНаСкладах.СтатусПартии = СписанныеТовары.ДопустимыйСтатус2
    |                            ИЛИ ПартииТоваровНаСкладах.СтатусПартии = СписанныеТовары.ДопустимыйСтатус3
    |                            ИЛИ ПартииТоваровНаСкладах.СтатусПартии = СписанныеТовары.ДопустимыйСтатус4
    |                ИНАЧЕ ИСТИНА
    |            КОНЕЦ)
    |    
    |        И (ВЫБОР
    |            КОГДА СписанныеТовары.СписыватьТолькоПоЗаказу = ИСТИНА
    |                ТОГДА ВЫБОР
    |                        КОГДА ПартииТоваровНаСкладах.Заказ <> СписанныеТовары.ЗаказПартии
    |                            ТОГДА ВЫБОР
    |                                    КОГДА (НЕ СписанныеТовары.ЗаказПартии = НЕОПРЕДЕЛЕНО)
    |                                        ТОГДА ЛОЖЬ
    |                                    ИНАЧЕ ПартииТоваровНаСкладах.Заказ = &ПустойЗаказ
    |                                КОНЕЦ
    |                        ИНАЧЕ ИСТИНА
    |                    КОНЕЦ
    |            ИНАЧЕ ВЫБОР
    |                    КОГДА ПартииТоваровНаСкладах.Заказ <> СписанныеТовары.ЗаказПартии
    |                        ТОГДА ПартииТоваровНаСкладах.Заказ = &ПустойЗаказ
    |                    ИНАЧЕ ИСТИНА
    |                КОНЕЦ
    |        КОНЕЦ)
    |        И (СписанныеТовары.СерияНоменклатуры = ПартииТоваровНаСкладах.СерияНоменклатуры
    |            ИЛИ ПартииТоваровНаСкладах.СерияНоменклатуры = &ПустаяСерияНоменклатуры)
    |ГДЕ
    |    СписанныеТовары.Регистратор = &ОсновнойДокумент
    |
    |УПОРЯДОЧИТЬ ПО
    |    ЧислоСерияНоменклатуры,
    |    ЧислоДокументОприходования,
    |    ЧислоЗаказ,
    |    ЧислоСтатусПартии" + ?(СтратегияСтатусПартии = Перечисления.СтретегииСписанияПартийТоваровПоСтатусам.СначалаПринятыеПотомСобственные, " Убыв", "") + ",
    |    ДокументОприходованияДата" + ?(СпособОценкиМПЗ = "ЛИФО", " Убыв","") + ",
    |    ДокументОприходования" + ?(СпособОценкиМПЗ = "ЛИФО", " Убыв","") + "
    |ИТОГИ ПО
    |    НомерСтрокиДокумента";
115 ЧеловекДуши
 
15.05.15
08:26
(114) Используй ВТ для отбора
116 ЧеловекДуши
 
15.05.15
08:29
+(114) >>> .Регистратор

Используй точный отбор:    .Регистратор Ссылка Документ.Такой-ТО

У тебя же известен Вид докмента, по которому ведется отбор, так накой ты все отбираешь.
По составному типу, 1С компилирует запрос так, что все документы, которые выступают регистратором, участвуют в отборе...
В общем этот момент уже на 50% ускорит зарос :)
117 ЧеловекДуши
 
15.05.15
08:32
Сдается мне, что у вас в БД все запросы нужно допиливать под SQL версию.
118 vde69
 
15.05.15
08:58
тормозит вот это РегистрСведений.СписанныеТовары.Регистратор = &Ссылка"

вынеси этот запрос во ВТ и проиндексируй поля по которым джойнишь


это для начала :)
119 vde69
 
15.05.15
08:59
(118) и не забудь привести тип регистратора в ВТ, там наверняка составной, а они во ВТ тупят прилично...
120 Альбатрос
 
15.05.15
09:14
(116) (118) (119) Спасибо, сейчас буду пробовать
121 Альбатрос
 
15.05.15
09:14
(117) К моей великой печали это скорей всего так
122 DayDreamer
 
15.05.15
09:17
возможно вопрос не к месту, но на серваке с SQL какой установлен план электропитания? максимальная производительность или нет?
123 Альбатрос
 
15.05.15
09:22
(122) Спрошу у админа как появится, у меня прав нет самому глянуть
124 DayDreamer
 
15.05.15
09:28
(123) и еще вопрос - сервер физический или виртуальный?
125 Альбатрос
 
15.05.15
10:22
(124) Физический
126 Альбатрос
 
15.05.15
10:24
Переделал пока вот так:

    
    "ВЫБРАТЬ
    |    СписанныеТовары.Номенклатура,
    |    СписанныеТовары.Склад
    |ПОМЕСТИТЬ ВТТоварыИСклады
    |ИЗ
    |    РегистрСведений.СписанныеТовары КАК СписанныеТовары
    |ГДЕ
    |    СписанныеТовары.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах
    |    И СписанныеТовары.Регистратор = &Ссылка
    |;
    |
    |ВЫБРАТЬ
    |    СписанныеТовары.НомерСтрокиДокумента КАК НомерСтрокиДокумента,
    |    ПартииТоваровНаСкладах.Номенклатура,
    |    ПартииТоваровНаСкладах.ДокументОприходования КАК ДокументОприходования,
    |    ПартииТоваровНаСкладах.ДокументОприходования.Дата КАК ДокументОприходованияДата,
    |    ПартииТоваровНаСкладах.Склад,
    |    ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры,
    |    ПартииТоваровНаСкладах.СерияНоменклатуры,
    |    ПартииТоваровНаСкладах.Качество,
    |    ПартииТоваровНаСкладах.Заказ,
    |    ПартииТоваровНаСкладах.КоличествоОстаток КАК Количество,
    |    ПартииТоваровНаСкладах.СтоимостьОстаток КАК Стоимость,
    |    ПартииТоваровНаСкладах.СтатусПартии,
    |    ВЫБОР
    |        КОГДА СписанныеТовары.СерияНоменклатуры = ПартииТоваровНаСкладах.СерияНоменклатуры
    |            ТОГДА 0
    |        ИНАЧЕ 1
    |    КОНЕЦ КАК ЧислоСерияНоменклатуры,
    |    ВЫБОР
    |        КОГДА СписанныеТовары.ДокументПартии = НЕОПРЕДЕЛЕНО
    |            ТОГДА 0
    |        ИНАЧЕ ВЫБОР
    |                КОГДА СписанныеТовары.ДокументПартии = ПартииТоваровНаСкладах.ДокументОприходования
    |                    ТОГДА 0
    |                ИНАЧЕ 1
    |            КОНЕЦ
    |    КОНЕЦ КАК ЧислоДокументОприходования,
    |    ВЫБОР
    |        КОГДА СписанныеТовары.ЗаказПартии = НЕОПРЕДЕЛЕНО
    |            ТОГДА 0
    |        ИНАЧЕ ВЫБОР
    |                КОГДА ПартииТоваровНаСкладах.Заказ = &ПустойЗаказ
    |                    ТОГДА 1
    |                ИНАЧЕ 0
    |            КОНЕЦ
    |    КОНЕЦ КАК ЧислоЗаказ,
    |    ВЫБОР
    |        КОГДА ПартииТоваровНаСкладах.СтатусПартии = &НаКомиссию
    |            ТОГДА 1
    |        ИНАЧЕ 0
    |    КОНЕЦ КАК ЧислоСтатусПартии
    |ИЗ
    |    РегистрСведений.СписанныеТовары КАК СписанныеТовары
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Остатки(
    |        &Дат,
    |        Номенклатура В
    |            (ВЫБРАТЬ
    |                ВТТоварыИСклады.Номенклатура
    |            ИЗ
    |                ВТТоварыИСклады)
    |        И (Склад В
    |            (ВЫБРАТЬ
    |                ВТТоварыИСклады.Склад
    |            ИЗ
    |                ВТТоварыИСклады) ИЛИ Склад = &ПустойСклад)) КАК ПартииТоваровНаСкладах
    |        ПО СписанныеТовары.Номенклатура = ПартииТоваровНаСкладах.Номенклатура
    |            И СписанныеТовары.ХарактеристикаНоменклатуры = ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры
    |            И (ВЫБОР
    |                КОГДА ПартииТоваровНаСкладах.Качество = &ПустоеКачество
    |                    ТОГДА ИСТИНА
    |                ИНАЧЕ ВЫБОР
    |                        КОГДА СписанныеТовары.Качество = &ПустоеКачество
    |                            ТОГДА ПартииТоваровНаСкладах.Качество = &КачествоНовый
    |                        ИНАЧЕ ПартииТоваровНаСкладах.Качество = СписанныеТовары.Качество
    |                    КОНЕЦ
    |            КОНЕЦ)
    |            И (ПартииТоваровНаСкладах.Склад = СписанныеТовары.Склад ИЛИ ПартииТоваровНаСкладах.Склад = &ПустойСклад)
    |            И (ВЫБОР
    |                КОГДА СписанныеТовары.ДопустимыйСтатус1 <> &ПустойСтатус
    |                        ИЛИ СписанныеТовары.ДопустимыйСтатус2 <> &ПустойСтатус
    |                        ИЛИ СписанныеТовары.ДопустимыйСтатус3 <> &ПустойСтатус
    |                        ИЛИ СписанныеТовары.ДопустимыйСтатус4 <> &ПустойСтатус
    |                    ТОГДА ПартииТоваровНаСкладах.СтатусПартии = &ПустойСтатус
    |                            ИЛИ ПартииТоваровНаСкладах.СтатусПартии = &СтатусПартииПоОрдеру
    |                            ИЛИ ПартииТоваровНаСкладах.СтатусПартии = СписанныеТовары.ДопустимыйСтатус1
    |                            ИЛИ ПартииТоваровНаСкладах.СтатусПартии = СписанныеТовары.ДопустимыйСтатус2
    |                            ИЛИ ПартииТоваровНаСкладах.СтатусПартии = СписанныеТовары.ДопустимыйСтатус3
    |                            ИЛИ ПартииТоваровНаСкладах.СтатусПартии = СписанныеТовары.ДопустимыйСтатус4
    |                ИНАЧЕ ИСТИНА
    |            КОНЕЦ)
    |    
    |        И (ВЫБОР
    |            КОГДА СписанныеТовары.СписыватьТолькоПоЗаказу = ИСТИНА
    |                ТОГДА ВЫБОР
    |                        КОГДА ПартииТоваровНаСкладах.Заказ <> СписанныеТовары.ЗаказПартии
    |                            ТОГДА ВЫБОР
    |                                    КОГДА (НЕ СписанныеТовары.ЗаказПартии = НЕОПРЕДЕЛЕНО)
    |                                        ТОГДА ЛОЖЬ
    |                                    ИНАЧЕ ПартииТоваровНаСкладах.Заказ = &ПустойЗаказ
    |                                КОНЕЦ
    |                        ИНАЧЕ ИСТИНА
    |                    КОНЕЦ
    |            ИНАЧЕ ВЫБОР
    |                    КОГДА ПартииТоваровНаСкладах.Заказ <> СписанныеТовары.ЗаказПартии
    |                        ТОГДА ПартииТоваровНаСкладах.Заказ = &ПустойЗаказ
    |                    ИНАЧЕ ИСТИНА
    |                КОНЕЦ
    |        КОНЕЦ)
    |        И (СписанныеТовары.СерияНоменклатуры = ПартииТоваровНаСкладах.СерияНоменклатуры
    |            ИЛИ ПартииТоваровНаСкладах.СерияНоменклатуры = &ПустаяСерияНоменклатуры)
    |ГДЕ
    |    СписанныеТовары.Регистратор = &ОсновнойДокумент
    |
    |УПОРЯДОЧИТЬ ПО
    |    ЧислоСерияНоменклатуры,
    |    ЧислоДокументОприходования,
    |    ЧислоЗаказ,
    |    ЧислоСтатусПартии" + ?(СтратегияСтатусПартии = Перечисления.СтретегииСписанияПартийТоваровПоСтатусам.СначалаПринятыеПотомСобственные, " Убыв", "") + ",
    |    ДокументОприходованияДата" + ?(СпособОценкиМПЗ = "ЛИФО", " Убыв","") + ",
    |    ДокументОприходования" + ?(СпособОценкиМПЗ = "ЛИФО", " Убыв","") + "
    |ИТОГИ ПО
    |    НомерСтрокиДокумента";
127 Альбатрос
 
15.05.15
10:25
время выполнения упало с 2 минут до 6 секунд!
128 Альбатрос
 
15.05.15
10:25
Радуюся, млять, как пацан, которому водяной пистолет подарили
129 Альбатрос
 
15.05.15
10:26
Всем ОГРОМНОЕ спасибо, но , видимо, я эту ветку еще не раз подниму, ибо оптимизация только начинается (((
130 Гёдза
 
15.05.15
10:27
вот тут еще можно соптимизировать
ПартииТоваровНаСкладах.ДокументОприходования.Дата
131 Альбатрос
 
15.05.15
10:29
(130) Тоже вытащить в ВТ и соединить?
132 H A D G E H O G s
 
15.05.15
10:29
(131) Давай я те готовый модуль сброшу, а?
133 vde69
 
15.05.15
10:31
проиндексируй в ХП два поля

|    СписанныеТовары.Номенклатура,
|    СписанныеТовары.Склад


и еще у тебя в самом конце есть условие

ГДЕ
    |    СписанныеТовары.Регистратор = &ОсновнойДокумент


его или в джойн впихни или подними выше (сделай вложеный или ВТ)
134 Альбатрос
 
15.05.15
10:39
(132) Давай))) [email protected]
и другие модули тоже было бы круто ))))
135 Альбатрос
 
15.05.15
10:41
(133) Ок, спасибо
136 serpentt
 
15.05.15
15:15
(134) извините за наглость а мне модуль не скините???
[email protected]
137 adron
 
15.05.15
15:22
(0) а у тебя Microsoft SQL Server 2008 R2 случаем не  "Express" иль ещё какой урезанный ?. Админы любят такие ставить.