Имя: Пароль:
1C
1С v8
Сервер 1С:Предприятие на PostgreSQL и этот медленный запрос
,
0 Mr_Best
 
15.05.16
21:56
Всем доброй воли!
Купили и настроили новехонький сервер:
  - Intel(R) Xeon(R) CPU E5-2640 v3 @ 2.60GHz 2.60GHz (2 процессора)
  - ОЗУ - 64 ГБ
  - RAID диски с энергонезависимой памятью
  - Windows Server 2012 R2 Standart x64
  - 1С:Предприятие 8.3 (8.3.8.1652)
  - СУБД PostgreSQL для Windows (64-bit)

После чего были сделаны настройки конфигурационного файла PostgreSQL:
  - shared_buffers = 12GB
  - temp_buffers = 4GB
  - work_mem = 1GB
  - maintenance_work_mem = 512MB
  - enable_nestloop = off
  - seq_page_cost = 0.1
  - random_page_cost = 0.4
  - cpu_operator_cost = 0.00025
  - effective_cache_size = 32GB
  - default_statistics_target = 10000
  
  - online_analyze.threshold = 50
  - online_analyze.scale_factor = 0.1
  - online_analyze.enable = off
  - online_analyze.verbose = off
  - online_analyze.min_interval = 10000
  - online_analyze.table_type = 'all'
  - plantuner.fix_empty_table = false

Хочу обратить внимание, что вначале были сделаны минимальные настройки shared_buffers, work_mem, effective_cache_size. Когда стало понятно, что не помогает начал добавлять остальные, по одному, и комбинировал их, и много чего делал, но не помогает!

Собственно в чем проблема:
На сервер установлена конфигурация: Риэлтор. Управление продажами недвижимости для "1С:Управление торговлей 8", редакция 11.1 (11.1.9.61/2.7.3.34), в данной конфигурации есть отчет "Квартирограмма" который работает медленно, а точнее:
  - На postgres: 330-350 сек.
  - На MS SQL Epress: 10-12 сек
  - В файловом варианте: 10-12 сек

Что характерно, все остальное (открытие других отчетов, запись, проведение документов) летает как ракета!
Изменение режима debug сервера 1С роли не играет.

Посмотрев глубже, увидел в отчете тот самый запрос:

ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ПлощадиОбъектовНедвижимости.ОбщаяПлощадь,
    ПлощадиОбъектовНедвижимости.ЖилаяПлощадь,
    ПлощадиОбъектовНедвижимости.ПлощадьКухни,
    ПлощадиОбъектовНедвижимости.КоличествоЖилыхКомнат,
    ПлощадиОбъектовНедвижимости.ПлощадиЖилыхКомнат,
    УсловияПродажиОбъектов.ТипОперации,
    УсловияПродажиОбъектов.Валюта,
    УсловияПродажиОбъектов.ЦенаЗаКвМ,
    УсловияПродажиОбъектов.Стоимость,
    УсловияПродажиОбъектов.КоличествоКомнатДляПродажиАренды,
    УсловияПродажиОбъектов.ТипПродажи,
    УсловияПродажиОбъектов.ВозможнаИпотека,
    УсловияПродажиОбъектов.ПереуступкаПрав,
    УсловияПродажиОбъектов.ПериодичностьАренды,
    УсловияПродажиОбъектов.СрокАренды,
    УсловияПродажиОбъектов.ТребуетсяЗалог,
    УсловияПродажиОбъектов.ПроцентЗалога,
    УсловияПродажиОбъектов.ПроцентКомиссииРиэлтора,
    УсловияПродажиОбъектов.Субаренда,
    УсловияПродажиОбъектов.ЦенаВключаетНДС,
    УсловияПродажиОбъектов.ФормаСделкиПоАренде,
    УсловияПродажиОбъектов.ЗаЧейСчетРемонт,
    ПравообладателиОбъектов.Партнер КАК Правообладатель,
    СтатусыОбъектов.Статус,
    СтатусыОбъектов.Период КАК ДатаИзмененияСтатуса,
    ПараметрыОбъектовНедвижимостиПоБТИ.ОбщаяПлощадь КАК ОбщаяПлощадьБТИ,
    ПараметрыОбъектовНедвижимостиПоБТИ.ЖилаяПлощадь КАК ЖилаяПлощадьБТИ,
    ПараметрыОбъектовНедвижимостиПоБТИ.ПлощадьКухни КАК ПлощадьКухниБТИ,
    ПараметрыОбъектовНедвижимостиПоБТИ.КоличествоЖилыхКомнат КАК КоличествоЖилыхКомнатБТИ,
    ПараметрыОбъектовНедвижимостиПоБТИ.ПлощадиЖилыхКомнат КАК ПлощадиЖилыхКомнатБТИ
ИЗ
    РегистрСведений.УПН_ПлощадиОбъектовНедвижимости.СрезПоследних(&ДатаСреза, ОбъектНедвижимости = &Объект) КАК ПлощадиОбъектовНедвижимости
        ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.УПН_УсловияПродажиОбъектов.СрезПоследних(&ДатаСреза, ОбъектНедвижимости = &Объект) КАК УсловияПродажиОбъектов
        ПО (ИСТИНА)
        ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.УПН_ПравообладателиОбъектов.СрезПоследних(&ДатаСреза, ОбъектНедвижимости = &Объект) КАК ПравообладателиОбъектов
        ПО (ИСТИНА)
        ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.УПН_СтатусыОбъектов.СрезПоследних(&ДатаСреза, ОбъектНедвижимости = &Объект) КАК СтатусыОбъектов
        ПО (ИСТИНА)
        ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.УПН_ПараметрыОбъектовНедвижимостиПоБТИ.СрезПоследних(&ДатаСреза, ОбъектНедвижимости = &Объект) КАК ПараметрыОбъектовНедвижимостиПоБТИ
        ПО (ИСТИНА)

Собственно вопрос: что еще можно предпринять с postgres для того, что бы данный запрос работал быстро? Кто сталкивался? Иль я недонастроил, иль разработчики кривой запрос сделали (не рассчитанный на postgres)? Помогите коллеги!
1 Mr_Best
 
15.05.16
21:59
Забыл версию Postgres указать: 9.4.2-1.1C
2 Smallrat
 
15.05.16
22:00
по памяти из "пятничной" ветки про то как админов выгнали и всё упало: кто-то там упомянул что на постгри некоторые полные соединения вгоняют её в ступор - надо из заменять на объединения левого и правого соединений.
3 Mr_Best
 
15.05.16
22:01
(2) - получается что запрос косячный ?
4 Smallrat
 
15.05.16
22:07
(3) вероятно "просто" особенность работы с постгри)
5 mgk2
 
15.05.16
22:09
разработчики отраслевой специфики про постгрес не думали
6 mgk2
 
15.05.16
22:11
заточи квартирограмму под постгрес и радуйся жизни.
7 Mr_Best
 
15.05.16
22:13
(5) похоже на то, но все же, может стоит посмотреть в сторону настроек планировщика заданий? Иль текущие настройки являются достаточными для нормальной работы postgres ?
8 Armando
 
15.05.16
22:14
Я бы попробовал этот запрос переписать на ОБЪЕДИНИТЬ ВСЕ с последующей группировкой
9 Armando
 
15.05.16
22:16
кстати, автор, а срезы по отдельности норм работают?
10 H A D G E H O G s
 
15.05.16
22:17
Я бы попробовал нанять киллера на написателя этого запроса.
11 H A D G E H O G s
 
15.05.16
22:20
Этот совет никак не относится к PostGree в частности; это общее пожелание.

К Постгрии относится следующее:

http://its.1c.ru/db/metod8dev#content:1556:hdoc
12 Mr_Best
 
15.05.16
22:24
(11) Спасибо H A D G E H O G за помощь! Тема закрыта.
13 Mr_Best
 
15.05.16
22:25
Да собственно все спасибо! Чего это я ... :)