|   |   | 
| 
 | v7: долго формируется запрос | ☑ | ||
|---|---|---|---|---|
| 0
    
        tesei 21.03.25✎ 09:39 | 
        Добрый день, коллеги. Файловая база, размер около 10 Гб, переехала на новый, более мощный сервер. Ряд операций, связанных с запросами, стали тормозить. Например, такой простой запрос выполняется 50 секунд:
 ТекстЗапроса = |Номенклатура = Справочник.Номенклатура.ТекущийЭлемент; |Группировка Номенклатура без групп; |Условие(Номенклатура в ВыбНоменклатура); |"; Кол-во номенклатуры - около 20 тыс. позиций. Выбрана группа из 5 элементов. Попробую замерить на другом сервере. В чем может быть причина? | |||
| 1
    
        Bigbro 21.03.25✎ 07:14 | 
        причина может быть в том что при копировании у вас дбф файлы раздробились на 10 тысяч фрагментов и теперь их чтение занимает минуту.
 или еще в чем то 10гб для файловой многовато уже. не хотите на SQL? | |||
| 2
    
        tesei 21.03.25✎ 07:41 | 
        (2) на SQL пробовали до меня, получалось медленнее. Придется попробовать самому.     | |||
| 3
    
        tesei 21.03.25✎ 07:42 | 
        Попробовал на другом сервере, так же долго.     | |||
| 4
    
        Chai Nic 21.03.25✎ 08:02 | 
        Переходите на прямые запросы. Или на простые выборки. И то и другое лучше чем "черные запросы" 1с.     | |||
| 5
    
        Chai Nic 21.03.25✎ 08:13 | 
        Семерочные запросы работают с ооочень плотным использованием каталога временных файлов, причем, по непонятной причине, с отключенным кэшированием и записи и чтения. То есть, буквально за каждой записью платформа лезет на диск, даже если эти записи находятся в одном секторе диска.
 В качестве рабочих костылей можно использовать рамдиск для каталога временных файлов 1с, это реально ускоряет. | |||
| 6
    
        arsik гуру 21.03.25✎ 08:14 | 
        (0) Это локально или по сети? Может для начала исключить влияние сети?     | |||
| 7
    
        Chai Nic 21.03.25✎ 08:18 | 
        (6) Судя по "база переехала на более мощный сервер", она работает в терминале. Потому что по сети на мощность сервера пофиг.     | |||
| 8
    
        Bigbro 21.03.25✎ 08:22 | 
        в общем нужны подробности.
 начиная от размера файла с таблицей номенклатуры количества фрагментов в ФС для этого файла очереди диска на сервере и т.д. и т.п. выбНоменклатура - точно не пусто? а то он весь справочник выбирает. | |||
| 9
    
        Chai Nic 21.03.25✎ 08:27 | 
        (8) Это же семерка. Там всё элементарно. Размеры детские для современных серверов. Вся таблица в файловом кэше должна быть, и влияние фрагментации файлов базы можно исключить в принципе.
 Единственное узкое место в дисковой подсистеме для локальной файловой семерки - это временные файлы, где кэширование отключается платформой. А у них может быть любая фрагментация, вот только повлиять на неё мы не сможем, потому что они создаются в процессе выполнения запроса. Поэтому начать надо с создания рамдиска для временных файлов, и проверить, как оно. | |||
| 10
    
        mishaPH 21.03.25✎ 08:34 | 
        (9) временные файлы на рамдиск где переназначить?     | |||
| 11
    
        Chai Nic 21.03.25✎ 08:35 | 
        (10) Опция командной строки /t     | |||
| 12
    
        mishaPH 21.03.25✎ 09:35 | 
        (11) аа точно. склероз. 20 лет назад рамдиски делали     | |||
| 13
    
        Djelf 21.03.25✎ 09:35 | 
        (0) Вопрос в стиле: 
 - Доктор, у меня болит! - Что именно болит? - Вы же доктор, Вы мне и скажите! Более мощный это ничего не значит. Более мощная видеокарта это более мощный сервер, но к 1С 7.7 отношения не имеет. | |||
| 14
    
        Chai Nic 21.03.25✎ 09:03 | 
        (13) Анекдот напомнило про врача и ветеринара) "Блин, как у вас всё просто!"     | |||
| 15
    
        Builder 21.03.25✎ 09:31 | 
        (0) Переходите на SQL (оптимально 2008), там такие запросы, даже штатные черные, выполняются за секунды.     | |||
| 16
    
        Chai Nic 21.03.25✎ 09:33 | 
        (15) Не обобщайте, штатные запросы даже на sql-версии могут выполняться через dbf в каталоге временных файлов, неоднократно сталкивался..     | |||
| 17
    
        mishaPH 21.03.25✎ 09:34 | 
        (16) ++     | |||
| 18
    
        mishaPH 21.03.25✎ 09:35 | 
        (15) в 2008 нет только распухания темповой базы. все остальное по сути не вижу разницы с 2000. А так только прямые запросы делают погоду     | |||
| 19
    
        Builder 21.03.25✎ 09:52 | 
        (16) Могут, естественно. 
 Специально сделал такой-же запрос на большой скулевой базе и замерил через _GetPerformanceCounter() Запрос занял 0.242 секунды первый раз и 0.056 второй раз. | |||
| 20
    
        tesei 21.03.25✎ 09:54 | 
        (8) выбирал даже одну номенклатуру - всё равно долго считает, 26 секунд. Спасибо за советы, буду "читать и много думать".     | |||
| 21
    
        arsik гуру 21.03.25✎ 10:01 | 
        (20) Так может у тебя журнал 1С раздулся просто. Или размер хранимых данных пользователя в папке пользователя. В свое время так интерфейс притормаживал. 1С каждый раз это все перечитывала.
 Посмотри размер SYSLOG А так же попробуй папку юзера очистить | |||
| 22
    
        Наивный 21.03.25✎ 10:02 | 
        Забавно, но именно в такой ситуации (когда номенклатура выросла до 20 тыщ), тоже стали все запросы подтормаживать и пришлось на прямые запросы переходить. Ничего в них страшного нет.     | |||
| 23
    
        Наивный 21.03.25✎ 10:03 | 
        Тормозит под всеми юзерами?     | |||
| 24
    
        Bigbro 21.03.25✎ 10:05 | 
        ну и да. надо грохнуть индексы и переиндексацию сделать.
 вдруг вся проблема только в этом)) | |||
| 25
    
        Наивный 21.03.25✎ 10:09 | 
        (24) А лучше выгрузку-загрузку + проверить, прописаны ли каталоги пользователей     | |||
| 26
    
        tesei 21.03.25✎ 10:25 | 
        Рам диск есть на два гига. Буду думать за прямые запросы и скуль.     | |||
| 27
    
        arsik гуру 21.03.25✎ 10:31 | 
        (25) Без патча такую базу не выгрузить - загрузить и в скуль не перекинуть     | |||
| 28
    
        tesei 21.03.25✎ 10:28 | 
        Сислог 150 мб, папки юзеров 40 мб на всех.     | |||
| 29
    
        tesei 21.03.25✎ 10:29 | 
        (23) Да, тормозит под всеми.     | |||
| 30
    
        Bigbro 21.03.25✎ 10:36 | 
        а в монопольном режиме?
 путь к базе как прописан через сетевой ресурс или как локальный диск? если через \\myserver\mybase - перепишите на локальный диск попробуйте помню была проблема с доменным сервером из за чего тормоза начинались в совершенно неожиданных местах из за того что днс имена корректно не разрешались. | |||
| 31
    
        tesei 21.03.25✎ 10:38 | 
        Таблица 320 Мб, индекс 40 Мб.     | |||
| 32
    
        Guk 21.03.25✎ 10:42 | 
        на скуле проверил. Номенклатуры 35 тыщ.
 без фильтра, по всей номенклатуре, время выполнения запроса 12 сек, с фильтром по самой большой группе 1 сек. размер файла мдф базы 350 Гб. прямые запросы не используются... | |||
| 33
    
        tesei 21.03.25✎ 10:41 | 
        (30) Путь локальный, пробовал в копии монопольно. Склоняюсь к альтернативным запросам.
 Ранее я переписал банк-клиент, поиск организации/контрагента по ИНН, был запрос по части поля ИНН, с использованием ИЛИ. После изменения кода ускорение на два порядка. | |||
| 34
    
        tesei 21.03.25✎ 10:44 | 
        Коллеги, спасибо за внимание к проблеме и ваши ответы, мне реально полегчало! :)     | |||
| 35
    
        Guk 21.03.25✎ 10:53 | 
        (34) тебе реально полегчает, когда базу на СКЛ переведешь. если бы у меня 10 Гб база лежала в дбф, у меня бы всегда очко сжатое было, иголку не воткнешь...     | |||
| 36
    
        Builder 21.03.25✎ 11:11 | 
        (35) Поддержу. Держать любые рабочие базы на dbf - так себе идея. Одна переиндексация чего стоит...     | |||
| 37
    
        vsy 21.03.25✎ 11:29 | 
        Ради интереса тоже попробовал на дбф базе где примерно 20 тыс элементов. Время запроса 0.353. Попробовал с помощью 1sqlite? время 0.002.     | |||
| 38
    
        Ёпрст 21.03.25✎ 14:14 | 
        (35) та ну, 10гб ни о чем, мы в среднем, держали 20 в дбф, переписанная комплексная, 2 плана счетов, задвоенные регистры/движения для упр/бух учета. Индексация, не помню, сколько занимала. Мин 10-15. Зато за ночь, можно было перепровести любой год. Чего снеговику и не снилось.     | |||
| 39
    
        Ёпрст 21.03.25✎ 14:15 | 
        И это, еще во времена отсутствия ссд дисков как класс     | |||
| 40
    
        Ёпрст 21.03.25✎ 14:17 | 
        А автору, достаточно переиндексировать одну табличку с номенклатурой и прибить cfg пльзователей     | |||
| 41
    
        Djelf 21.03.25✎ 14:28 | 
        Конфигурацию серверов автор не озучил, тесты скорости дисков не сделал.
 Кто его знает, нам отсюда не видно, может у него база на софт-рейд 10 куда воткнуты wd green на 5400 (кажется). | |||
| 42
    
        Ёпрст 21.03.25✎ 14:37 | 
        (41) 10-ка еще туда сюда, даже на таких "скоростных" дисках. Плохо, когда там пятачок (5рэйд)     | |||
| 43
    
        Djelf 21.03.25✎ 15:03 | 
        (42) Давно не использовал, подзабыл, да 5й, точно!     | |||
| 44
    
        mishaPH 21.03.25✎ 16:13 | 
        (35) перевод на скл базы.. ч когда то активно на этом подрабатывал. Тормоза появлялись там, где их на дбф не было. Уж обращение в цикле к реквизитам через . . . это вообще жесть причем в типовых. Типовые вообще при переводе на скл та еще хрень была.
 Я к тому, что перевести автору на скль базу может дать тупо гораздо больше проблем.. Без перетряхивания кода. | |||
| 45
    
        Bigbro 21.03.25✎ 17:16 | 
        мы же не знаем что там за конфиг. может самописка вообще.
 так то у меня была 7ка на 70 гигов самописанная даже с черными запросами достаточно быстро работала. | |||
| 46
    
        Djelf 21.03.25✎ 17:51 | 
        И при любых непонятных случаях, лучше использовать вот это: https://forum.dorex.pro/index.php?topic=130.0
 Скорость дисков эта штука (разумеется) не измеряет, но техинфо выдает достаточно подробное. | |||
| 47
    
        Злопчинский 21.03.25✎ 19:09 | 
        (33) а у меня на скуле условие типа как в ноль загоняло в аут.
 Условие приходилось выбрасывать и фильтровать при обходе результата , получалось гораздо быстрее. Смотрел запрос который в скуль еонвертировался - там для каждого элемента из списка в условии генерился подзапрос. Трэш какой-то. Но я по скулю не спец. Поэтому и нафиг. | |||
| 48
    
        Злопчинский 21.03.25✎ 19:11 | 
        Кстати может быть стоит попробовать вариант когда в ВыбГруппа - заменить на в СписокЭлементовГруппы     | |||
| 49
    
        Злопчинский 21.03.25✎ 19:14 | 
        Что хочу сказать: если в клюшках не костылить, а писать продуманно - все не так уж и страшно...
 . Тут вот коллега жалился что запрос по остаткам 30 секунд работает. Посмотрел. Ну ясен пень - на временные итоги по всей номенклатуре которой дохера тыщ, при том что фильтр на временные итоги стоит после получения итогов. Почему? Потому что надо писать аккуратно!!! | |||
| 50
    
        Злопчинский 21.03.25✎ 19:15 | 
        ... Поставил фильтр где надо - скорость увеличилась в 20 раз...     | |||
| 51
    
        Злопчинский 21.03.25✎ 19:16 | 
        И для дбфнвхх чорных запросов важна последовательность условий если их несколько.     | |||
| 52
    
        Злопчинский 21.03.25✎ 19:17 | 
        В (0) применение без упорядочивания даст прирост.
 Без итогов даст прирост | |||
| 53
    
        Злопчинский 21.03.25✎ 19:26 | 
        А вообще правильно - писать эти запросы в 1Sqlite     | |||
| 54
    
        Guk 21.03.25✎ 21:51 | 
        (47) >> а у меня на скуле условие типа как в ноль загоняло в аут.
 да ладно гнать-то. десятки лет у всех работает, а у тебя аут... | |||
| 55
    
        Bigbro 21.03.25✎ 21:22 | 
        кстати можно родителя через = проверить.
 если одна группа может быстрее отработать. В использовал когда список есть или иерархия. | |||
| 56
    
        arsik гуру 21.03.25✎ 21:26 | 
        (53) Прямые запросы не к скульным 1с базам бывают?     | |||
| 57
    
        Guk 21.03.25✎ 22:12 | 
        (56) ну как минимум с 1Спп, бывают...     | |||
| 58
    
        Злоп 21.03.25✎ 22:44 | 
        (56) вовсю
 Можно через фокспрошный драйвер, можна на скулайт | |||
| 59
    
        mishaPH 22.03.25✎ 16:24 | 
        (56) к DB2 делал когда то но суть скуль все это     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |