|
Дедлоки, PostgreSQL и ЦУП
| ☑ |
0
Fuas4
12.09.16
✎
19:01
|
Господа, такая ситуация: есть УТ 10.3, в которой работает 10-15 пользователей. Когда файловая база уперлась в размер, перешли на PostgreSQL. На нем? при проведении заказа покупателя? стали периодически выскакивать дедлоки. Поставил ЦУП, посмотрел ошибки. Все ошибки в выполнении запросов в обработках. Посмотрел, ни одна из них не записывает документы, т.е. по идее ничего блокировать не должна. В связи с чем вопрос: поможет ли ускорение запросов в борьбе с дедлоками или надо смириться и перейти на MS SQL?
|
|
1
Cyberhawk
12.09.16
✎
19:02
|
Пару статей с ТВКВ по тюнингу Постгри применил уже?
|
|
2
Fuas4
12.09.16
✎
19:04
|
(1) Админ постгрю ставил и админит. Если дадите ссылку на статьи - дам ему почитать.
|
|
3
Cyberhawk
12.09.16
✎
19:05
|
(2)
И вообще все, что выходит в поиске по ИТС по слову "postgresql"
|
|
4
Fuas4
12.09.16
✎
19:07
|
(3) спасибо, передам ссылки. А по сабжу что скажете? Там есть запрос, который выполняется 2400 секунд, но выполняется фоном и по факту никому не мешает. Может он на дедлоки как-то вилять?
|
|
5
Cyberhawk
12.09.16
✎
19:32
|
"по сабжу что скажете?" // Ничего, мне отсюда не видно, что там за дедлоки
|
|
6
ansh15
12.09.16
✎
19:37
|
(4)
|
|
7
Fuas4
12.09.16
✎
19:41
|
(5) классические :)
|
|
8
Fuas4
12.09.16
✎
19:44
|
(6) спасибо, увеличить время на блокировки попробую
|
|
9
Фрэнки
12.09.16
✎
19:45
|
по сабжу можно сказать, что с момента выхода УТ 10.3 много воды уже утекло. И платформа обновлялась и постгри обновлялся и типовая 10.3 тоже обновлялась - насколько там кривой запрос или насколько он криво обрабатывается на твоей субд сейчас?
|
|
10
Fuas4
12.09.16
✎
19:50
|
(9) платформа 8.3.7, конфа достаточно старая (jn 30/10/2014u) и сильно переписанная, ПГ самый свежий. Запросы достаточно кривые (судя по времени выполнениия), но они просто получают данные и потом их в одном случае сохраняют в эксель, Во втором отправляютна сайт, т.е. заказ покупателя, по которому лезут дедлоки не задевают совсем
|
|
11
Cyberhawk
12.09.16
✎
21:28
|
Ставлю на то, что лочится таблица регистрации изменений
|
|
12
Cyberhawk
12.09.16
✎
21:31
|
В логах постгри посмотри, какая таблица во время дедлока блочится. Будет что-то типа
LOCK _AccumReg456 IN APPLICATION EXCLUSIVE MODE
|
|
13
youalex
12.09.16
✎
21:38
|
(7) see server log (0)
|
|
14
Fuas4
13.09.16
✎
11:25
|
Посмотрел лог, блочится много чего, но в основном основная таблица заказов покупателя (Document134)
2016-09-13 12:56:57 PKT WARNING: there is no transaction in progress
2016-09-13 12:57:05 PKT ERROR: deadlock detected
2016-09-13 12:57:05 PKT DETAIL: Process 7380 waits for ApplicationShareLock on relation 224290 of database 208661; blocked by process 24492.
Process 24492 waits for ApplicationExclusiveLock on relation 226879 of database 208661; blocked by process 7380.
Process 7380: SET STATEMENT_TIMEOUT TO 40000;
LOCK _Document134 IN APPLICATION SHARE MODE;
LOCK _Document134_VT2436 IN APPLICATION SHARE MODE;
LOCK _Document134_VT2458 IN APPLICATION SHARE MODE;
LOCK _Document134_VT2466 IN APPLICATION SHARE MODE;
LOCK _Document134_VT2479 IN APPLICATION SHARE MODE;
LOCK _Document134_VT8383 IN APPLICATION SHARE MODE;
SET STATEMENT_TIMEOUT TO DEFAULT;
Process 24492: SET STATEMENT_TIMEOUT TO 40000;
LOCK _DocumentJournal6029 IN APPLICATION EXCLUSIVE MODE;
SET STATEMENT_TIMEOUT TO DEFAULT;
2016-09-13 12:57:05 PKT HINT: See server log for query details.
2016-09-13 12:57:05 PKT STATEMENT: SET STATEMENT_TIMEOUT TO 40000;
LOCK _Document134 IN APPLICATION SHARE MODE;
LOCK _Document134_VT2436 IN APPLICATION SHARE MODE;
LOCK _Document134_VT2458 IN APPLICATION SHARE MODE;
LOCK _Document134_VT2466 IN APPLICATION SHARE MODE;
LOCK _Document134_VT2479 IN APPLICATION SHARE MODE;
LOCK _Document134_VT8383 IN APPLICATION SHARE MODE;
SET STATEMENT_TIMEOUT TO DEFAULT;
2016-09-13 12:57:05 PKT WARNING: there is no transaction in progress
2016-09-13 12:57:05 PKT ERROR: deadlock detected
2016-09-13 12:57:05 PKT DETAIL: Process 7380 waits for ApplicationExclusiveLock on relation 224290 of database 208661; blocked by process 24492.
Process 24492 waits for ApplicationExclusiveLock on relation 224290 of database 208661; blocked by process 7380.
Process 7380: SET STATEMENT_TIMEOUT TO 40000;
LOCK _Document134 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2436 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2458 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2466 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2479 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT8383 IN APPLICATION EXCLUSIVE MODE;
SET STATEMENT_TIMEOUT TO DEFAULT;
Process 24492: SET STATEMENT_TIMEOUT TO 40000;
LOCK _Document134 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2436 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2458 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2466 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2479 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT8383 IN APPLICATION EXCLUSIVE MODE;
SET STATEMENT_TIMEOUT TO DEFAULT;
2016-09-13 12:57:05 PKT HINT: See server log for query details.
2016-09-13 12:57:05 PKT STATEMENT: SET STATEMENT_TIMEOUT TO 40000;
LOCK _Document134 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2436 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2458 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2466 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2479 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT8383 IN APPLICATION EXCLUSIVE MODE;
SET STATEMENT_TIMEOUT TO DEFAULT;
2016-09-13 12:57:05 PKT WARNING: there is no transaction in progress
2016-09-13 12:57:12 PKT ERROR: deadlock detected
2016-09-13 12:57:12 PKT DETAIL: Process 7380 waits for ApplicationShareLock on relation 224290 of database 208661; blocked by process 24492.
Process 24492 waits for ApplicationExclusiveLock on relation 226879 of database 208661; blocked by process 7380.
Process 7380: SET STATEMENT_TIMEOUT TO 40000;
LOCK _Document134 IN APPLICATION SHARE MODE;
LOCK _Document134_VT2436 IN APPLICATION SHARE MODE;
LOCK _Document134_VT2458 IN APPLICATION SHARE MODE;
LOCK _Document134_VT2466 IN APPLICATION SHARE MODE;
LOCK _Document134_VT2479 IN APPLICATION SHARE MODE;
LOCK _Document134_VT8383 IN APPLICATION SHARE MODE;
SET STATEMENT_TIMEOUT TO DEFAULT;
Process 24492: SET STATEMENT_TIMEOUT TO 40000;
LOCK _DocumentJournal6029 IN APPLICATION EXCLUSIVE MODE;
SET STATEMENT_TIMEOUT TO DEFAULT;
2016-09-13 12:57:12 PKT HINT: See server log for query details.
2016-09-13 12:57:12 PKT STATEMENT: SET STATEMENT_TIMEOUT TO 40000;
LOCK _Document134 IN APPLICATION SHARE MODE;
LOCK _Document134_VT2436 IN APPLICATION SHARE MODE;
LOCK _Document134_VT2458 IN APPLICATION SHARE MODE;
LOCK _Document134_VT2466 IN APPLICATION SHARE MODE;
LOCK _Document134_VT2479 IN APPLICATION SHARE MODE;
LOCK _Document134_VT8383 IN APPLICATION SHARE MODE;
SET STATEMENT_TIMEOUT TO DEFAULT;
2016-09-13 12:57:12 PKT WARNING: there is no transaction in progress
2016-09-13 12:57:13 PKT ВАЖНО: база данных "test" не существует
2016-09-13 12:57:15 PKT ERROR: deadlock detected
2016-09-13 12:57:15 PKT DETAIL: Process 4784 waits for ApplicationExclusiveLock on relation 224290 of database 208661; blocked by process 24492.
Process 24492 waits for ApplicationExclusiveLock on relation 224290 of database 208661; blocked by process 4784.
Process 4784: SET STATEMENT_TIMEOUT TO 40000;
LOCK _Document134 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2436 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2458 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2466 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2479 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT8383 IN APPLICATION EXCLUSIVE MODE;
SET STATEMENT_TIMEOUT TO DEFAULT;
Process 24492: SET STATEMENT_TIMEOUT TO 40000;
LOCK _Document134 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2436 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2458 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2466 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2479 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT8383 IN APPLICATION EXCLUSIVE MODE;
SET STATEMENT_TIMEOUT TO DEFAULT;
2016-09-13 12:57:15 PKT HINT: See server log for query details.
2016-09-13 12:57:15 PKT STATEMENT: SET STATEMENT_TIMEOUT TO 40000;
LOCK _Document134 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2436 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2458 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2466 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2479 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT8383 IN APPLICATION EXCLUSIVE MODE;
SET STATEMENT_TIMEOUT TO DEFAULT;
2016-09-13 12:57:15 PKT WARNING: there is no transaction in progress
2016-09-13 12:57:15 PKT ERROR: deadlock detected
2016-09-13 12:57:15 PKT DETAIL: Process 7380 waits for ApplicationExclusiveLock on relation 224290 of database 208661; blocked by process 4784.
Process 4784 waits for ApplicationExclusiveLock on relation 224290 of database 208661; blocked by process 7380.
Process 7380: SET STATEMENT_TIMEOUT TO 40000;
LOCK _Document134 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2436 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2458 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2466 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2479 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT8383 IN APPLICATION EXCLUSIVE MODE;
SET STATEMENT_TIMEOUT TO DEFAULT;
Process 4784: SET STATEMENT_TIMEOUT TO 40000;
LOCK _Document134 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2436 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2458 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2466 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2479 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT8383 IN APPLICATION EXCLUSIVE MODE;
SET STATEMENT_TIMEOUT TO DEFAULT;
2016-09-13 12:57:15 PKT HINT: See server log for query details.
2016-09-13 12:57:15 PKT STATEMENT: SET STATEMENT_TIMEOUT TO 40000;
LOCK _Document134 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2436 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2458 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2466 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2479 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT8383 IN APPLICATION EXCLUSIVE MODE;
SET STATEMENT_TIMEOUT TO DEFAULT;
2016-09-13 12:57:15 PKT WARNING: there is no transaction in progress
2016-09-13 12:57:17 PKT ERROR: deadlock detected
2016-09-13 12:57:17 PKT DETAIL: Process 7380 waits for ApplicationExclusiveLock on relation 226879 of database 208661; blocked by process 24492.
Process 24492 waits for ApplicationShareLock on relation 224290 of database 208661; blocked by process 7380.
Process 7380: SET STATEMENT_TIMEOUT TO 40000;
LOCK _DocumentJournal6029 IN APPLICATION EXCLUSIVE MODE;
SET STATEMENT_TIMEOUT TO DEFAULT;
Process 24492: SET STATEMENT_TIMEOUT TO 40000;
LOCK _Document134 IN APPLICATION SHARE MODE;
LOCK _Document134_VT2436 IN APPLICATION SHARE MODE;
LOCK _Document134_VT2458 IN APPLICATION SHARE MODE;
LOCK _Document134_VT2466 IN APPLICATION SHARE MODE;
LOCK _Document134_VT2479 IN APPLICATION SHARE MODE;
LOCK _Document134_VT8383 IN APPLICATION SHARE MODE;
SET STATEMENT_TIMEOUT TO DEFAULT;
2016-09-13 12:57:17 PKT HINT: See server log for query details.
2016-09-13 12:57:17 PKT STATEMENT: SET STATEMENT_TIMEOUT TO 40000;
LOCK _DocumentJournal6029 IN APPLICATION EXCLUSIVE MODE;
SET STATEMENT_TIMEOUT TO DEFAULT;
2016-09-13 12:57:17 PKT WARNING: there is no transaction in progress
2016-09-13 12:57:20 PKT ERROR: deadlock detected
2016-09-13 12:57:20 PKT DETAIL: Process 24492 waits for ApplicationExclusiveLock on relation 224290 of database 208661; blocked by process 7380.
Process 7380 waits for ApplicationShareLock on relation 230530 of database 208661; blocked by process 24492.
Process 24492: SET STATEMENT_TIMEOUT TO 40000;
LOCK _Document134 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2436 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2458 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2466 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2479 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT8383 IN APPLICATION EXCLUSIVE MODE;
SET STATEMENT_TIMEOUT TO DEFAULT;
Process 7380: SET STATEMENT_TIMEOUT TO 40000;
LOCK _AccumRg7020 IN APPLICATION SHARE MODE;
LOCK _AccumRg7145 IN APPLICATION SHARE MODE;
LOCK _AccumRg7316 IN APPLICATION SHARE MODE;
LOCK _AccumRg7471 IN APPLICATION SHARE MODE;
LOCK _AccumRg7614 IN APPLICATION SHARE MODE;
LOCK _AccumRg7632 IN APPLICATION SHARE MODE;
LOCK _AccumRg7671 IN APPLICATION SHARE MODE;
LOCK _InfoRg6749 IN APPLICATION SHARE MODE;
SET STATEMENT_TIMEOUT TO DEFAULT;
2016-09-13 12:57:20 PKT HINT: See server log for query details.
2016-09-13 12:57:20 PKT STATEMENT: SET STATEMENT_TIMEOUT TO 40000;
LOCK _Document134 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2436 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2458 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2466 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT2479 IN APPLICATION EXCLUSIVE MODE;
LOCK _Document134_VT8383 IN APPLICATION EXCLUSIVE MODE;
SET STATEMENT_TIMEOUT TO DEFAULT;
2016-09-13 12:57:20 PKT WARNING: there is no transaction in progress
|
|
15
Фрэнки
13.09.16
✎
12:00
|
(14) ну раз пошла такая пьянка - режь последний огурец!
Если не трудно, можешь показать текст запроса, который документ блочит?
Просто интересно некоторые свои догадки проверить.
|
|
16
Necessitudo
13.09.16
✎
12:03
|
А на управляемые блокировки же уже перешли?
|
|
17
Фрэнки
13.09.16
✎
12:06
|
(16) вряд ли. поэтому я и выпрашиваю текст запроса.
|
|
18
Fuas4
13.09.16
✎
12:29
|
(15) а где его найти?
(16) нет, конечно
|
|
19
Fuas4
13.09.16
✎
12:30
|
Не переходил ни разу на управляемые блокировки, если просто переключить режим, полагаю, будет хаос
|
|
20
Necessitudo
13.09.16
✎
13:22
|
Ну главное впихнуть немного кода в места где важен контроль остатков.
|
|
21
Fuas4
13.09.16
✎
13:28
|
(20) читал по этому поовду мануалы. Я так понял, там надо все регистры заказа покупателя переводить в управляемый режим и потмо во всех остальных документах-регистраторах этих регистров тоже переходить на управляемый режим. Т.е. я всю конфу в итоге переведу на управляемые блокировки. Это тоже вариант, но пока ищу пути по проще
|
|
22
Fragster
гуру
13.09.16
✎
13:31
|
(31) добавить в запросы "для изменения"
|
|
23
Fuas4
13.09.16
✎
13:57
|
(22) при проведении заказа покупателя я запросом не обращаюсь к таблице заказов, т.е. нет запроса, куда можно вписать "Для изменения". Если я правильно вас понял
|
|
24
Фрэнки
13.09.16
✎
13:59
|
(18) ну сам же пишешь в 0, что обработки посмотрел, а все они только чего-то читают, но не пишут. Вот я и думаю, что раз ты посмотрел, то там же видно по запросам должно быть, что попытки заблокирывать считываемые таблицы есть или их там просто нет. И тогда блочить будут вовсе не эти обработки, а зря на них думаешь
|
|
25
Фрэнки
13.09.16
✎
14:01
|
может быть под словом "в обработках" у тебя подразумеваются предопределенные процедуры ОбработкаПроведения или еще чего-то подобное. Тем более, что речь о наличии в базе каких-то доработок тоже была
|
|
26
Fuas4
13.09.16
✎
14:06
|
(25) нет, обработки классические, из ветки "Обработки". Самый долгий запрос выглядит вот так:
ВЫБРАТЬ РАЗРЕШЕННЫЕ //РАЗЛИЧНЫЕ
НЕ ЕСТЬNULL(ЗапросПрайс.Номенклатура.ВестиУчетПоХарактеристикам, ИСТИНА) КАК НетХарактеристик,
ЗапросПрайс.ТипЦен.ПорядокОкругления КАК ПорядокОкругления,
ЗапросПрайс.ТипЦен.ОкруглятьВБольшуюСторону КАК ОкруглятьВБольшуюСторону,
ЗапросПрайс.ТипЦен,
ЗапросПрайс.ТипЦен.Представление КАК ТипЦенПредставление,
ЗапросПрайс.ЦеноваяГруппа,
ЗапросПрайс.ЦеноваяГруппа.Представление КАК ЦеноваяГруппаПредставление,
ЗапросПрайс.Номенклатура,
ЗапросПрайс.Номенклатура.Представление КАК НоменклатураПредставление,
ЗапросПрайс.ХарактеристикаНоменклатуры,
ЗапросПрайс.ХарактеристикаНоменклатуры.Представление КАК ХарактеристикаНоменклатурыПредставление,
Остатки.Остаток,
МестаХранения.МестоХранения КАК Стеллаж,
МестаХранения.МестоХранения.Представление КАК СтеллажПредставление,
Штрихкоды.Штрихкод КАК ШтрихКод,
ВЫБОР КОГДА ЗапросПрайс.Цена <> 0 ТОГДА
ЗапросПрайс.ЕдиницаИзмерения.Представление
ИНАЧЕ
&ПустаяСтрока
КОНЕЦ КАК ЕдиницаИзмерения,
ВЫБОР КОГДА ЗапросПрайс.Цена <> 0 ТОГДА
ЗапросПрайс.ВалютаПрайса.Представление
ИНАЧЕ
&ПустаяСтрока
КОНЕЦ КАК Валюта,
ВЫБОР КОГДА ЗапросПрайс.Валюта = ЗапросПрайс.ВалютаПрайса
ИЛИ ЗапросПрайс.Цена = 0 ТОГДА
ЗапросПрайс.Цена
ИНАЧЕ
ЗапросПрайс.Цена * ВЫБОР КОГДА КурсыВалютСрезПоследних.Курс = 0 ТОГДА
1
ИНАЧЕ
КурсыВалютСрезПоследних.Курс КОНЕЦ
* ВЫБОР КОГДА КурсыВалютСрезПоследнихОтчет.Кратность = 0 ТОГДА
1
ИНАЧЕ
КурсыВалютСрезПоследнихОтчет.Кратность КОНЕЦ
/ ВЫБОР КОГДА КурсыВалютСрезПоследнихОтчет.Курс = 0 ТОГДА
1
ИНАЧЕ
КурсыВалютСрезПоследнихОтчет.Курс КОНЕЦ
/ ВЫБОР КОГДА КурсыВалютСрезПоследних.Кратность = 0 ТОГДА
1
ИНАЧЕ
КурсыВалютСрезПоследних.Кратность КОНЕЦ
КОНЕЦ КАК Цена//СВОЙСТВА
//ПРЕДСТАВЛЕНИЯ_СВОЙСТВА
ИЗ
(ВЫБРАТЬ
ЦеныБазовые.ТипЦен КАК ТипЦен,
ВЫБОР КОГДА &ВВалютеОтчета = ЛОЖЬ ТОГДА
ВЫБОР КОГДА ЦеныБазовые.ТипЦен.Рассчитывается ТОГДА
ЦеныБазовые.ТипЦен.ВалютаЦены
ИНАЧЕ
МИНИМУМ(
ВЫБОР КОГДА ЦеныБазовые.ТипЦен.Рассчитывается ТОГДА
ВЫБОР КОГДА ЦеныРасчетные.Валюта ЕСТЬ NULL ТОГДА
ЦеныБазовые.Валюта
ИНАЧЕ
ВЫБОР КОГДА ЦеныБазовые.СпособРасчетаЦены = &СпособНаценка ТОГДА
ЦеныРасчетные.Валюта
ИНАЧЕ
ЦеныБазовые.ВалютаДиапазона
КОНЕЦ
КОНЕЦ
ИНАЧЕ
ЦеныБазовые.Валюта
КОНЕЦ
)
КОНЕЦ
ИНАЧЕ
&ВалютаОтчета
КОНЕЦ КАК ВалютаПрайса,
ЦеныБазовые.ЦеноваяГруппа,
ЦеныБазовые.Номенклатура,
ЦеныБазовые.ХарактеристикаНоменклатуры,
МИНИМУМ(
ВЫБОР КОГДА ЦеныБазовые.ТипЦен.Рассчитывается ТОГДА
ЦеныРасчетные.ЕдиницаИзмерения
ИНАЧЕ
ЦеныБазовые.ЕдиницаИзмерения
КОНЕЦ
) КАК ЕдиницаИзмерения,
МИНИМУМ(
ВЫБОР КОГДА ЦеныБазовые.ТипЦен.Рассчитывается ТОГДА
ВЫБОР КОГДА ЦеныРасчетные.Валюта ЕСТЬ NULL ТОГДА
ЦеныБазовые.Валюта
ИНАЧЕ
ВЫБОР КОГДА ЦеныБазовые.СпособРасчетаЦены = &СпособНаценка ТОГДА
ЦеныРасчетные.Валюта
ИНАЧЕ
ЦеныБазовые.ВалютаДиапазона
КОНЕЦ
КОНЕЦ
ИНАЧЕ
ЦеныБазовые.Валюта
КОНЕЦ
) КАК Валюта,
МИНИМУМ(
ВЫБОР КОГДА ЦеныБазовые.ТипЦен.Рассчитывается ТОГДА
ВЫБОР КОГДА ЦеныБазовые.СпособРасчетаЦены = &СпособНаценка ТОГДА
ВЫБОР КОГДА ЦеныРасчетные.Цена ЕСТЬ NULL ТОГДА
0
ИНАЧЕ
ЦеныРасчетные.Цена * (1 + ЦеныБазовые.ПроцентСкидкиНаценки / 100)
КОНЕЦ
ИНАЧЕ
ЦеныБазовые.ЦенаДиапазона
КОНЕЦ
ИНАЧЕ
ЦеныБазовые.Цена
КОНЕЦ
) КАК Цена
ИЗ
(ВЫБРАТЬ
СписокНоменклатуры.Номенклатура КАК Номенклатура,
СписокНоменклатуры.Номенклатура.ЦеноваяГруппа КАК ЦеноваяГруппа,
СписокНоменклатуры.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
СпрТипЦен.ТипЦен КАК ТипЦен,
ЦеныНоменклатуры.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0) КАК Цена,
ВЫБОР КОГДА ЦеныНоменклатуры.Номенклатура ЕСТЬ NULL ТОГДА
СпрТипЦен.ПроцентСкидкиНаценки
ИНАЧЕ
ЕСТЬNULL(ЦеныНоменклатуры.ПроцентСкидкиНаценки, ЦеныНоменклатуры.ТипЦен.ПроцентСкидкиНаценки)
КОНЕЦ КАК ПроцентСкидкиНаценки,
ВЫБОР КОГДА ЦеныНоменклатуры.Номенклатура ЕСТЬ NULL ТОГДА
СпрТипЦен.СпособРасчетаЦены
ИНАЧЕ
ЕСТЬNULL(ЦеныНоменклатуры.СпособРасчетаЦены, ЦеныНоменклатуры.ТипЦен.СпособРасчетаЦены)
КОНЕЦ КАК СпособРасчетаЦены,
ЕСТЬNULL(ШкалыДиапазонов.Цена, 0) КАК ЦенаДиапазона,
ЕСТЬNULL(ШкалыДиапазонов.ВерхняяГраница, 0) КАК ВерхняяГраница,
ЕСТЬNULL(ЦеныНоменклатуры.Валюта, СпрТипЦен.Валюта) КАК Валюта,
ШкалыДиапазонов.Валюта КАК ВалютаДиапазона
ИЗ
(ВЫБРАТЬ
СпрХарактеристики.Владелец КАК Номенклатура,
СпрХарактеристики.Ссылка КАК ХарактеристикаНоменклатуры
ИЗ Справочник.ХарактеристикиНоменклатуры КАК СпрХарактеристики
{ГДЕ СпрХарактеристики.Владелец.* КАК Номенклатура,
СпрХарактеристики.Владелец.ЦеноваяГруппа.* КАК ЦеноваяГруппа}
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
СпрНоменклатура.Ссылка,
ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)
ИЗ Справочник.Номенклатура КАК СпрНоменклатура
{ГДЕ СпрНоменклатура.Ссылка.* КАК Номенклатура,
СпрНоменклатура.Ссылка.ЦеноваяГруппа.* КАК ЦеноваяГруппа}
) КАК СписокНоменклатуры
СОЕДИНЕНИЕ
(ВЫБРАТЬ
СправочникЦен.Ссылка КАК ТипЦен,
СправочникЦен.ВалютаЦены КАК Валюта,
СправочникЦен.ПроцентСкидкиНаценки КАК ПроцентСкидкиНаценки,
СправочникЦен.СпособРасчетаЦены КАК СпособРасчетаЦены
ИЗ
Справочник.ТипыЦенНоменклатуры КАК СправочникЦен
{ГДЕ СправочникЦен.Ссылка.* КАК ТипЦен}
) КАК СпрТипЦен
ПО НЕ СписокНоменклатуры.Номенклатура.ЭтоГруппа
И НЕ СписокНоменклатуры.Номенклатура.Набор
ЛЕВОЕ СОЕДИНЕНИЕ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, {Номенклатура.* КАК Номенклатура,
Номенклатура.ЦеноваяГруппа.* КАК ЦеноваяГруппа, ТипЦен.* КАК ТипЦен}) КАК ЦеныНоменклатуры
ПО ЦеныНоменклатуры.Номенклатура = СписокНоменклатуры.Номенклатура
И ЦеныНоменклатуры.ТипЦен = СпрТипЦен.ТипЦен
И ЦеныНоменклатуры.ХарактеристикаНоменклатуры = СписокНоменклатуры.ХарактеристикаНоменклатуры
ЛЕВОЕ СОЕДИНЕНИЕ
(ВЫБРАТЬ
ДиапазоныЦен.ТипЦен,
ДиапазоныЦен.ВерхняяГраница,
ДиапазоныЦен.Цена,
ДиапазоныЦен.Валюта,
ДиапазоныЦен.ПЕРИОД КАК Период
ИЗ
РегистрСведений.ДиапазоныЦенДляНаценки.СрезПоследних(&Дата,
{ТипЦен.* КАК ТипЦен}) КАК ДиапазоныЦен
СОЕДИНЕНИЕ
(ВЫБРАТЬ
ДиапазоныЦенДляНаценкиСрезПоследних.ТипЦен,
МАКСИМУМ(ДиапазоныЦенДляНаценкиСрезПоследних.ПЕРИОД) КАК Период
ИЗ
РегистрСведений.ДиапазоныЦенДляНаценки.СрезПоследних(&Дата,
{ТипЦен.* КАК ТипЦен}) КАК ДиапазоныЦенДляНаценкиСрезПоследних
СГРУППИРОВАТЬ ПО
ДиапазоныЦенДляНаценкиСрезПоследних.ТипЦен
) КАК МаксДиапазоныЦен
ПО ДиапазоныЦен.ТипЦен = МаксДиапазоныЦен.ТипЦен
И ДиапазоныЦен.Период = МаксДиапазоныЦен.Период
) КАК ШкалыДиапазонов
ПО ШкалыДиапазонов.ТипЦен = СпрТипЦен.ТипЦен
И СпрТипЦен.ТипЦен.Рассчитывается
) КАК ЦеныБазовые
ЛЕВОЕ СОЕДИНЕНИЕ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, {Номенклатура.* КАК Номенклатура,
Номенклатура.ЦеноваяГруппа.* КАК ЦеноваяГруппа}) КАК ЦеныРасчетные
ПО ЦеныБазовые.Номенклатура = ЦеныРасчетные.Номенклатура
И ЦеныБазовые.ХарактеристикаНоменклатуры = ЦеныРасчетные.ХарактеристикаНоменклатуры
И ЦеныБазовые.ТипЦен.БазовыйТипЦен = ЦеныРасчетные.ТипЦен
ГДЕ
НЕ ЦеныБазовые.ТипЦен.Рассчитывается
ИЛИ ЦеныБазовые.СпособРасчетаЦены <> &СпособДиапазон
ИЛИ (ЦеныБазовые.СпособРасчетаЦены = &СпособДиапазон И ЦеныРасчетные.Цена МЕЖДУ 0.000001 И ЦеныБазовые.ВерхняяГраница-0.000001)
СГРУППИРОВАТЬ ПО
ЦеныБазовые.ТипЦен,
ЦеныБазовые.ЦеноваяГруппа,
ЦеныБазовые.Номенклатура,
ЦеныБазовые.ХарактеристикаНоменклатуры
) КАК ЗапросПрайс
{ЛЕВОЕ
СОЕДИНЕНИЕ
(ВЫБРАТЬ
НесвернутыеОстатки.Номенклатура КАК НоменклатураОст,
НесвернутыеОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатурыОст,
Сумма(НесвернутыеОстатки.Остаток) КАК Остаток
ИЗ
(ВЫБРАТЬ
Ост.Номенклатура.Ссылка КАК Номенклатура,
Ост.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
Ост.КоличествоОстаток КАК Остаток
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки(&Дата, {Склад.* КАК Склад,
Склад.ВидСклада.* КАК ВидСклада, Номенклатура.* КАК Номенклатура,
Номенклатура.ЦеноваяГруппа.* КАК ЦеноваяГруппа}) КАК Ост
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
НТТ.Номенклатура.Ссылка КАК Номенклатура,
НТТ.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
НТТ.КоличествоОстаток КАК Остаток
ИЗ
РегистрНакопления.ТоварыВНТТ.Остатки(&Дата, {Склад.* КАК Склад,
Склад.ВидСклада.* КАК ВидСклада, Номенклатура.* КАК Номенклатура,
Номенклатура.ЦеноваяГруппа.* КАК ЦеноваяГруппа}) КАК НТТ
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
Розница.Номенклатура.Ссылка КАК Номенклатура,
Розница.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
Розница.КоличествоОстаток КАК Остаток
ИЗ
РегистрНакопления.ТоварыВРознице.Остатки(&Дата, {Склад.* КАК Склад,
Склад.ВидСклада.* КАК ВидСклада, Номенклатура.* КАК Номенклатура,
Номенклатура.ЦеноваяГруппа.* КАК ЦеноваяГруппа}) КАК Розница
) КАК НесвернутыеОстатки
СГРУППИРОВАТЬ ПО
НесвернутыеОстатки.Номенклатура,
НесвернутыеОстатки.ХарактеристикаНоменклатуры
) КАК Остатки
ПО
ЗапросПрайс.Номенклатура = Остатки.НоменклатураОст
И ЗапросПрайс.ХарактеристикаНоменклатуры = Остатки.ХарактеристикаНоменклатурыОст
}
СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&Дата) КАК КурсыВалютСрезПоследних
ПО ЗапросПрайс.Валюта = КурсыВалютСрезПоследних.Валюта
И ЗапросПрайс.Цена <> 0
СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&Дата) КАК КурсыВалютСрезПоследнихОтчет
ПО ЗапросПрайс.ВалютаПрайса = КурсыВалютСрезПоследнихОтчет.Валюта
{
ЛЕВОЕ СОЕДИНЕНИЕ
(ВЫБРАТЬ
МестаХраненияНоменклатуры.Номенклатура КАК НоменклатураХранения,
МестаХраненияНоменклатуры.МестоХранения КАК МестоХранения
ИЗ
РегистрСведений.МестаХраненияНоменклатуры КАК МестаХраненияНоменклатуры
СОЕДИНЕНИЕ
(ВЫБРАТЬ
МестаХраненияНоменклатуры.Номенклатура КАК Номенклатура,
МИНИМУМ(МестаХраненияНоменклатуры.Приоритет) КАК Приоритет
ИЗ
РегистрСведений.МестаХраненияНоменклатуры КАК МестаХраненияНоменклатуры
СГРУППИРОВАТЬ ПО
Номенклатура
) КАК МинПриоритет
ПО МестаХраненияНоменклатуры.Номенклатура = МинПриоритет.Номенклатура
И МестаХраненияНоменклатуры.Приоритет = МинПриоритет.Приоритет
) КАК МестаХранения
ПО ЗапросПрайс.Номенклатура = МестаХранения.НоменклатураХранения
}
{
ЛЕВОЕ СОЕДИНЕНИЕ
(ВЫБРАТЬ
Штрихкоды.ШтрихКод КАК ШтрихКод,
Штрихкоды.Владелец КАК Владелец,
Штрихкоды.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатурыШтрихКода
ИЗ
РегистрСведений.Штрихкоды КАК Штрихкоды
) КАК ШтрихКоды
ПО ЗапросПрайс.Номенклатура = Штрихкоды.Владелец
И ЗапросПрайс.ХарактеристикаНоменклатуры = Штрихкоды.ХарактеристикаНоменклатурыШтрихКода
}
//СОЕДИНЕНИЯ
{ГДЕ
ИСТИНА КАК СвойстваИКатегории
//СВОЙСТВА
//КАТЕГОРИИ
}
УПОРЯДОЧИТЬ ПО
ЗапросПрайс.ТипЦен,
ЗапросПрайс.ЦеноваяГруппа.Порядок,
ЗапросПрайс.Номенклатура,
ЗапросПрайс.ХарактеристикаНоменклатуры
ИТОГИ МАКСИМУМ(Цена), МИНИМУМ(Валюта), МИНИМУМ(ЕдиницаИзмерения), МИНИМУМ(Остаток),
МИНИМУМ(Стеллаж) , МИНИМУМ(СтеллажПредставление), МИНИМУМ(ШтрихКод),
МИНИМУМ(НетХарактеристик), МИНИМУМ(ЦеноваяГруппа)
//ИТОГИ
ПО
ЗапросПрайс.ТипЦен,
ЗапросПрайс.ЦеноваяГруппа,
ЗапросПрайс.Номенклатура,
ЗапросПрайс.ХарактеристикаНоменклатуры
//ОБЩИЕ_СВОЙСТВА
АВТОУПОРЯДОЧИВАНИЕ
|
|
27
Fuas4
13.09.16
✎
14:08
|
Результат анализа ЦУПа: В (26) первый запрос из скриншота
|
|
28
Фрэнки
13.09.16
✎
15:12
|
извиняюсь, какой-то бред. Обращения к виртуальным таблицам срезов последних и остатков мало того, что долго выполняется на этом сервере, но еще и блочит регистраторы.
Так еще окажется, что Заказы покупателя просто такой документ, который используют чаще всего, а не потому, что он чем-то хуже остальных, которые используются просто реже.
|
|
29
Fuas4
13.09.16
✎
15:28
|
(28) так может не запросы блочат таблицы не запросы, а просто заказы часто проводят и они сами друг друга блочат? PG же блокирует всю таблицу
|
|
30
xafavute
13.09.16
✎
15:31
|
постгре от файловой мало чем отличается по блокировкам
|
|
31
Fuas4
13.09.16
✎
15:36
|
(30) в файловой не было проблем с блокировками
|
|
32
xafavute
13.09.16
✎
15:37
|
(31) тогда размер просто меньше был
|
|
33
xafavute
13.09.16
✎
15:38
|
Режим совместимости какой стоит?
|
|
34
xafavute
13.09.16
✎
15:39
|
(27) Это не блокировки, а длительные запросы
|
|
35
xafavute
13.09.16
✎
15:40
|
То бишь ожидания на блокировках, а не сами блокировки.
Вне транзакции ничего не блокируется
|
|
36
Fuas4
13.09.16
✎
15:52
|
(33) 8.2.13 (35) вот я в (0) и спрашивал, поможет ли исправление (27) в борьбе с дедлоками
|
|
37
xafavute
13.09.16
✎
15:53
|
(36) перейди хотя бы на 8.2.14 там константы по другому хранятся
|
|
38
xafavute
13.09.16
✎
15:54
|
(36) вообще пока ниодного дедлока ты не предоставил здесь.
делдлок - это 2 блокировки минимум
|
|
39
Фрэнки
13.09.16
✎
15:58
|
(38) в (14) лог есть. видны там блокировки. Нужно только сопоставить с журналом другим и увидеть, что это один пользователь ожидает освобождения таблицы от другого процесса
|
|
40
Fuas4
13.09.16
✎
16:00
|
(39) с каким журналом это сопоставить?
|
|
41
Fuas4
13.09.16
✎
16:01
|
(37) перейду
|
|
42
Fuas4
13.09.16
✎
16:06
|
(37) Открыл щас типовую УТ 10.3, самую новую. там тоже 8.2.13. М.б. не стоит переходить на 8.2.14? Разрабы. поди,не зря остались на текущей совместимости
|
|
43
xafavute
13.09.16
✎
16:27
|
(42) ну не хочешь не переходи.
Живи с блокировками
|
|
44
Фрэнки
13.09.16
✎
16:39
|
(40) ну допустим в обычном журнале лог работы пользователей тоже есть сообщения, что есть отказы в записях документов и успешные записи. С номерами сеансов и процессов. Может там явно будет видно, что это другие пользователи с таким же документами, а поскольку совместимость старая и упр.блокировок нет, то будет ошибка.
И в тех настройках, о которых Cyberhawk писал выше, там есть настройки на увеличение времени ожидания блокировок, чтоб не выдавало ошибки, а подвисало в ожидании
|
|
45
Фрэнки
13.09.16
✎
16:40
|
и (6) пост тоже - увеличить ожидание
|
|
46
xafavute
13.09.16
✎
16:43
|
(44) На дедлоки это не распространяется
|
|
47
Fuas4
13.09.16
✎
16:48
|
(45) увеличил ожидание с 20 секунд до 40, не помогло. Инфу с ИТСа по настройкам скинул админу, читает пока. А я попутно ищу, что на стороне 1с могу сделать
|
|
48
Fuas4
13.09.16
✎
16:48
|
(43) я к тому, что не повалится ли что-нибудь после перехода? ИЛи разрабы тупо забыли поменять совместимостЬ?
|
|
49
xafavute
13.09.16
✎
16:49
|
(48) может конечно
|
|
50
xafavute
13.09.16
✎
16:49
|
в 8.2.14 нельзя сериализовть половину данных, что в 8.2.13 можно было
|
|
51
dmrjan
13.09.16
✎
16:55
|
Там есть параметр
deadlock_timeout = 1s
попробуй поменять на 2s
Больше 2 секунд не не ставь.
|
|
52
Fuas4
13.09.16
✎
16:56
|
(50) тогда я посижу на текущей версии совместимости :)
(51) Ок, попробую, спасибо
|
|
53
Fuas4
13.09.16
✎
17:07
|
(51) deadlock_timeout отключен сейчас
|
|
54
dmrjan
13.09.16
✎
23:18
|
Он не отключен, просто если параметр закомментирован, то по-умолчанию действует указанный параметр, т.е. 1s.
|
|
55
dmrjan
13.09.16
✎
23:25
|
И еще - ставьте актуальную версию PostgreSQL отсюда:
PostgreSQL 9.4.9 для 8.3.7
Если ставили под Windows, то по-умолчанию при установке предлагается оптимизировать конфиг автоматически. Ну а далее по-необходимости уже тюнить ручками.
|
|
56
dmrjan
13.09.16
✎
23:37
|
(4) По поводу фонового запроса. Для PostgreSQL является очень нехорошим запрос, который вместо того, чтобы один раз сделать запрос, в момент его выполнения рассчитать нужные параметры и только после после этого произвести запись, начинает постоянно обращаться к одной и той же таблице и методом перебора производить расчеты. И если MSSQL это издевательство более-менее переносит (хотя на производительности это также сказывается крайне негативно, т.к. у MSSQL возникают блокировки на чтение), то для PostgreSQL это недопустимо.
|
|
57
Fuas4
14.09.16
✎
10:12
|
(54) понял, поставил 2s. (55) PostgreSQL как раз по этой ссылке и качали. (56) учту и поищу такие моменты, спасибо!
|
|
58
xafavute
14.09.16
✎
10:16
|
(51) Дедлоск не решается таймаутом
|
|
59
dmrjan
14.09.16
✎
11:12
|
(58) с 1С 1 секунды явно недостаточно, практикой проверено.
|
|