Имеем файловую БД 1С 8.2 БП 2.0 примерно размером с 1 Гб. Бухгалтера жалуются на жутко медленную работу, подвисает при проводках. Перенёс эту базу на тестовый стенд. 2 ПК core 2 duo 2.7Гц, 4Гб памяти, 100 мб сеть.
ПК1 - сервер, база лежит тут, расшарена. ПК2 клиент.

Замеченная проблема:
Открываем базу на сервере. Всё.

Открываем базу на клиенте (таким образом отключается smb кэшироавние и все запросы гоняются по сети), банковские выписки, открываем выписку, закрываем выписку нажатием кнопки "ОК". Всё висит секунд 7, сеть забивается на 60-70%
Запускаю отладчик, и делаю туже операцию с замером производительности. Всё повторяется.
В логе:

```1c
    ЖурналДокументов.БанковскиеВыписки.Форма.ФормаСписка.Форма ТаблицаИтогов = Запрос.Выполнить().Выгрузить(); 1 5,100607сек 92,40%
    Документ.СписаниеСРасчетногоСчета.Форма.ФормаДокумента.Форма ЗаписатьВФорме(РежимЗаписи); 1 1,066584сек 4,09%
    ...
```

То есть очень долго выполняется функция:

```1c
    // Возвращает таблицу сумм остатков и оборотов за указанный день по указанному счету
    //
    Функция ПолучитьИтоги(ТекДата, ТекБанковскийСчет)
```

Эти же лаги наблюдаются просто при переходе в журнале выписок с одного дня на другой, данные о состоянии на начало дня, конец, списаний и поступлений обновляются с задержкой 5 - 8 секунд, при этом забивается сеть.
При этом проводок за день всего около 30.

Даже если запустить эту базу локально в однопользовательском режиме, Функция ПолучитьИтоги(ТекДата, ТекБанковскийСчет) всё равно выполняется дольше всех (0.5сек. 38%). Но естественно в локальном режиме это не заметно.

Это нормально? Журнал выписок даже не поскролить, каждый скрол зависает на 5-8 сек.

При этом, на этом же стенде другая база размером 1.5Г, с объёмом ежедневных проводок под 100, работает отлично, сеть загружается не более чем на 5%.

ПС: Проблем с железом нет, диски, память, проц простаивают. Сеть только между 2 этими ПК. Про сетевой кэш читал, что он отключается заню. Конфа типовая, без изменений.
---
1. Сделайте ТиИ с реиндексацией и упаковкой (на копии), даст результат?
2. Попробуйте запустить нагрузочный тест Гилева по сети, каков индекс?
3. Сравните размеры таблиц в базах которая тормозит и которая нет (http://infostart.ru/public/176476/)
---
disazoz, Итоги, скорее всего, рассчитаны на более позднюю дату
---
На какую дату рассчитаны итоги?
---
Это текст запроса данной функции, подбираются в запросе остатки и обороты. по всей видимости итоги давно не актуальны

```1c
    Запрос.Текст =
    "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    | ВЫБОР
    | КОГДА БанковскиеСчета.ВалютаДенежныхСредств = &ВалютаРеглУчета
    | ТОГДА ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстаток
    | ИНАЧЕ ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаНачальныйОстаток
    | КОНЕЦ КАК НачальныйОстаток,
    | ВЫБОР
    | КОГДА БанковскиеСчета.ВалютаДенежныхСредств = &ВалютаРеглУчета
    | ТОГДА ХозрасчетныйОстаткиИОбороты.СуммаОборотДт
    | ИНАЧЕ ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаОборотДт
    | КОНЕЦ КАК ВсегоПоступило,
    | ВЫБОР
    | КОГДА БанковскиеСчета.ВалютаДенежныхСредств = &ВалютаРеглУчета
    | ТОГДА ХозрасчетныйОстаткиИОбороты.СуммаОборотКт
    | ИНАЧЕ ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаОборотКт
    | КОНЕЦ КАК ВсегоСписано,
    | ВЫБОР
    | КОГДА БанковскиеСчета.ВалютаДенежныхСредств = &ВалютаРеглУчета
    | ТОГДА ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток
    | ИНАЧЕ ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаКонечныйОстаток
    | КОНЕЦ КАК КонечныйОстаток
    |ИЗ
    | РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(
    | НАЧАЛОПЕРИОДА(&ДатаИтогов, ДЕНЬ),
    | КОНЕЦПЕРИОДА(&ДатаИтогов, ДЕНЬ),
    | ,
    | ДвиженияИГраницыПериода,
    | ,
    | ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.БанковскиеСчета),
    | Организация = &Организация
    | И Субконто1 = &БанковскийСчетИтогов) КАК ХозрасчетныйОстаткиИОбороты
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.БанковскиеСчета КАК БанковскиеСчета
    | ПО ХозрасчетныйОстаткиИОбороты.Субконто1 = БанковскиеСчета.Ссылка
    |ГДЕ
    | БанковскиеСчета.Ссылка = &БанковскийСчетИтогов";

    Запрос.УстановитьПараметр("ДатаИтогов", ТекДата);
    Запрос.УстановитьПараметр("БанковскийСчетИтогов", ТекБанковскийСчет);
    Запрос.УстановитьПараметр("Организация", ТекБанковскийСчет.Владелец);
    Запрос.УстановитьПараметр("ВалютаРеглУчета", мВалютаРегламентированногоУчета);

    ТаблицаИтогов = Запрос.Выполнить().Выгрузить();

    Возврат ТаблицаИтогов;
```
---
Jen1978, да, именно этот запрос аномально долго, как мне кажется, исполнятется. И генерирует много запростов к БД (судя по технологическому журналу), вот только почему? итоги расчитаны на 28.02.2013, всё ок.

(5) CaptainMorgan, ОС обе Windows XP SP3, диски sata2, без рейда. Про запуск локально писал, работает быстро, но этот запрос все равно на верхушке топа в отладчике. Из ресурсов, упираюсь в сеть, перевести на гигабит можно(перевести на клиент сервер), при условии что это нормальное поведение базы, в чём я сомневаюсь. 2-ве больших базы, один стенд. Одна тормозит другая нет, почему?!
---
Не достаточно исследована проблема.
Какая ОС на сервере?
Какие диски?
Пробовал исключить сеть?
Запустить прям на сервере. Выполнить тестирование исправление. Попробовать использование клиент-сервер х64
---
1. Сделайте ТиИ с реиндексацией и упаковкой (на копии), даст результат?
2. Попробуйте запустить нагрузочный тест Гилева по сети, каков индекс?
3. Сравните размеры таблиц в базах которая тормозит и которая нет (http://infostart.ru/public/176476/)
---
AlexInqMetal,
1)Делал, без результатов
2)Тест Гилева по сети выдает около 17
3)Действительно в тормозной базе РегистрБухгалтерии.Хозрасчетный значительно больше чем в не тормозной. Это можно както поправить?

Большая (1.5 Гб) база которая не тормозит:
http://upurs.us/view/47509
http://www.solidfiles.com/d/a0d2600747/

База (1 Гб) которая тормозит:
http://upurs.us/view/47507
http://www.solidfiles.com/d/a382991be8/
---
disazoz, я бы не советовал сильно заморачиваться по этому поводу, даже если удастся сейчас каким то колдовством ускорить работу то скоро опять же уткнетесь в эту проблему. Тест 17 слишком мало, надо подумывать о том чтоб перенести все в терминалку, тогда избавитесь от проблемы надолго.
---
AlexInqMetal, вопрос такого характера, я могу как-то убедится что такие большие размеры таблиц связаны с объёмом документов, проводок? Что это связано с интенсивной работой, и база ведёт себя нормально. Тогда я буду с чистой совестью занимания переездом на терминал или SQL (это всё деньги, лицензии).

То есть от каких проводок, документов зависит объёмы:
РегистрБухгалтерии.Хозрасчетный
РегистрБухгалтерии.Хозрасчетный.Субконто
РегистрБухгалтерии.Хозрасчетный.ИтогиПоСчетамССубконто1
РегистрБухгалтерии.Хозрасчетный.ИтогиПоСчетамССубконто2
РегистрБухгалтерии.Хозрасчетный.ИтогиПоСчетамССубконто3

Все эти регистры значительно больше чем в не тормозящей базе.
---
Полностью согласен с (9)
Тот факт, что база лежит на ХР - не очень хорошо.
Если организуете работу пользователей в режиме терминала, то ускорение работы будет заметное.
Одним словом - делаете связку "Win2008 server х64 - SQL server х64 - 1C сервер х64 - клиент" всё это на одном и не обязательно супер-сервере. Главное правильно рассчитать количество ОЗУ.
На одного клиента - 500 Мб
На 1С сервер - 1000 Мб
На SQL - 3000 Мб

Не забудьте настроить регламентные задачи для SQL server

Пользователи по RDP подключаются и без проблем работают.

Подобная связка позволяет даже УПП летать, а уж бухгалтерия...
---
CaptainMorgan, спасибо за советы, учту.

В итоге выяснил что в базе ведётся подробная аналитика по субконто, из за чего эти журналы настолько выросли. С такой базой действительно по сети дальше работать сложно. Будем или делать свёртку или переходить на терминал.

Всем спасибо за помощь!
---
CaptainMorgan, Оп па - мой любимый сорт РОМА - "Капитан Морган"
---
Тоже мучился, мучился с "тормозами" данного запроса после перехода на PostgreSQL и Ураааа....победил .. После продолжительных экспериментов оказалось, что его нужно оптимизировать и тогда он начинает "стрелять" от души). А за мои долгие мучения можете вознаградить кто чем может:) Получается проблема глобальная, код ведь типовой, компания 1с тоже может допускать погрешности.. И вот решение:

```1c
    // Возвращает таблицу сумм остатков и оборотов за указанный день по указанному счету
    //
    Функция ПолучитьИтоги(ТекДата, ТекБанковскийСчет) //И

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

    Запрос.УстановитьПараметр("ДатаИтогов", ТекДата);
    Запрос.УстановитьПараметр("БанковскийСчетИтогов", ТекБанковскийСчет);
    Запрос.УстановитьПараметр("СчетБанк", ЭлементыФормы.ЖурналДокументовСписок.ТекущаяСтрока.СчетБанк); //И
    Запрос.УстановитьПараметр("Организация", ТекБанковскийСчет.Владелец);
    Запрос.УстановитьПараметр("ВалютаРеглУчета", мВалютаРегламентированногоУчета);

    ТаблицаИтогов = Запрос.Выполнить().Выгрузить();

    Возврат ТаблицаИтогов;

    КонецФункции
```

//Всем успехов:)
---
Сообщение было скрыто модератором.