Запрос vs Объект + результат эксперимента, вполне реального

01.11.12

Разработка - Запросы

Использование 1с-запроса для доступа к данным имеет преимущество в скорости перед объектной моделью при ожидаемом объеме выборки более 10 000 ссылок. Конкретный результат: 0.07 секунды при запросе против 0.0023 секунды при использовании объектной модели.

Скачать файлы

Наименование Файл Версия Размер
Выгрузка тестовой базы
.dt 924,59Kb
18
.dt 924,59Kb 18 Скачать
ПриПолученииДанных
.epf 8,08Kb
3
.epf 8,08Kb 3 Скачать

Каждый 1снег «знает», что «в восьмерке надо использовать запросы». В первую очередь это – результат работы отдела маркетинга «флагмана». Сами же 1снеги (старого поколения) так ненавидели запросы в 7-ке, что повелись на подачу «флагмана» весьма охотно и некритически. А потом это стало так же привычно, как «всемирность» ньютонова тяготения.

Повод для сомнения дал ламерский вопрос на ИС. Нет, поначалу дружные вопли «Запрос! Запрос!» ничего не вызвали, кроме желания, чтобы орали по-тише. Зацепила совершенно фантастическая конструкция автора вопроса:

ДокументОбъект = Документы.ЖурналПроизводственныхЗаданий.ПолучитьСсылку(Ссылка).ПолучитьОбъект();
КопируемоеЗначение = ДокументОбъект.СпецификацияУзлов.ВыгрузитьКолонку(Колонка).Получить(Строка-1);

 

А потом в подсознании всплыло, что скульные базы еще в семёрошные времена рекомендовались для объемов и надёжности, а в скорости локальные файловые скуль превосходили.  И как-то сам собой набросался простенький тестик, см. пост (12) в той ветке.

Объектная модель не просто оказалась быстрее, а прямо таки уделала запрос.

Замечания коллеги sonuchin3  несколько снизили накал страстей, и было решено доработать условия теста, чтобы получить цифры достаточно сопоставимые с учетом кэширования.

В серии тестовых 100 000-ных циклов проводились обращения к разным количествам оригинальных ссылок, результат – см. табличное поле на рисунке.

Тестовая конфигурация – с массивом документов и обработкой – прилагается.

**

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

Т.е. мы всего лишь получили исходные цифры для эксперимента: 500 раз возьмем из массива документов порции по 200 ссылок, это и даст нам хорошее сравнение способов доступа к данным - для этого конкретного, простейшего на самом деле, случая.

ЧАСТЬ 2. Результаты эксперимента, приближенного к реальности.

Для сравнения скорости доступа к данным был поставлен следующий эксперимент.

На форме создана таблица типа ДокументСписок.РеализацияТоваровУслуг

В таблицу добавлена колонка с полем ввода типа СправочникСсылка.Номенклатура

На форме размещен радио с двумя позициями – способами получения данных:

0 – запросом, 1 – объектом

 

Для таблицы определен обработчик ПриПолученииДанных

В зависимости от положения радио колонка Номенклатура заполнялась тем или иным способом.

 

 

 

Для обоих положений радио:

  1. текущая строка помещалась вверх списка
  2. включался замер производительности
  3. текушая строка стрелкой вниз перемещалась по списку до конца
  4. снимался скрин замера

 

Результаты представлены на картинках:

 

Складывая значимые цифры, получаем

Для способа запросом: 0,07 сек

Для объектом: 0,0023 сек

 

Обработку можно скачать и попробовать.

См. также

SALE! 20%

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 10400 руб.

02.09.2020    121552    670    389    

709

Для чего используют конструкцию запроса "ГДЕ ЛОЖЬ" в СКД на примере конфигурации 1С:ERP

Запросы СКД Платформа 1С v8.3 Запросы Система компоновки данных 1С:ERP Управление предприятием 2 Бесплатно (free)

В типовых конфигурациях разработчики компании 1С иногда используют в отчетах, построенных на СКД, такую конструкцию, как "ГДЕ ЛОЖЬ". Такая конструкция говорит о том, что данные в запросе не будут получены совсем. Для чего же нужен тогда запрос?

13.02.2024    5738    KawaNoNeko    23    

23

Набор-объект для СКД по тексту или запросу

Запросы СКД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Есть список полей в виде текста, или запрос - закидываем в набор СКД.

1 стартмани

31.01.2024    1998    2    Yashazz    0    

29

Запрос 1С copilot

Инструментарий разработчика Запросы Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Пишем на человеческом языке, что нам надо, и получаем текст запроса на языке 1С. Используются большие языковые модели (LLM GPT) от OpenAI или Яндекс на выбор.

5 стартмани

15.01.2024    6276    30    mkalimulin    25    

49

PrintWizard: поддержка представлений ЗУП в конструкторе

Инструментарий разработчика Запросы Платформа 1С v8.3 Бесплатно (free)

Одной из интересных задач, стоящих в процессе разработки, была поддержка механизма представлений в ЗУП. Но не просто возможность исполнения запросов с ними. Основная проблема была в том, чтобы с ними было удобно работать, а именно: создавать, модифицировать и отлаживать. Кратко о том, что в итоге получилось...

14.12.2023    1739    vandalsvq    7    

29

Объектная модель запроса "Схема запроса" 2

Запросы Платформа 1С v8.3 Запросы Конфигурации 1cv8 Бесплатно (free)

Далеко уже не новый тип данных "Схема запроса". Статья о том, как использовать его "попроще". Примеры создания текста запроса с нуля и изменение имеющегося запроса.

06.12.2023    5382    user1923546    26    

43

Начните уже использовать хранилище запросов

HighLoad оптимизация Запросы

Очень немногие из тех, кто занимается поддержкой MS SQL, работают с хранилищем запросов. А ведь хранилище запросов – это очень удобный, мощный и, главное, бесплатный инструмент, позволяющий быстро найти и локализовать проблему производительности и потребления ресурсов запросами. В статье расскажем о том, как использовать хранилище запросов в MS SQL и какие плюсы и минусы у него есть.

11.10.2023    16156    skovpin_sa    14    

98
Внимание! Тема закрыта. Добавлять сообщения в закрытую тему запрещено.
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. tango 506 25.10.12 16:00 Сейчас в теме
см. часть вторую - результат ПриПолученииДанных двумя способами - запрос медленнее объекта в 30 раз
2. Altair777 644 25.10.12 16:54 Сейчас в теме
Просто в 8-ке через запрос стало как-то привычнее выбирать :)
Несомненно, в 7-ой версии с запросами было просто мучение. А вот в 8-ке такие выборки можно писать в реал-тайме в консоли запросов и вживую видеть результат.
3. tango 506 25.10.12 17:01 Сейчас в теме
(2) Altair777, ну да, привычка. ощущение избранности: я вертел СКД!
а оказывается, что надо выбирать - где объект лучше, где - запрос
4. tango 506 25.10.12 17:02 Сейчас в теме
(2) Altair777,
можно привыкнуть в реалтайме пользоваться таблом :)
5. tango 506 25.10.12 18:17 Сейчас в теме
таки что-то не то
не обходит эта схема теста проблемы кеша
надо сделать накопление результата на оригинальных ссылках во всей серии
6. romansun 193 26.10.12 01:13 Сейчас в теме
ох, наброс так наброс...

нет смысла сравнивать подход, вполне достаточный в работе с базами на простеньком файл/сервере, с dt на 100мб, кол-вом активных юзеров от 0 до 2 шт (терминалом) и т.п.


с подходом, критически необходимым к базам на мощных зубодробительных sql-серверах, с гигабайтными dt и с кол-вом активых юзеров в >100500 человек и т.д.


это совершенно разные вселенные, между ними только что язык написания кода одинаков..
7. Арчибальд 2706 26.10.12 08:30 Сейчас в теме
Если отвлечься от конкретных деталей реализации, по тексту запроса строится (отфильтрованный) массив индексов для файла(ов) .dbf, а выполнение запроса - это цикл по этому массиву. Объектная модель использует предопределенные (готовые) индексные массивы, которые требуется только отфильтровать. Естественно, эта модель хорошо работает только в "простых" случаях.
MaxDavid; hogik; Hany; +3 Ответить
9. petrov_al 10 27.10.12 13:05 Сейчас в теме
(7) Арчибальд, а можно поподробнее об этом..."по тексту запроса строится (отфильтрованный) массив индексов для файла(ов) .dbf, а выполнение запроса - это цикл по этому массиву"...или ссылочку по этой теме.
12. hogik 443 27.10.12 18:07 Сейчас в теме
(7)
Присоединяюсь к просьбе из (9) сообщения. ;-)
И еще хочется узнать - почему слово "простых" заключено в апострофы?
Думаю, почти (без привнесенных извращений "запросным" ЯМД) во всех случаях эта модель работает хорошо.
А "если отвлечься от конкретных деталей реализации"(с), то в "объектной модели" индексы массивы индексов не строятся по "тексту запроса"(с), а существуют (определены) изначально в схеме базы данных...
P.S. Хотя, про "массив индексов" - это действительно "тонкости и детали". ;-)
15. Арчибальд 2706 29.10.12 07:58 Сейчас в теме
(12) Я ж и говорю
Объектная модель использует предопределенные (готовые) индексные массивы

(9) Ссылку не дам. Я написал это "с точки зрения банальной эрудиции". Структура данных (реляционная модель) именно на такие обращения и заточена.
16. hogik 443 29.10.12 16:16 Сейчас в теме
(15)
"Я ж и говорю"(с)
Я уже потом понял Вашу формулировку. ;-)
Возможно, что перед словом "Объектная" должно стоять "А".
Но, мой вопрос про апострофы остался без Вашего ответа...
8. tango 506 26.10.12 10:30 Сейчас в теме
Спасибо за поддержку и каменты, коллеги.

Думаю, попробовать сравнить ПриПолученииДанных в форме списка
10. nomadon 367 27.10.12 13:25 Сейчас в теме
11. iov 406 27.10.12 15:39 Сейчас в теме
(10) Это так похвастался? Или просто мимо проходил? :)
13. tango 506 28.10.12 11:50 Сейчас в теме
ну да, ну да
документацию почитать полезно бывает
Однако запрос будет выполнять считывание из базы данных при каждом вызове. Соответственно, при многократном обращении к одним и тем же данным будет выполняться многократное считывание. Этого можно избежать, обращаясь к свойствам ссылки. В этом случае используется кэширование объектов и в определенном интервале времени при повторном обращении к данным объекта не будет выполняться повторное считывание.


актуально остается попробовать запрос<>объект при получении данных
14. tango 506 28.10.12 12:23 Сейчас в теме
еще читаем доку
При использовании запроса вся считанная информация передается на клиентский компьютер и размещается в оперативной памяти. Если требуется обработать очень большие объемы информации, то можно рекомендовать использовать выборку. Выборка не предоставляет широких возможностей по отбору и упорядочиванию информации и считывает все поля и табличные части объектов, но зато она выполняет считывание порциями и, соответственно, может использоваться для обработки любых объемов данных без помещения их в оперативную память.

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

С точки зрения поиска объектов (ссылок на объекты) по простым условиям (по коду, по наименованию и т.д.) использование запроса и методов менеджеров объектов (НайтиПоКоду() и др.) не имеют существенных отличий по реализации с точки зрения платформы. Методы менеджеров имеет смысл использовать, если выполняются именно одиночные операции поиска. Основным преимуществом методов менеджеров является краткость записи в модуле. Если необходимы сложные условия или поиск нескольких объектов, то необходимо использовать запрос.
17. kiros 52 31.10.12 09:17 Сейчас в теме
Считаю автор вводит в заблуждение молодые неопытные головы, в самом начале статьи надо крупно писать "ФАЙЛОВАЯ ВЕРСИЯ", этого не увидел, засомневался: "Может от жизни отстал". Для файловой базы согласен, и даже больше скажу, что на практике такие заскоки платформы были (с переходом на 8.2 начальные релизы), что запросы на порядок медленнее отрабатывали. НО, не забываем про молодые горячие головы, которые сейчас возьмут и в клиент-серверных вариациях начнут такое "колбасить", и с пеной у рта доказывать что вот люди писали, что так быстрее, за что будут незамедлительно отправлены восвояси учить мат. часть! И не забываем что все маленькое когда-то вырастает, и что тогда? переписывать :0
18. tango 506 31.10.12 10:06 Сейчас в теме
(17) kiros, ценность вашей оценки... нет, не так.
ваша оценка имела бы некоторую ценность, сопроводись она каким-нито тестом
19. kiros 52 31.10.12 10:16 Сейчас в теме
(18) я написал, что справедливость этой статьи относится к ФАЙЛОВОЙ ВЕРСИИ БД или этого ПРОСТЕЙШЕГО случая, если это указать в тексте статьи ВНАЧАЛЕ И ЯВНО сразу поставлю "+", а так, считаю что статья вводит в заблуждение, особенно если прочитать не сильно вчитываясь.
20. tango 506 31.10.12 10:25 Сейчас в теме
(19) kiros, я, наверное, плохо выразил мысль.
статья сопровождена конфигурацией, которую любой желающий может развернуть у себя хоть в файло, хоть в сервер, и погонять своими ручками.

в вашем же "замечании" ничего кроме вашего же "имхо" нет

вот я и говорю - бла-бла-бла стоит недорого
21. kiros 52 31.10.12 11:23 Сейчас в теме
(20) весь смысл публикации свелся к последнему предложению, т.е. для каждого конкретного случая, базы и задачи. (пришлось перечитывать навеявшую публикацию) Тогда да, в таком случае красота, только эта красота далека от жизни, на практике такая задача одна на ... я даже не припомню были, ли у меня такие задачи.
27. tango 506 31.10.12 12:31 Сейчас в теме
(21) kiros,
эта красота далека от жизни

было предложено для эксперимента ПриПолученииДанных - задача весьма востребована (трудно даже придумать более востребованную), и как раз попадает в область преимущества объекта
25. tango 506 31.10.12 12:27 Сейчас в теме
быстрее работают даже на меньших выборках в условиях многопользовательской работы

ну, собственно, см. (20)
31. mxm2 1263 31.10.12 12:47 Сейчас в теме
(25) про тестирование - ничего сказать не могу. Да. Но есть такой опыт:

1. работа пользователей в количестве 10-20 человек субъектовно ощущается более конфортной при использовании SQL базы вместо файловой.
2. при активной работе пользоваталей на SQL базе производительность запросов напрямую зависит от производительности SQL сервера, в то время как объектная модель менее подвержена этому влиянию, поскольку исполняется в пределах "Сервера 1С".

ЗЫ. будет время оттестю Вашу систему.
22. mxm2 1263 31.10.12 11:49 Сейчас в теме
Не забываем, что запросом гораздо проще контролировать права (предложение "Разрешенные"), а также то, что запросы быстрее работают даже на меньших выборках в условиях многопользовательской работы (для этого и рекомендуется SQL). Ну и субъективно: запросы более наглядны.
23. tango 506 31.10.12 12:22 Сейчас в теме
(22) mxm2,
запросы более наглядны

часто ли вам приходилось "парсить" запросы в ЗуПе, коллега?
philya; vladir; +2 Ответить
24. tango 506 31.10.12 12:26 Сейчас в теме
(22) mxm2,
запросом гораздо проще контролировать права (предложение "Разрешенные")

утверждаете ли вы, что объектный доступ игнорирует ограничения РЛС? если нет, по поясните. пожалуйста, это свое "проще"
28. mxm2 1263 31.10.12 12:32 Сейчас в теме
(24) а разве не игнорирует? (и не выдает ошибку?)
29. tango 506 31.10.12 12:35 Сейчас в теме
(28) mxm2, хорошая тема для публикации, дарю :)
30. AlexO 135 31.10.12 12:38 Сейчас в теме
(28) mxm2,
РЛС ограничивает доступ на уровне записи в базе, а не на уровне "всевдообъектов" 1С.
Чтобы получить "объект" 1С - нужно сначала прочитать его из базы. А этого как раз и не даст сделать ограничение РЛС.
32. mxm2 1263 31.10.12 13:34 Сейчас в теме
(30) AlexO, (29) ... прикольно, усомнился даже, но вот код:

Выборка = Справочники.Партнеры.Выбрать();
Пока Выборка.Следующий() Цикл
Стр = Стр + Выборка.Наименование;
КонецЦикла;


в условиях ограничения прав дает ошибку "У пользователя недостаточно прав на исполнение операций с базой данных"
33. tango 506 31.10.12 14:21 Сейчас в теме
(32) mxm2, да, вы правы, РАЗРЕШЕННЫЕ перекладывает проблемы на платформу.
но!
1. общим местом являются тормоза при рлс
2. в языке есть методы, позволяющие разрулить ситуацию, ПараметрыДоступа и банальная попытка

так что опять - фифти-фифти, решаем по месту
34. mxm2 1263 31.10.12 14:34 Сейчас в теме
(33) "Попытка" - сама тормозная, причем исполнятся будет пообъектно (последнее касается и "ПараметровДоступа"), что не есть гуд, в сравнении с запросом. решение 50/50 - приводит к тому, что придется вообще 2 кода писать (и запросом и объектом), и использовать в зависимости от предполагаемого количества элементов (как-то мне не нравится эта мысль )) ), и потом как перед заказчиком обуславливать, что мол на это нужно в 2 раза больше времени, чтобы работало "быстро".
35. tango 506 31.10.12 14:37 Сейчас в теме
(34) mxm2,
перед заказчиком обуславливать
эк вас торкнуло-то, батенька
38. mxm2 1263 31.10.12 14:48 Сейчас в теме
(35) не то слово... + позволю высказать теоретическое соображение: т.к. в условиях работы более мощного SQL сервера запросы выполняются быстрее по сравнению с менее мощным, аналогично как и в случае использования более мощной системы на которой расположен "Сервер 1с" - пообъектной перебор будет быстрее чем в условиях использования менее мощной, то задача еще более усложняется, т.к. появляется зависимость от конкретного оборудования, на котором все это дело "исполняется"
40. tango 506 31.10.12 14:52 Сейчас в теме
(38) mxm2, ну, хромая лошадка по имени "кластер 1С" все равно вынуждена транслировать обращения клиента, хоть "объектные", хоть "запросные" в мелкомягкий (или другой) диалект
46. AlexO 135 31.10.12 15:18 Сейчас в теме
(40)
кластер 1С

да и не кластер это в общем, а авторассовывание клиентских подключений по разным машинам.
50. AlexO 135 31.10.12 15:28 Сейчас в теме
(38) mxm2,
т.к. в условиях работы более мощного SQL сервера запросы выполняются быстрее по сравнению с менее мощным, аналогично как и в случае использования более мощной системы на которой расположен "Сервер 1с" - пообъектной перебор будет быстрее

ничего подобного.
Никакой прямой связи "запросы - это только SQL, объекты - это только 1С" нет и не было.
На самом деле вся производительность зависит на 90% от производительнотси 1С-сервера, а SQL уже вторичен.
Все - и запросы, и выборки, и объекты, и все-все-все в 1С обрабатывает 1С-сервер (платформа).
А SQL дает только "сырые" данные, причем в объеме, зачастую много-сотен-раз-кратно превышающими нужные данные.
Ибо 1С-севрер не может путью оптимизировать запрос к SQL, и совсем практически не использует SQL как СУБД, а только - как хранилище таблиц с данными (исключая простейшие запросы, которые, можно сказать, один-в-один ложатся из 1С через её транслятор в обработчик запросов SQL).
Вся обработка происходит на сервере 1С.
И, естесственно, сам SQL ничего не знает о "закидонах" 1С и что там надо обработать и вытащить.
Еще про индексы скажите...
А то и так мало обсудили пресловутую работу 1С-сервера на ИС...
45. AlexO 135 31.10.12 15:17 Сейчас в теме
(32) mxm2,
в условиях ограничения прав дает ошибку

все правильно, а в чем противоречие?
Вы не знаете, как формируются выборки, а как - запросы в 1С?
(33)
РАЗРЕШЕННЫЕ перекладывает проблемы на платформу

они ничего не перекладывают, это только инструкция "не ругаться на "нечитаемые" записи" в результатах запросов :)
Ибо обратное "как в выборках" невозможно - отругаться "нет прав", когда выполняется запрос. Вот и выход либо ошибка выполнения запроса, либо - РАЗРЕШЕННЫЕ.
48. mxm2 1263 31.10.12 15:22 Сейчас в теме
(45) AlexO, "разрешенные" - делает объединие с неким запросом по "правам" в результате выбираются только "нужные, доступные пользователю" элементы (все это делает SQL в случае SQL базы). в объектоной же модели - в любом случае приходится перебирать все и из них использовать доступные.
49. tango 506 31.10.12 15:26 Сейчас в теме
(48) mxm2, в объекте кто генерит отлуп, "кластер" или скл?
**
вы уверены, что объединение "правного" запроса и запроса к данным выполняется не в "кластере"?
53. AlexO 135 31.10.12 15:39 Сейчас в теме
(48) mxm2,
все это делает SQL в случае SQL базы

SQL ничего не делает из вами перечисленного, а "тупо" (так как поставлен 1с-ом в роль тупой "животины-хранилища") выдает все запрошенное и незапрошенное, но связанное с запрошенным.
И знать ничего не знает ни о каких RLS.
RLS - это сугубо 1совая недоподелка, которая до сих пор в бета-тесте, без документации, и, видимо, так же тихо будет задвинута в угол скоро, т.к. у же лет 5 никаких подвижек и исправления проблем не наблюдается в нем.
Огранчиение записей в MS SQL не было и нет, еще только планируется, и то - в простейшем виде (но время покажет, эти люди серьезные, не 1с).
В других SQL (Оракл) уже есть более продвинутые реализации "RLS".
Но 1С НИКОГДА не будет использовать встроенные в СУБД RLS, ибо:
- это надо менять всю платформу напрочь
- это надо переписывать все конфы подчистую (запросы конкретно в них)
- в разных SQL - разная реализация RLS, причем кардинально отличающаяся от "конкурента", со своими уникальными фишками/функционалом (Postgre И Oracle, а скоро и MS SQL).
в объектоной же модели - в любом случае приходится перебирать все

и при выборке, и при запросах - все окончательно отбирает 1С сервер, он же принимает решение об ограничении RLS, и он же в одном случае отрабатывает с ошибкой "нет доступа" (выборки), а в другом - "ошибка запроса" (понятно где).
Вот такая ... неумелая 1С :)
А "объединение запроса RLS с основным запросом" - все это делает 1С сервер.
На стадии пост (вернее, основной, главной для 1С) обработки результата запроса/выборки.
Так чем отличается 1с-ные выборка от запроса со стороны SQL? :)
56. mxm2 1263 31.10.12 15:49 Сейчас в теме
(53) AlexO, в некоторой части позволю с Вами не согласится, а именно был такой опыт: на трехзвенке база УТ 10.3, 50 пользователей - замена сервера SQL (как железки) дала заметный прирост, "на глазок" - раза в 4. )

по поводу того как что работает - это все домыслы (что с Вашей, что с моей сторны), ибо никто из нас не имеет исходников нашей горячо любимой платформы.
60. AlexO 135 31.10.12 15:55 Сейчас в теме
(56) mxm2,
замена сервера SQL (как железки)

сделайте наоборот - поставьте маломощный 1С и сильный SQL :)
И все сразу поймете.
А то, что наверняка ваш SQL не успевал "кормить" данными 1С сервер - так то ж понятно, что сделай даже сеть не гигабит, а 10 МбИт - жди тормозов :)
Но из этого не следует, что сеть вообще как-либо участвует в обработке данных, не так ли?
65. mxm2 1263 31.10.12 16:09 Сейчас в теме
(60) AlexO, не та была ситуация, а именно до внедрения трехзвенки все (SQL и 1С) вертелось в пределах одного сервера "железки", и было реально тормознуто, даже по сравнению с трехзвенкой (со старым SQL).

кстати, замена "объектных" выборок на запросы - давно признанный официальный способ "оптимизации".


откуда такая инфа?
и еще все справочники предполагаются "маленькими"?
67. AlexO 135 31.10.12 16:16 Сейчас в теме
(65) mxm2,
трехзвенки все (SQL и 1С) вертелось в пределах одного сервера

три раза "ха-ха" :))
Начиная с 8.2 бессмысленно ставить SQL и 1С на одну машину - будут пинаться и отбирать друг у друга ресурсы, ибо SQL пытается занять столько памяти, сколько у него запросили данных (а аппетиты у 1С все время растут - растут и объемы затребованных ресурсов у SQL), а 1С-сервер вообще плевать хотел, кто там рядом крутится, и считает, что кроме него во всей вселенной больше нет никого, и берет столько, сколько позволит унести ОС: хоть памяти, хоть процессорного времени, хоть чего.
69. mxm2 1263 31.10.12 16:21 Сейчас в теме
(67) AlexO, трехзвенки были еще на 8.1 (даааавно это было). а по поводу пиннают друг-друга по памяти, так это настраивается ). причем это несколько раз в разных вариантах описано на инфостарте.

и где ответ на уточняющие вопросы: повторю их по памяти:

кстати, замена "объектных" выборок на запросы - давно признанный официальный способ "оптимизации".


откуда такая инфа?
и еще все справочники предполагаются "маленькими"?
72. AlexO 135 31.10.12 16:23 Сейчас в теме
(69) mxm2,
так это настраивается ).

видимо, память динамически подсовывается в плату? :D
На что вы настраиваетесь, когда "настраиваете" сервер?
79. mxm2 1263 31.10.12 16:33 Сейчас в теме
(72) AlexO, если памяти достаточно, то все работает быстро и не конфликутет, любой объем памяти требует настройки со стороны сервера 1с и SQL (MS) в пределах одного сервера (железки), как раз чтобы не было конфликтов и 1с сервер не выпадал в своп.
83. AlexO 135 31.10.12 16:37 Сейчас в теме
(79) mxm2,
если памяти достаточно

на 8.2.15.317-318 еще не работали?
крайне советую, причем с одновременной установкой на сервер 64 гигов памяти и более :)
и 1с сервер не выпадал в своп.

в космос он выпадает, причем в район черной дыры, не меньше.
89. mxm2 1263 31.10.12 17:01 Сейчас в теме
(83) AlexO, возможно на указанном не пробывали... но работает на 8.2.16.352.) памяти всего 24, server 64 бит настроено 2 рабочих процесса.
92. AlexO 135 31.10.12 17:19 Сейчас в теме
(89) mxm2,
8.2.16.352

ну так скорей ставьте 8.2.15.317! :)))
136. sanfoto 502 06.11.12 13:27 Сейчас в теме
(67) AlexO,
со всеми Вашими высказываниями касательно "Сервера 1С" +"SQL" - и то что он тупо юзает SQL как хранилище Абсолютно согласен))

Но не совсем согласен с ниже описанной Вашей цитатой))
три раза "ха-ха" :))
Начиная с 8.2 бессмысленно ставить SQL и 1С на одну машину - будут пинаться и отбирать друг у друга ресурсы

По моим данным можно настроить для примера - 2-ух процессорную схему:
(на основе процессоров и операционных систем поддерживающих NUMA-узлы)
1)Настраиваем для SQL -использование ядер только "NUMA-узла №2" + фиксируем ему(SQL) МАКС=МИН Объем RAM = примерно 1/2 всей оперативки.
2)Настраиваем запуск сервера 1с для запуска только на ядрах "NUMA-узла №1" - это уже настраивается несколько нестандартно))


PS:
Если вы укажите РЕАЛЬНЫЕ конфигурации железа на сравнимых Процессорах - в РАЗДЕЛЕННОМ по СЕТИ варианте и чтобы производительность не падала в сравнении со ВСЕ В ОДНОМ))) тогда изменю свое мнение.
138. sanfoto 502 06.11.12 13:42 Сейчас в теме
+к (136)
т.к. Вы же сами утверждаете что 1С использует SQL тупо как хранилище - я немного перефразирую))
- это т.е. грубо -"тупо как файловую систему" (далее сокращенно ФС) -
и следовательно локальный доступ к ФС будет таки быстрей чем доступ к ФС по сети не так ли? ))
141. mxm2 1263 06.11.12 15:31 Сейчас в теме
(136) sanfoto, у меня без разузлования настроено, и никто никого не пиннает, настроено ограничение по используемой памяти MS SQL и соответственно для рабочих процессов сервера 1С. Ситуации выпадения сервера 1С в своп - не наблюдается при 24 Гб ОЗУ.
174. AlexO 135 07.11.12 11:36 Сейчас в теме
(141) mxm2,
и никто никого не пиннает

а когда никто в 1с-ке и не работает - то и 1с-ка вполне себе такая вся причесанная и красивая.
157. AlexO 135 07.11.12 10:41 Сейчас в теме
(136) sanfoto,
Если вы укажите РЕАЛЬНЫЕ конфигурации железа

это пусть студенты разбираются с персоналками а-ля "сервера" и меряются, какой процессор круче.
На основе знакомства с десятками НАСТОЯЩИХ серверов, работающих под 1С - скажу, что уживаться они не могут под одной "крышей" с SQL, т.к. 1С совершенно неоптимизирована, и сколько ей не дай - все мало.
А когда они на одном железе крутятся - то разделение - это первое, что делается для хоть какого-то расшевеления 1С.
Т.е. вопрос поставить "более мощный, с 128 гигов памяти, с новейшим процепссором" НИКОГДА НЕ СТОИТ - ибо бессмысленен, если сейчас уже все тормозит на одном.
(155) sanfoto,
просто вопрос RLS меня оччень интересует.. на днях запустим в УПП))

ну так и начните с азов, профайлер ничего вам по РЛС не покажет.
70. AlexO 135 31.10.12 16:22 Сейчас в теме
(65) mxm2,
откуда такая инфа?

задайте на партнерке вопрос "медленно выборка идет..." - и сразу узнаете источник инфы :)
и еще все справочники предполагаются "маленькими"?

не "все", а есть много справочников, из которых делаются выборки, но они отнюдь не такие монстры, каким обычно становится справочник Номенклатуры, и - реже, - Контрагентов.
И вы бы не на запросы к справочникам (которые хоть и "родственники" по структуре документам, а по смыслу - регистрам, но менее гибче первых и тормознее последних) смотрели в первую очередь, если хотите чему-то научиться на поле 1С, а на запросы к регистрам всевозможных форм и размеров.
74. mxm2 1263 31.10.12 16:26 Сейчас в теме
(70) AlexO,
задайте на пранерке вопрос "медленно выборка идет..." - и сразу узнаете источник инфы :)


что за такой "пранерк"? не яндекс случаем?

http://yandex.ru/yandsearch?text=%D0%BC%D0%B5%D0%B4%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE+%D0%B2­%D1%8B%D0%B1%D0%BE%D1%80%D0%BA%D0%B0+%D0%B8%D0%B4%D0%B5%D1%8­2&lr=51
76. AlexO 135 31.10.12 16:30 Сейчас в теме
(74) mxm2,
это парнерский сайт 1С
http://partners.v8.1c.ru/
умейте правильно переставить буквы :)
80. mxm2 1263 31.10.12 16:34 Сейчас в теме
(76) AlexO,
умейте правильно переставить буквы :)

- моя дислексия отличается от Вашей )

и нет у меня "NFR-версии комплекта" - "любитель" я по Вашей классификации )
82. AlexO 135 31.10.12 16:36 Сейчас в теме
(80) mxm2,
у меня тоже нет, я просто "партнер" :))
ну, или без кавычек партнер :)
62. AlexO 135 31.10.12 15:59 Сейчас в теме
(56) mxm2,
по поводу того как что работает

за работой обоих серверов понаблюдайте хотя бы в течении дня - загрузка, последовательность, передача данных по сети ;)
ибо никто из нас не имеет исходников нашей горячо любимой платформы.

и никогда их не будет в лицензии GPL - ибо этот день будет началом краха 1С как баблозарабатываля на невежестве.
54. AlexO 135 31.10.12 15:44 Сейчас в теме
(48) mxm2,
все это делает SQL в случае SQL базы

да, конечно, вы бы прикинули - а кто делает запросы и выборки в случае файловой базы 1С? :)
Платформа мутирует под каждый случай?
58. mxm2 1263 31.10.12 15:52 Сейчас в теме
(54) AlexO, так уж случилось что с файловой практически не работаю... объемы не те ))).
94. logos 208 31.10.12 17:24 Сейчас в теме
(54) AlexO, Спасибо, ещё одна пелена спала с глаз :)
Я наивный тоже думал что этот "РЛС" пристраивается в условие запроса к БД или джойн дополнительный там крячит, ан нет простейший тест на профайлере показал как обстоят дела на самом деле :)
96. AlexO 135 31.10.12 17:30 Сейчас в теме
(94) logos,
киньте свежий пример запроса "с РЛС" сюда, а то народ заволнуется - "что за профайлер, там можно править РЛС-запросы, да?!" :))
97. AlexO 135 31.10.12 17:33 Сейчас в теме
(94) logos,
что этот "РЛС" пристраивается в условие запроса к БД

просто никто даже не может прикинуть стоп-вопрос себе чисто с другой стороны - "а откуда знаменитые тормоза в 1С при использвоании RLS, если все гладко идет в обработку на SQL-сервере?!
26. mxm2 1263 31.10.12 12:31 Сейчас в теме
в ЗиУПе запросы конечно - громоздкие, но, как привило, там почти все понятно, если предварительно распечатать их на надцати листах и потом "карандашиком" произвести "анализ". Иногда даже, то, что запрятано в этих запросах, на мой взгляд, должно быть сделано в пределах объектной модели, но не думаю, что реализация будет более понятной и менее громоздкой.
36. tango 506 31.10.12 14:41 Сейчас в теме
кроме номенклатуры есть много "простых" справочников, где больше пары десятков записей не бывает
39. mxm2 1263 31.10.12 14:50 Сейчас в теме
(36) про микро справочники речь и не идет, но ведь слишком часто их приходится "вязать" с большими.
41. tango 506 31.10.12 14:53 Сейчас в теме
(39) mxm2, и вот здесь мы (плавно не) переходим от бла-бла-бла к более-менее моделирующим реал тестам
37. tango 506 31.10.12 14:42 Сейчас в теме
кстати, "объяснять" клиенту, что тормоза из-за рлс - да, реально приходилось
43. mxm2 1263 31.10.12 14:56 Сейчас в теме
(37)
кстати, "объяснять" клиенту, что тормоза из-за рлс - да, реально приходилось

ага и даже "справлятся" с ними приходилось, иногда даже "оптимизацией" запросов )), но что греха таить - наращивание серверной мощности - универсальный ответ, хоть и не дешевый.
42. tango 506 31.10.12 14:55 Сейчас в теме
вообще, по поводу трехзвенки, столько долго выжидаемой 1снегами, получилась очередная опа
чё б ни ограничиться клиентами, работающими с SQL?
**
ну, не так, чтобы как 77, а как у людей
44. mxm2 1263 31.10.12 15:14 Сейчас в теме
(42) согласен со всем, но выбора нет... или это предложение спрыгнуть с 1С?
про бла-бла-бла тоже... но это человчья сущность, "пивом не корми а дай пообщаться" (с)
47. tango 506 31.10.12 15:21 Сейчас в теме
(44) mxm2, что значит "спрыгнуть"?
лишать себя гарантированного куска, сменив свою специализацию? нафиг-нафиг
перевести бухию?.. просто не на что, не зачем, не реально, не наше дело, да и просто глупо
короче, жрать кактус - есть такая профессия

а потрындеть - это да. с другой стороны, огоньку не хватает :)
**
вот, коллега Алекс нам щас огоньку поднесет :)
51. AlexO 135 31.10.12 15:29 Сейчас в теме
(47)
вот, коллега Алекс нам щас огоньку поднесет :)

а то! вижу очередного студента :)
mxm2, у вас еще нет в активе обработки "прямые доступы к SQL или как убыстрить работу 1С"? :))
63. mxm2 1263 31.10.12 16:01 Сейчас в теме
(51) AlexO, одну идею (подарок) от tango уже пришлось "забраковать", возможно это и к Вашему предложению относится ))... так то я с SQL - на "Вы". Просто не отрицаю очевидный факты своего, пусть и небольшого, опыта. )
64. AlexO 135 31.10.12 16:03 Сейчас в теме
(63) mxm2,
tango уже пришлось "забраковать"

какую - использовать РАЗРЕШЕННЫЕ? не будете использовать?
ну не используйте :)
Получите "полбу" от сервера 1С :)
PS: Михаил, это не тебя пришлось "забраковать", не подумай чего :))
66. mxm2 1263 31.10.12 16:12 Сейчас в теме
(64) AlexO, не передергивайте...) учитесь уважать других )...

зы это уже бла-бла-бла )
68. AlexO 135 31.10.12 16:17 Сейчас в теме
(66) mxm2,
я не передергиваю, а про подарок спрашиваю :)
71. mxm2 1263 31.10.12 16:23 Сейчас в теме
(68) AlexO,

29.
tango
31.10.12 12:35

(28) mxm2, хорошая тема для публикации, дарю :)


предмет чуть раньше ) и сразу "за".
73. AlexO 135 31.10.12 16:25 Сейчас в теме
(71) mxm2,
т.е. вы не поняли, что Михаил предлагает в рамках своей будущей публикации разобраться с RLS, и, в частности, с РАЗРЕШЕННЫЕ? :)
75. mxm2 1263 31.10.12 16:28 Сейчас в теме
(73) AlexO, а Вы с Михаилом общяетесь вне эфира инфостарта? ведь это ниоткуда не следует.
77. AlexO 135 31.10.12 16:31 Сейчас в теме
(75) mxm2,
общаемся и в личке, но в данном случае это видно из контекста обсуждаемого вопроса и предлагаемой темы для статьи.
52. mxm2 1263 31.10.12 15:39 Сейчас в теме
(47) в том-то и дело (про профессию), а вот про РЛС, Вы меня право испугали, уж подумал, что пропустил чего в изменениях платформы, ан нет (все самое худшее 1с оставляет как есть )))) ).
55. kiros 52 31.10.12 15:48 Сейчас в теме
Так вот, вернемся к запрос VS объект, потратил время на полезно/бесполезную оптимизацию (и так работало никто не жаловался) списка документов (ПриПолученииДанных), к которому так жестко отфутболил коллега tango, якобы объекты именно то, что нужно для этого дела. И... как многие догадались, на практике запросы дали тройной прирос производительности VS объектов (и это без возможной еще оптимизации). Так что, как и писал раньше, все зависит от конкретных условий и желаний, где то (как и было до этого у нас) прекрасно себя чувствуют себя объекты, а при оптимизации (особенно когда надо более одного поля выскрести, а то еще и расчетик и т.п.) тут однозначно ЗАПРОСЫ.
p.s. это касается серверной вариации, в файловой вероятнее будет не так, т.к. принцип получения данных там другой, как раз подходящий для объектов, но здесь не готов разглагольствовать, т.к. уже давно не занимался файлами.
з.ы. И потрындеть, это мы всегда пожалуйста :)
57. tango 506 31.10.12 15:51 Сейчас в теме
(55) kiros,
потратил время на полезно/бесполезную оптимизацию

что ж вы примеров кода пожалели?
85. kiros 52 31.10.12 16:40 Сейчас в теме
(57)
	Для каждого ОформлениеСтроки Из ОформленияСтрок Цикл
		Запрос=Новый Запрос("ВЫБРАТЬ
		                    |	РасходныйКассовыйОрдерРасшифровкаПлатежа.СтатьяДвиженияДенежныхСредств.Наименование КАК Статья,
		                    |	ВЫБОР
		                    |		КОГДА РасходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка.Контрагент ССЫЛКА Справочник.ФизическиеЛица
		                    |			ТОГДА РасходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка.Контрагент.Должность
		                    |		ИНАЧЕ """"
		                    |	КОНЕЦ КАК Должность
		                    |ИЗ
		                    |	Документ.РасходныйКассовыйОрдер.РасшифровкаПлатежа КАК РасходныйКассовыйОрдерРасшифровкаПлатежа
		                    |ГДЕ
		                    |	РасходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка = &Ссылка
		                    |	И РасходныйКассовыйОрдерРасшифровкаПлатежа.НомерСтроки = 1");
		Запрос.УстановитьПараметр("Ссылка",ОформлениеСтроки.ДанныеСтроки.Ссылка);
		Результат=Запрос.Выполнить();
		Если не Результат.Пустой() Тогда
			СтрокаРезультата=Результат.Выгрузить().Получить(0);
		ОформлениеСтроки.Ячейки.Статья.УстановитьТекст(СтрокаРезультата.Статья);
		ОформлениеСтроки.Ячейки.Должность.УстановитьТекст(СтрокаРезультата.Должность);
		КонецЕсли;
	КонецЦикла;
Показать

это через запрос, а вот через объект
	Для каждого ОформлениеСтроки Из ОформленияСтрок Цикл
		Попытка
			ОформлениеСтроки.Ячейки.Статья.УстановитьТекст(ОформлениеСтроки.ДанныеСтроки.Ссылка.РасшифровкаПлатежа[0].СтатьяДвиженияДенежныхСредств);
		Исключение
		КонецПопытки;
		Если ОформлениеСтроки.ДанныеСтроки.Контрагент<>Неопределено Тогда
			Если ТипЗнч(ОформлениеСтроки.ДанныеСтроки.Контрагент) = Тип("СправочникСсылка.ФизическиеЛица") Тогда
				ОформлениеСтроки.Ячейки.Должность.УстановитьТекст(ОформлениеСтроки.ДанныеСтроки.Контрагент.Должность);
			КонецЕсли; 
		КонецЕсли;  
	КонецЦикла;
Показать

и через замер производительности (2-запрос, 3-объект)
]
Прикрепленные файлы:
86. AlexO 135 31.10.12 16:42 Сейчас в теме
(85) kiros,
а через УФ формы? Возможно, будете неприятно удивлены новыми знаниями... :(
88. tango 506 31.10.12 16:45 Сейчас в теме
90. AlexO 135 31.10.12 17:18 Сейчас в теме
(88)
прости, могу см-ами отдать :))
101. tango 506 31.10.12 17:55 Сейчас в теме
(90) AlexO, торговля какая-то вялая. не сезон. но предложение принято :)
115. tango 506 01.11.12 10:43 Сейчас в теме
(90) AlexO, ну, вот и случай представился. приму в подарок пару сотен
93. kiros 52 31.10.12 17:20 Сейчас в теме
(86) AlexO, новым знаниям я всегда приятно удивляюсь. УФ это управляемые? до них еще даже шаловливые ручки не допускал, но наслышан, что это другая песня :)
95. AlexO 135 31.10.12 17:28 Сейчас в теме
(93) kiros,
это не просто другая песня, это песня задом наперед с одновременным сальто :)
Причем часто тормознутее обычных, хотя якобы призваны как раз быть "тоньше" их.
98. logos 208 31.10.12 17:39 Сейчас в теме
(95) AlexO, Да ничего интересного не будет. Простейший запрос в консоли запросов, получить все ссылки из справочника "Организации".
Первый запуск был с полными правами, второй - с ограничениями. Конфа - БП 2.0.41, рлс штатные. SQL запрос 1 в 1.
ВЫБРАТЬ
	Организации.Ссылка
ИЗ
	Справочник.Организации КАК Организации

В обоих случаях транслировался в:
SELECT
T1._IDRRef
FROM _Reference52 T1 WITH(NOLOCK)

Результаты показывать, не буду, стесняюсь. Но смысл, что минимум УИДы он извлекает, чего бы не было при RLS на уровне БД
99. logos 208 31.10.12 17:41 Сейчас в теме
(98) logos, Прошу прощения, ошибочка вышла. В случае ограниченной учетки был другой запрос:
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	Организации.Ссылка
ИЗ
	Справочник.Организации КАК Организации
Оставьте свое сообщение