Нетривиальные подходы в решении всем известных проблем: ускорение «больших» документов в 1С и ускорение поиска по подстроке. Как добиться эффекта в разы?

Публикация № 884649

Администрирование - Производительность и оптимизация (HighLoad)

62
Часто у пользователей 1С поиск информации по большим спискам данных по подстроке занимает продолжительное время. Павел Баркетов рассматривает причины торможения запросов с поиском по подстроке и описывает возможности и подходы к их оптимизации и ускорению. Также в статье разобраны причины длительного проведения «больших» документов (более 10 000 строк) и даны рекомендации по ускорению этих операций.

Меня зовут Павел Баркетов, я работаю в компании «Софтпоинт». Мы уже более 10 лет занимаемся решением задач оптимизации производительности. И несмотря на большое количество решенных задач, их количество не уменьшается, а растет в геометрической прогрессии. Объемы данных увеличиваются, и задачи по оптимизации работы с этими данными усложняются. Этот процесс неизбежен.

Тема статьи – нетривиальные подходы к оптимизации. Будут рассмотрены два аспекта:

  • Первый – поиск по подстроке. Пользователи часто его используют, и многие, наверное, уже сталкивались со значительным ожиданием, поиск по подстроке выполняется недостаточно быстро.
  • Второй – проведение больших документов, таких, как закрытие месяца, расчет себестоимости. Наверняка многие сталкивались с тем, что бухгалтеры проводят эти документы по 5–9 часов, ночью и в нерабочее время. Самое интересное, что классические методы оптимизации здесь не всегда помогают. Если вы при проведении таких документов запустите в отладчике замер производительности, то увидите, что наибольшее количество времени тратится на запись во временные или реальные структуры – таблицы, регистры и т.д. И решить эту задачу классическими методами не получается.

 

Поиск по подстроке

Первая тема – поиск по подстроке. За этот год я сталкивался несколько раз с проблемами по этой операции. Приходишь в страховую компанию за продлением полиса, тебя предлагают найти по номеру телефона. Понятно, что это не классический поиск по полному номеру телефона, потому что пользователь мог завести номер через восьмерку, через семерку или еще как-то, следовательно, ищут по фрагментам номера. При этом используются долговременные операции поиска – в ряде ситуаций задержка может быть несколько секунд, а может доходить и до минут.

 

Поиск по начальным символам

Начну с первого примера, когда поиск осуществляется по начальным символам. Это – частный случай поиска по подстроке, когда пользователь точно знает, что искомое значение начинается с определенных символов.

Поиск по начальным символам реализуется в 1С с помощью команды ПОДОБНО (или в английском варианте, LIKE) с указанием значения с «%» в конце («%» обозначает последовательность любых других символов). Например, мы ищем:

Наименование ПОДОБНО "ивано%"

Обратите внимание, что если у вас в системе существует индекс по этому полю, то в SQL-запросе для этого поиска будет использоваться Index Seek – это поиск по индексу.

Условие «ПОДОБНО поисковой строке» эквивалентно поиску в диапазоне значений. В частном случае, когда мы ищем «ивано%» – это эквивалентно поиску в диапазоне фамилий, которые начинаются на «ивано», и, заканчивая «иванп» (потому что символ «п» идет после символа «о»).

Современные оптимизаторы самостоятельно преобразуют запрос LIKE на запрос поиска по диапазону. Следовательно, если у вас в системе существует индекс по этому полю, вы при интерпретации запроса в термины SQL получите именно такой результат – оптимизатор представит запрос с LIKE в виде поиска по диапазону.

Таким образом, можно осуществлять классический быстрый поиск с использованием индекса (Index Seek). С этим проблем нет или решить их можно простым способом.

 

Поиск по вхождению

Теперь возьмем пример посложнее, когда неизвестно, в каком именно месте строки стоит наше искомое значение, и реализуется поиск по вхождению строки. В этом случае в запросе «ПОДОБНО» «%» стоит с двух сторон.

При преобразовании такого запроса в SQL мы видим, что изменяется только команда (в значении используется уже два «%»).

Рассмотрим подробнее план выполнения. Здесь мы видим тот же Index Seek, но в данном случае он не работает эффективно.

Дело в том, что индекс по наименованию справочника, который мы рассматриваем, состоит из нескольких полей.

  • Первое из них – это разделитель учета.
  • Дальше непосредственно идет поле поиска.

И поэтому, когда в плане выполнения отображается «Index Seek», это означает, что поиск делается по первому полю разделителя – на слайде выше можно увидеть, что поиск по нашему искомому значению Desc абсолютно не используется.

Что делать в этой ситуации? У меня на практике было очень часто, что пользователям запрещали использовать запросы на вхождение. И пользователи в ряде случае сами не использовали этот функционал, потому что время выполнения очень значительное, а надо продолжать работать. Поэтому им приходилось выкручиваться другими способами – выбирали в списках, пытались найти по первым символам и так далее.

Но это приводит к недовольству функционалом и неправильному восприятию системы. Пользователь понимает, что система с чем-то не может справиться и не работает как положено. Это неправильно.

 

Нетривиальный подход к решению задачи поиска по подстроке

Давайте теперь рассмотрим нетривиальный подход к решению этой задачи.

Обозначим ряд допусков:

  • Первое – поскольку современные диски имеют неограниченный размер, допустим, что пространство на диске, которое вы можете использовать, у вас есть достаточно большое.
  • Второе – пользователь ищет не по одному-двум символам, а по какому-то фрагменту. Например, никто из нас не ищет по «ал» – это слишком маленькая селективность. Ищут какую-то значимую последовательность символов. Здесь мы для примера выбрали поиск по шести символам.

Пример искомой строки «алексе» записали в форму и будем с ее помощью тестировать.

Дальше пойдет подробное описание, как это можно сделать:

  • Предположим, у нас есть поле с фамилией, именем и отчеством клиента. Первым шагом мы автоматически раскладываем это значение на фрагменты из шести символов со сдвигом «1» и получаем массив фрагментов (см. выше), которые одновременно всегда принадлежат искомому значению. Мы получили фрагменты, которые теоретически может вводить пользователь. А именно, на прошлом слайде определили, что мы ищем шесть символов. Их может быть и пять, и четыре, просто размер структуры будет больше.

  • На втором шаге мы записываем эти наборы в отдельную структуру (это может быть таблица, регистр сведений и т.д.) и получаем выборку, в которой определенный фрагмент принадлежит разным значениям.

  • И на третьем шаге, мы при поиске по подстроке к конструкции запроса 1С «ПОДОБНО» добавляем дополнительное условие «И», которое фильтрует количество возможных комбинаций, и вытаскиваем из этой дополнительной структуры (это может быть регистр сведений) все элементы, которым принадлежат нужные фрагменты строк.

Например, пользователь ищет клиента с фамилией «Солдатов». Это – восемь символов, значит, будет три фрагмента длиной в шесть символов, которые мы ищем в служебной структуре. Далее объединяем это все в запросе. Таким образом, получается дополнительная фильтрация.

В результате мы избавляемся от знака «%» (т.е. впереди этих фрагментов всегда будет нужный нам символ), и при выполнении внутреннего запроса будет идти Index Seek, за который мы и боролись.

На практике получается очень интересная история – ускорение в десятки, в сотни раз. Причем, все это можно сделать средствами 1С, что очень приятно. Переписывать логику не потребуется, пользователь порадуется, что у него ускорился запрос поиска. В примере ускорение с 4 секунд до 0,05 секунды, а если бы у нас изначально запрос выполнялся две минуты, он стал бы исполняться менее секунды.

Механизм, что я вам показал, не является каким-то экспериментальным примером, это уже работает у реальных клиентов.

 

Подготовительные мероприятия для внедрения

Теперь я расскажу кратко о подготовительных мероприятиях.

  • Сначала необходимо заполнить регистр начальными значениями. Для этого мы должны запланировать регламентное окно.
  • Далее мы должны соблюсти консистентность данных – это значит, должна быть подписка на изменение значения, чтобы эта Фрагменты автоматически перестраивались.
  • И последнее – дописать стандартную форму поиска.

Заполнение регистра можно делать как средствами 1С, так и с помощью SQL.

Могу сказать, что заполнение такой структуры для 17-ти миллионов значений занимает где-то 20-25 минут. Естественно, пользователи в этот момент не должны изменять значения справочника.

Далее можно добавить либо триггер, либо 1С подписки, которые позволяют синхронизировать фрагменты с реальным значением поля.

Можно и нужно рассчитать необходимое дисковое пространство. Здесь все зависит от того, сколько символов в наименовании, какую мы взяли длину фрагмента, и какой размер ссылки на искомый объект.

Если мы рассчитаем для одного миллиона значений где-то 100 символов по 6 во фрагменте, получится где-то 4,7 Гб. Нужно запланировать, чтобы это место у вас было. Если у вас в справочнике, например, 100 миллионов значений, то вы должны запланировать место, которое будет доступно на диске.

 

Необходимость учета статистики популярности фрагментов

Всегда ли этот метод будет работать быстро?

На это влияет статистика популярности фрагментов.

  • Например, у вас есть фрагмент «алексе», который может входить в имя Алексей, в отчество Алексеевич, в фамилию Алексеенко и т.д. Этот фрагмент может входить в 50-100 тысяч записей.
  • А есть редко используемые фрагменты.

Таким образом, появляется статистика популярности по фрагментам.

Обратите внимание, что если популярность фрагментов низкая (100 элементов), то мы получаем ускорение – 0,1 секунду.

Если подстрока достаточно популярная (50 тысяч элементов), то мы получаем деградацию, причем гораздо большую, чем если бы не было оптимизации.

Таким образом, необходимо сделать улучшенную схему выполнения запроса, в которой мы сначала бы получили значение популярности подзапроса. Это делается тремя-пятью строчками в 1С. При этом мы точно знаем, что если строка непопулярная, то идет по первой ветке, а если популярная, то по второй.

Как работает ускорение? Идет запрос поиска из формы, далее мы обращаемся к регистру сведений со статистикой, получаем элемент и дальше выбираем, что использовать – классический или ускоренный запрос.

А теперь давайте рассмотрим, как выполняется SQL-запрос на SQL-сервере.

На слайде представлена упрощенная схема:

  • идет запрос к оптимизатору;
  • мы смотрим статистику по полям, которые используются в запросе;
  • выбираем, какой план выполнения использовать, то есть выбираем стратегию выполнения запроса (например, вложенный цикл).

На что похожа реализованная нами схема?

  • Мы сделали свой индекс. Не стандартный индекс SQL, не индекс 1С, а свой индекс, который нужен для решения этой задачи;
  • Более того, столкнулись с тем, что нужна своя статистика;
  • И нужен собственный оптимизатор, который по этой статистике решает, какую ветку выбрать.

Исходя из этой логики, можно сказать, что этот процесс раскрывает смысл того, для чего нам индексы, статистика и оптимизатор.

Кто не знал, для чего нужно обслуживать статистику в SQL, загляните в эту логику, и вы поймете, что если она неправильная или неактуальная, то мы пойдем по неправильной ветке. Запрос будет тормозить. Понимаем, для чего качественно и правильно обслуживать статистику – это влияет на производительность, на индекс.

Если индекса нет – будем сканировать все значения.

Таким образом, мы создали хоть примитивный, но свой оптимизатор. Можно сказать, что прощупали «на пальцах» то, как это делает MS SQL и другие СУБД, причем создав свои структуры.

 

Ускорение «больших» документов

Перейду ко второй теме – ускорение больших документов.

Мы в производственных задачах часто сталкиваемся с какими-то регламентными процедурами, как: закрытие месяца, отчет агенту, расчет себестоимости. Эти тяжелые, массивные документы проводятся и заполняются значительное количество времени. А когда мы заглядываем в отладчик и делаем на этих операциях трассировку, то видим, что 1С построчно вставляет значения в какую-то таблицу и на это уходит основное время. И ничего с этим поделать нельзя. Единственная рекомендация, которую можно предложить – это ускорить диск (эффективность этого решения очень сомнительная и требует предварительного анализа).

Предлагаю вернуться в историю и рассмотреть, как это делалось в 1С, начиная с 8.0 до 8.3 – это делалось построчно. SQL-сервер каждый раз анализировал запрос, его обрабатывал, создавал план выполнения, добавлял, отправлял команду в сторону 1С об успешности и получал следующий запрос. И такими step by step шли запросы от 1С сервера приложения к MS SQL.

Понятно, что если у вас 40 записей в документе, то проблем возникнуть не должно. Если записей у вас становится 10 тысяч и более (бывают организации, где в регламентных документах миллион записей), то этот процесс занимает очень длительное время. Одна запись обрабатывается очень быстро, но в документе их слишком много. На что уходят накладные расходы? На сеть, на выполнение запроса, на обратный сигнал, на обработку этого сигнала в системе 1С – итого, сумма четырех этапов. Все этапы суммируются, умножаются на миллион строк, и получаются наши длительные ожидания. Понятно, что это не ужасно.

В 1С, начиная с 8.3, сделаны улучшения. Теперь запрос для вставки во временные таблицы и в регистры сведений подготавливается на SQL-сервере, и его дальнейшее выполнение происходит с помощью классических RPC-вызовов, где сам провайдер доступа 1С (Native или OLE DB) группирует записи и вставляет их по N строк (как правило 100 строк).

Таким образом, достигается ускорение от 30% до 300%. Но это все равно недостаточно, потому что сегодня у вас 10 тысяч строк, завтра 20 тысяч строк. Это не принципиальное решение проблемы, вы все равно с ней столкнетесь, но только через полгода/год.

Какая наиболее быстрая вставка в SQL-сервер, да и вообще в любую СУБД?

Это BULK INSERT. В 1С BULK INSERT используется, но для других задач. Работу с «большими» документами также хотелось бы ускорить путем укрупнения вставок INSERT и добавления записей единым массивом в базу данных SQL-сервера.

Посмотрим, какой достигается эффект. В рассматриваемом примере получено ускорение где-то в 5 раз, но можно ускориться и в 10 раз. Теоретически основная проблема для того, чтобы это ускорялось значительно сильнее – это скорость диска. Диск может является узким местом.

Также важно помнить про такой критерий, как индексы. Если бы мы вставляли BULK INSERT в таблицу без обновления индексов, то мы бы получили значительное ускорение (результат менее чем за секунду). Здесь мы получаем 69 секунд за счет того, что каждая вставка в таблицу требует REFRESH индекса.

В любом случае, этот способ позволяет достичь эффекта в 5-10 раз.

Плюс здесь не рассматриваются такие возможности, как партиционирование, секционирование. Можно было бы улучшить ситуацию, если бы мы знали, что BULK INSERT вставляется в актуальный период, а неактуальный мы вынесли бы в другую партицию. Это был бы еще больший эффект. Получается, что ускорение очень хорошее.

 

Возможности оптимизации безграничны

Таким образом, возможности оптимизации безграничны. Единственное – не увлекаться. До оптимизации всегда имеет смысл посчитать, будет ли предполагаемый эффект или нет. Также я бы советовал в каких-то ситуациях «подниматься» над проблемой, использовать не классические методы оптимизации запроса, а какие-то совсем иные, которые могут принести более значительный результат.

****************

Данная статья написана по итогам доклада, прочитанного на конференции INFOSTART EVENT 2017 COMMUNITY. Больше статей можно прочитать здесь.

В 2020 году приглашаем всех принять участие в 7 региональных митапах, а также юбилейной INFOSTART EVENT 2020 в Москве.

Выбрать мероприятие.

62

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. Сурикат 276 30.08.18 22:41 Сейчас в теме
А рассматривались такие решения как Сфинкс или ElasticSearch?
2. Sybr 236 31.08.18 09:27 Сейчас в теме
BULK INSERT предназначен для загрузки из данных из файла, как его использовать для записи движений при проведении документа? Так себе вариант на мой взгляд. Рабочее решение - это распараллелить запись, создавая несколько служебных документов регистраторов при проведении документа.
5. nicxxx 236 31.08.18 11:45 Сейчас в теме
(2) Присоединяюсь к вопросу. Сколько времени занимает подготовка файла данных?
24. gallam99 224 10.09.18 17:54 Сейчас в теме
(5)
Скорость подготовки данных (создается не файл, а поток данных) занимает очень незначительное время, так как формируется в оперативной памяти. Сложно сказать в абсолютных величинах, но десятки тысяч строк - несколько секунд.
28. nicxxx 236 11.09.18 10:05 Сейчас в теме
(24)два вопроса. Как называется поток данных в оригинале на английском языке? И как его прикрутить к платформе 1С не являясь разработчиком платформы?
29. gallam99 224 11.09.18 10:24 Сейчас в теме
(28)
Формат пакета можно посмотреть по ссылке: https://msdn.microsoft.com/en-us/library/dd340549.aspx
В таком формате MS SQL примет команду. Также полезно для решения задачи будет ссылка на спецификацию TDS: https://msdn.microsoft.com/en-us/library/dd304523.aspx
Теперь по внедрению к платформе 1С: в вашем вопросе скрыт ответ, платформой 1С занимаются разработчики платформы, поэтому там ничего нельзя "прикрутить". Следовательно необходимо внедрить решение за платформой 1С, мы это делаем между платформой и сервером БД. Создан прокси - сервер между ними, происходит анализ запросов SQL, в случае наших запросов на массовую вставку - они парсятся, формируется общий пакет по формату из первой ссылки и после общий пакет отправляется на MS SQL вместо большого количества маленьких. Таким образом главное обеспечить достаточное количество памяти для прокси-сервера и настроить высокоскоростную сеть для исключения замедления работы в целом. По нашим расчетам среднее время задержки запроса из-за прокси около 100мкс, таким образом задержка практически никак не влияет на скорость. Надеюсь стало понятнее.
30. nicxxx 236 11.09.18 19:39 Сейчас в теме
(29) да, так понятней. спасибо.
31. СергейК 51 14.09.18 23:01 Сейчас в теме
(29) Что-то это напоминает модификацию/оптимизацию запросов к SQL в 1С 7.7 через "хакерские" компоненты.
Развитие идет по спирали: энтузиасты оптимизируют платформу, пока вендор думает :-)
14. AlexFort1961 1 01.09.18 12:04 Сейчас в теме
(2) Вы предлагаете рабочее решение с распараллеливанием записи путем создания нескольких служебных документов. Можете поподробнее (схематично, конечно) описать этот путь? Предложенное в этой статье решение описано неконкретно, скорее концептуально.
gallam99; +1 Ответить
20. Sybr 236 03.09.18 11:43 Сейчас в теме
(14) При проведении создаем пул фоновых заданий, каждое из которых создает документ и записывает свою часть движений. Возможна эскалация блокировок, нужно обрабатывать этот момент. Подойдет для служебных документов, в которых все данные для движений уже рассчитаны и записаны в ТЧ.
21. AlexFort1961 1 03.09.18 13:48 Сейчас в теме
25. gallam99 224 10.09.18 17:58 Сейчас в теме
(14)
В публикации действительно описано концептуально. В реальности решение есть - оно представляет из себя аналог решения (Softpoint data cluster) - можно прочитать на сайте, трафик от сервера приложения проходит через него и анализируется. Когда встречаются построчные вставки в реальные и временные таблицы, то "на лету" формируется поток данных и вместо построчных операций вставки на сервер БД идет операция bulk insert.
3. Silenser 512 31.08.18 10:11 Сейчас в теме
Не пробовали использовать полнотекстовый поиск SQL? Он, насколько я помню, работает быстрее аналогичного в 1С, особенно при поиске нескольких слов. Для поиска одного фрагмента вполне подойдет и полнотекстовый поиск самой платформы и скорость будет вполне приличная, разве что результат разбирать дольше.
26. gallam99 224 10.09.18 18:00 Сейчас в теме
(3) Тут зависит от задачи и возможностей использования полнотекстового поиска в конкретной ситуации, для ускорения поиска по подстроке вполне интересное решение)
4. Mortum 31.08.18 11:11 Сейчас в теме
Написали про BULK INSERT, который нельзя использовать из 1с. В чём оптимизация?
Irwin; CSiER; bulpi; syberman; +4 Ответить
6. Greeen84 65 31.08.18 11:50 Сейчас в теме
(4) +1, выглядит как
1)BULK INSERT
2)...
3)PROFIT в 10 раз! =)
Plotks2017; Aleskey_K; Irwin; cefew; bulpi; +5 Ответить
27. gallam99 224 10.09.18 18:02 Сейчас в теме
(6)
Цели демонстрации 2:
1. Есть решения конкретной ситуации (ускорение неускоряемого типовыми средствами) и раскрыт принцип в публикации и возможность реализации.
2. Может разработчики платформы 1С улучшат платформу)
7. nicxxx 236 31.08.18 12:04 Сейчас в теме
Если говорить про BULK-и, то есть в SQL Server запросы MERGE. Из моего опыта, копирование 7 000 000 строк между таблицами длится 60 секунд. Построчная вставка - гораздо дольше, измеряется часами. Но! Для запроса MERGE нужно как-то подготовить данные, ту же временную таблицу, и эта подготовка съедает большую часть оптимизированного времени.
8. bulpi 159 31.08.18 12:43 Сейчас в теме
1)По ускорению поиска по подстроке - очевидное решение выдается за новаторское.
2)По ускорение документов - вообще толком ничего не написано.
9. KAV2 86 31.08.18 13:39 Сейчас в теме
(8) а мне понравилось про поиск, очень доступно написано. Найти доступное описание того как можно индексировать полнотекстовый поиск не так то просто. Но понятно что это не автором статьи придумано, поэтому хотелось бы ссылки на литературу.
12. kalyaka 521 31.08.18 16:33 Сейчас в теме
(8) вот же в чем парадокс - на поиск простого очевидного решения может уйти много времени, а когда решение найдено - кажется ничего в нем и нет такого. Ну это ж очевидно :)
10. YPermitin 6418 31.08.18 15:27 Сейчас в теме
Темы до конца не раскрыты, но написано в любом случае доступно.
Некоторые задумки их этого использую на продакшене.

За публикацию + несомненно.
11. kalyaka 521 31.08.18 16:22 Сейчас в теме
Понравилась идея с полнотекстовым поиском. Действительно очень простое эффективное решение.

В свое время у нас ребята решали задачу поиска договора по номеру из назначения платежа при загрузке из банка с использованием оператора LIKE %Номер% и это было очень не быстро + напрягало сервер - в результате отказались от такого "сервиса" и перешли на поиск по началу.

Использование же полнотекстового поиска тоже чревато затратами на обслуживание + при обновлении падает производительность сервера приложений.
13. KAV2 86 01.09.18 05:50 Сейчас в теме
(11) Полнотекстовый поиск встроенный в платформу еще нельзя программно вызвать, а в некоторых случаях обработку ввода по строке необходимо кастомизировать.
15. TMV 14 03.09.18 05:28 Сейчас в теме
(13)
Полнотекстовый поиск встроенный в платформу еще нельзя программно вызвать
Разве нельзя, А это что?
16. KAV2 86 03.09.18 07:34 Сейчас в теме
(15) Я имел в виду полнотекстовый поиск по определенным таблицам, а не по всей базе. Сама платформа позволяет включить полнотекстовый поиск для ввода по строке, там используется полнотекстовый поиск по определенной таблице, но как это сделать программно?
17. Silenser 512 03.09.18 09:28 Сейчас в теме
(16)Так вы можете программно вызвать полнотекстовый поиск и задать его область. Попробуйте, сравните результат с вашим вариантом, он будет, скорее всего сопоставим, если ищете по одному слову. Разве что свободное место на диске сервера приложений нужно будет контролировать, чтобы полнотекстовый индекс его не съел.
18. TMV 14 03.09.18 11:06 Сейчас в теме
(16)
Я имел в виду полнотекстовый поиск по определенным таблицам, а не по всей базе

Можно же задать по каким объектам метаданных искать:

СписокПолнотекстовогоПоиска (FullTextSearchList)
ОбластьПоиска (SearchArea)
Использование:

Чтение и запись.
Описание:

Тип: Массив.
Содержит массив метаданных, описывающий, в каких данных нужно осуществлять поиск.
Например:
МассивОтбор = Новый Массив();
МассивОтбор.Добавить(Метаданные.Справочники.Товары);
МассивОтбор.Добавить(Метаданные.Документы.КассовыйЧек);
СписокПоиска.ОбластьПоиска = МассивОтбор;


Область поиска может содержать только основные объекты конфигурации. Подчиненные объекты (например, табличные части, реквизиты) не могут входить в область поиска.
LordKim; KAV2; +2 Ответить
19. KAV2 86 03.09.18 11:35 Сейчас в теме
(18) спасибо, не по глазам была эта возможность
22. Rustig 1225 04.09.18 11:00 Сейчас в теме
(0) интересные исследования. поиск по подстроке - это ведь перебор всех вариантов. я не понял сути задачи - зачем среди миллионных фамилий искать совпадение подстроки? однофамильцев будет тысяча - и результат поиска будет предсказуем - тысяча одинаковых фамилий. я рекомендую решать задачи поиска исходя из контекста - найти человека по инн, по таб. номеру, по телефону, по снилсу, по адресу регистрации - по району, по городу; по дате рождения. возможно поле поиска трансформируется в отдельное окно с несколькими полями для фильтрации и ограничения списка вариантов.... поиск по подстроке для большинства организаций работает достаточно быстро,а для организаций, у которых миллионные справочники,- подход должен быть Иным.
по поводу документов - надо делать декомпозицию длительных операций. Про регламентные документы с записями в 10 тыс. строк - не ясно, что за пример такой? из жизни? может такая реализация - это ошибка разработчика?
23. ufedor 52 05.09.18 09:23 Сейчас в теме
Собственный индекс - огонь.
Только 1с уже умеет использовать полнотекстовый индекс (свой конечно), если эта функциональность включена. При установке ограничения по области работает весьма неплохо. Посмотрите в типовых поиск номенклатуры.
А там уже можете решить, что использовать для поиска (реквизиты, тч, доп.сведения, связанные справочники)
Оставьте свое сообщение

См. также

Весёлые картинки о работе Performance Monitor на Windows Server 2016 Std по мотивам расследования потери производительности на базе 1С 17

Статья Системный администратор Нет файла v8 Windows Бесплатно (free) Производительность и оптимизация (HighLoad)

Данная публикация посвящена одной особенности Performance Monitor на Windows Server 2016 Std. Как понимать графики Performance Monitor на Windows Server 2016 Std при расследовании проблем в работе 1С.

22.10.2019    2793    EugeneSemyonov    10       

Новый раздел на Инфостарте - Electronic Software Distribution Промо

Инфостарт напоминает: на нашем сайте можно купить не только ПО, связанное с 1С. В нашем арсенале – ESD-лицензии на ПО от ведущих вендоров: Microsoft, Kaspersky, ESET, Dr.Web, Аскон и другие.

  • Низкие цены, без скрытых платежей и наценок
  • Оперативная отгрузка
  • Возможность оплаты с личного счета (кешбек, обмен стартмани на рубли и т.п.)
  • Покупки идут в накопления для получения скидочных карт лояльности Silver (5%) и Gold (10%)

Мониторинг высоконагруженной системы 38

Статья Системный администратор Программист Нет файла v8 Бесплатно (free) Производительность и оптимизация (HighLoad) Администрирование данных 1С

Высоконагруженной системе (более 8000 клиентских сессий) мониторинг необходим. Про опыт использования инструментов для мониторинга – самописной системы информирования, написанной на C#, и конфигурации «Центр контроля качества» в связке с системой отображения данных Grafana, на конференции Infostart Event 2018 Education рассказал Олег Репников.

13.09.2019    4802    Repich    4       

Новогодние скидки на авторское ПО Промо

В преддверии праздника в Маркетплейсе на Инфостарт действует скидка на все платные авторские программы. Размер скидок начинается от 10%. Советуем не откладывать покупки, многие наши партнеры повышают цены на свои продукты именно в начале нового года.

Использование Zabbix для сбора информации о серверных вызовах и управляемых блокировках с сервера 1С Предприятия, работающего на платформе GNU/Linux 75

Статья Системный администратор Программист Нет файла v8 Linux Бесплатно (free) Администрирование данных 1С Zabbix

Описанные в данном опусе механизмы ни в коей мере не противопоставляются тому, что реализует КИП от 1С или какие-либо другие инструменты (решения)! Это всего лишь еще один взгляд на "проблему", который может быть полезен в некоторых ситуациях.

10.09.2019    9360    Sloth    11       

Онлайн-курс "Технология выполнения проектов ERP-класса – процессный подход". Третий поток. Курс проходит с 21 января по 18 марта 2020 года. Промо

Курс разработан Внедренческим центром «Раздолье». Курс предназначен для подготовки аналитиков, архитекторов и руководителей проектов автоматизации процессов управления с использованием комплексных ИТ-систем (1С:ERP, 1С:УХ, 1С:КА, 1С:УТ). В основе курса лежит методика применения процессного подхода.

9000 рублей

Анализ производительности APDEX 65

Отчеты и формы Системный администратор Программист Внешний отчет (ert,erf) v8 1cv8.cf Бесплатно (free) Производительность и оптимизация (HighLoad)

Отчет для просмотра и анализа замеров производительности в конфигурациях на базе БСП.

31.08.2019    4478    93    YPermitin    7       

Неочевидные проблемы производительности: важность системного подхода при анализе 50

Статья Программист Нет файла v8 Россия MS SQL Бесплатно (free) Производительность и оптимизация (HighLoad)

Часто программисты и 1С-ники сталкиваются с совершенно необъяснимыми на первый взгляд проблемами. Но это потому, что их внимание направлено только на один сегмент системы, а не на всю систему полностью. О том, почему нужно стараться смотреть на ситуацию комплексно, рассказал специалист по производительности компании SOFTPOINT Александр Денисов.

19.07.2019    5192    Филин    12       

Перенос данных КА 1.1 => ERP 2 (ЕРП) (обработка переноса документов, остатков и справочной информации из "1С:Комплексная автоматизация, ред. 1.1" в "1С:ERP Управление предприятием, ред 2"). Обновлен до КА 1.1.115.х и ERP 2.4.10.х Промо

Обработка позволяет переносить из КА 1.1 в ERP 2 документы за выбранный период и остатки. Типовая обработка от фирмы 1С документы не переносит. Также исправлены ошибки типовой обработки. При выходе новых релизов обновление высылается бесплатно в течение года. Разработка будет полезна фирмам-франчайзи, которые периодически выполняют такой перенос данных для заказчиков. Вы можете один раз приобрести обработку переноса, и потом бесплатно получать обновления в случае выхода новых релизов конфигураций 1С.

29700 руб.

Ловля блокировок на связке "Microsoft SQL server - 1С" 38

Статья Системный администратор Программист Нет файла v8 v8::blocking MS SQL Бесплатно (free) Производительность и оптимизация (HighLoad)

Материал относится к базам данных на связке «1С - MS SQL Server». Один из способов отлова блокировок в бд 1С . Переход к управляемым блокировкам через режим "Автоматический и управляемый".

16.07.2019    4760    fhqhelp    0       

Анти-оптимизация: как мы ускорили запрос в 4 раза, сделав его неоптимальным 58

Статья Программист Нет файла v8 Бесплатно (free) Производительность и оптимизация (HighLoad) Практика программирования Решение задач на 1С:Специалист Разработка

В этой статье приведен пример неочевидной "оптимизации" запроса, которая противоречит всем правилам, описанным в книгах для подготовки к сертификации "1С:Эксперт по технологическим вопросам", а также преподаваемым на курсах подготовки экспертов.

02.07.2019    6955    igordynets    119       

Подборка решений для взаимодействия со ФГИС «Меркурий» Промо

С 1 июля 2019 года все компании, участвующие в обороте товаров животного происхождения, должны перейти на электронную ветеринарную сертификацию (ЭВС) через ФГИС «Меркурий». Инфостарт предлагает подборку программ, связанных с этим изменением.

Ускорение чтения правил обмена в УПП 1.3 в 20 раз! 70

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Производительность и оптимизация (HighLoad)

Способ оптимизации чтения правил обмена конвертации данных. Может понадобиться при большом размере правил и высокой периодичности обмена.

27.06.2019    5860    YPermitin    16       

Перенос документов, остатков и справочников КА 1.1 => КА 2 / УТ 11. Обновлено до КА 2.4.10.х и УТ 11.4.10.х! Промо

Более 130 компаний выполнили переход на КА 2 или УТ 11 с помощью нашей разработки! Позволяет перенести не только остатки и справочники (как типовая обработка), но и документы за нужный период времени. Предоставляем техподдержку, оперативно исправляем замечания, выпускаем обновления при выходе новых релизов программ 1С. Вы можете проверить разработку до покупки: сделаем бесплатный тестовый перенос из вашей базы КА 1.1 и предоставим доступ к базе-результату через веб-клиент!

29700 руб.

Хотите снизить нагрузку на процессор сервера в 2 раза? 21

Статья Системный администратор Программист Нет файла v8 Windows Бесплатно (free) Производительность и оптимизация (HighLoad)

В статье рассмотрено влияние частого запуска регламентных заданий на процессор сервера 1С.

27.06.2019    5058    Дмитрий74Чел    6       

Непридуманные истории по оптимизации. История 1 82

Статья Системный администратор Программист Нет файла v8 1cv8.cf Россия Бесплатно (free) Производительность и оптимизация (HighLoad)

Первая статья из планируемого цикла об оптимизации приложений на базе 1С. Без теории. Одна практика.

13.06.2019    8472    Repich    117       

Перенос данных БП 2.0 => УТ 11 / КА 2 / ERP 2 (перенос остатков, документов и справочников из "1С:Бухгалтерия предприятия 8", ред. 2.0 в "1С:Управление торговлей 8", ред.11 / КА 2 / ERP 2). Обновлено до УТ 11.4.10.х, КА 2.4.10.х, ERP 2.4.10.х! Промо

Перенос позволяет загрузить в УТ 11 / КА 2 / ERP 2 документы за выбранный период, справочную информацию и остатки по счетам бух. учета. Переносятся остатки денежных средств, взаиморасчетов, остатки товаров и материалов на складах. Переносятся девятнадцать основных видов документов за выбранный период и вся нормативно-справочная информация. Есть фильтр по организации. Если нужно переносить что-то дополнительно, то обычно бесплатно дорабатываю правила (перед покупкой согласуйте необходимые доработки).

29700 руб.

Оптимизация: неэффективные запросы 7

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Производительность и оптимизация (HighLoad) Практика программирования Разработка

В большинстве случаев основной причиной медленной работы системы при многопользовательском режиме работы является блокировка данных СУБД (говорим про клиент-серверную версию). Блокировка - это не есть хорошо или плохо, это жизненно необходимая вещь при построении прикладной логики работы системы. Но блокировки таблиц, записей могут быть как вполне законными, так и далеко не всегда оправданными в каждой конкретной ситуации. Одной из самых распространенных причин неоптимальной блокировки ресурсов является некорректное написание запросов.

13.06.2019    3380    slayer-ekb    10       

За 5 шагов добавляем мониторинг счетчиков производительности серверов MS SQL и 1С 91

Статья Системный администратор Программист Нет файла v8 Бесплатно (free) Статистика базы данных Производительность и оптимизация (HighLoad)

Мы расскажем и покажем, как добавить данные счетчиков производительности серверов 1С и MS SQL в нашу базу мониторинга за 15 минут. Приведем список наиболее важных из них, опишем основные особенности.

28.05.2019    9803    ivanov660    5       

Программы для исполнения 488-ФЗ: Маркировка товаров Промо

1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.

Не думать о секундах свысока... 56

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Производительность и оптимизация (HighLoad)

Несколько примеров оптимизации типовой конфигурации УТ11. Описанные приемы подходят для многих других конфигураций.

21.05.2019    5243    vasilev2015    21       

Альтернативная стратегия управления блокировками 45

Статья Программист Архив с данными v8 v8::blocking 1cv8.cf Россия MS SQL Бесплатно (free) Производительность и оптимизация (HighLoad)

Данная публикация освещает одну из альтернативных стратегий блокирования данных на уровне MS SQL Server, которая недоступна средствами 1С, но может быть весьма полезной. Разбирается практический пример.

20.05.2019    4637    zhichkin    15       

Перенос данных УТ 10.3 => УТ 11 / КА 2 / ERP 2 (ЕРП 2) (документы, остатки и справочная информация из "1С:Управление торговлей, ред. 10.3" в УТ 11 / КА 2 / ERP 2). Обновлен до УТ 10.3.56.х, УТ 11.4.10.х, КА 2.4.10.х и ERP 2.4.10.х! Промо

Уже более 100 компаний приобрели перенос и выполнили переход на УТ 11 / КА 2 / ERP 2 с помощью нашей разработки! Обработка перехода с УТ 10.3 на УТ 11 / КА 2 / ERP 2 позволяет перенести не только остатки на указанную дату (как типовой перенос), но и все возможные документы за выбранный период. При выходе новых релизов этих программ оперативно выпускаем обновление обработки. Предоставляем техническую поддержку. Можем сделать бесплатный тестовый перенос!

29700 руб.

Как работают управляемые блокировки 122

Статья Программист Нет файла v8 Бесплатно (free) Производительность и оптимизация (HighLoad)

Все типовые конфигурации содержат ошибки, потому как управляемые блокировки в 1С слишком уж "управляемые", при понижении уровня изоляции про некоторые "нюансы" просто забыли. Для создания и эксплуатации качественной системы, которая способна поддерживать транзакционную целостность данных при параллельной работе, информацию в этой статье желательно знать, хотя, конечно, ничего особо нового я не открыл.

29.04.2019    14927    comol    198       

Странное потребление места на диске С 33

Статья Программист Нет файла v8 Бесплатно (free) Производительность и оптимизация (HighLoad)

Решение проблемы постоянного роста папки %AppData%/Local/Temp.

26.04.2019    11371    kuzyara    12       

Очный семинар по регулярному менеджменту Александра Фридмана "Вы или Хаос", 12 декабря 2019 г. , Санкт-Петербург Промо

Семинар по регулярному менеджменту от Александра Фридмана для собственников, первых лиц и топов. Технология управленческого планирования, комплексного управления временем и другими ресурсами, выполнением поручений, делами, информацией, контактами (встречи-звонки-почта).

от 11000 до 29000 рублей

Включение встроенного в платформу механизма "Копии базы данных" и использование "Дата Акселератора". Новый стандартный механизм использования баз OLAP в 1С 51

Статья Системный администратор Программист Нет файла v8 Россия Бесплатно (free) Производительность и оптимизация (HighLoad)

С версии 1С 8.3.14 в платформе появился новый функционал «Копии базы данных». В данной публикации я хочу рассказать, как включить использование данного механизма в платформе 1с и как его использовать для получения отчетов с копии базы данных, которая может быть вынесена на внешний сервер относительно текущей базы данных, а также как использовать систему «Дата акселератор», в которой база данных целиком размещена в оперативной памяти рабочего сервера кластера серверов «1С:Предприятия».

25.04.2019    9419    Elf1k    27       

5 простых шагов и 15 минут на разворачивание инструмента мониторинга проблем производительности базы 1С 203

Статья Системный администратор Программист Нет файла v8 Windows Бесплатно (free) Производительность и оптимизация (HighLoad)

В этой статье мы разберем механизм использования конфигурации "Анализ технологического журнала" на практике, и всего через 15 минут работы вы получите функциональный, удобный инструмент мониторинга проблем производительности базы 1С.

18.04.2019    20080    ivanov660    68       

Программы для исполнения 54-ФЗ Промо

С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.

Как разбить базу на файлы и не сойти с ума 108

Статья Системный администратор Программист Нет файла v8 Бесплатно (free) Производительность и оптимизация (HighLoad)

Разбиение базы данных 1C на файлы и последующее сопровождение. Нюансы, грабли и прочее.

06.04.2019    10359    YPermitin    29       

Как одно изменение конфигурации PostgreSQL улучшило производительность медленных запросов в 50 раз 125

Статья Системный администратор Программист Нет файла v8 1cv8.cf Россия Бесплатно (free) Производительность и оптимизация (HighLoad)

В связи с санкциями и другими событиями сейчас все более и более актуальна тема перевода ПО компаний на отечественное и свободное программное обеспечение. Одной из самых востребанных СУБД на рынке на данный момент является PostgreSQL - надежная, высокопроизводительная и хорошо масштабируемая СУБД, которая является прямым конкуретном таким крупным компаниям с их топовыми продуктами, как Oracle, IBM и Microsoft. Однако каждый, кто переходит на PostgreSQL, сталкивается с трудностями, прежде всего с настройкой и производительностью. Не обошли проблемы с производительностью "слоника" и меня. Предлагаю вашему вниманию перевод статьи "How a single PostgreSQL config change improved slow query performance by 50x" автора Pavan Patibandla, которая мне помогла улучшить производительность PostgreSQL.

18.03.2019    11126    w.r.    23       

Перенос данных БП 3.0 => УТ 11 / КА 2 / ERP 2 (ЕРП) (перенос остатков, документов и справочной информации из "1С:Бухгалтерия предприятия 8", ред.3.0). Обновлено до БП 3.0.73.х, УТ 11.4.10.х, КА 2.4.10.х., ERP 2.4.10.х! Промо

Переносятся документы за выбранный период, справочная информация и остатки по счетам бух. учета в программу УТ 11 / КА 2 / ЕРП 2 (ERP). Переносятся все возможные виды операций ввода остатков на нужную дату. Есть отбор по периоду переноса документов и фильтр по организации, доступен выбор даты ввода остатков. Если нужно переносить что-то дополнительно, то обычно бесплатно добавляем это в перенос . Смотрите видеодемонстрацию со звуком - советами по переносу и рекомендациями настройки программ.

29700 руб.

Простое программное решение проблем с блокировками SQL 17

Статья Системный администратор Программист Нет файла v8 v8::blocking 1cv8.cf Россия Бесплатно (free) Производительность и оптимизация (HighLoad)

Описание одного из способов программного решения проблемы блокировок при проведении документов в клиент-серверной 1С.

06.03.2019    6728    dmitrydemenew    38