Влияние количества пользователей на производительность

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

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

пользователи mssql v8users загрузка 1Cv8

Анализ влияния количества пользователей на производительность 1С:Предприятие.

Сразу предупрежу, что никаких трепанаций программ не делал. Только лишь наблюдал извне. В распоряжении имелись 1С версии 8.3.12.1469 и MS SQL 10.50.1600.1 с его профайлером, куда ж без него.

При старте 1С:Предприятие семь раз обращается к таблице v8users, а если запустить из конфигуратора в режиме отладки, то все 11. Все бы ничего, но мною для экспериментов было сгенерировано 300 тысяч пользователей. Так сказать для наглядности. Само количество не имеет никакого значения, просто взято "с потолка" (так сказать, за время на обеденного перерыва).

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

 

Вооружимся профайлером и начнем.

Первый запрос выглядит так:

SELECT TOP 1 ID, Name, Descr, OSName, Changed, RolesID, Show, Data, EAuth, AdmRole, UsSprH
FROM v8users
WHERE EAuth IS NULL OR AdmRole IS NULL OR UsSprH IS NULL

Данный запрос никак не оптимизируется, тем более, что таблице не хватает нужных индексов. Есть только один, да и тот не очень-то и подходит:

Второй запрос имеет вид:

SELECT MAX(Changed) FROM v8users

Данный запрос выполняется медленно потому, что нет индекса по полю Changed. Что мешало разработчикам создать его, остается для меня загадкой. Надо понимать, что данный запрос выполняется каждый раз при запуске 1С, и сколько времени можно было бы сэкономить пользователям, британским ученым пока неизвестно. Так же неизвестно для чего потребовался этот запрос. Да узнаем мы, когда последний раз изменяли параметры пользователя, а дальше что? Что делать с этой информацией? Буду признателен тому, кто приоткроет тайну.

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

exec sp_executesql N'SELECT TOP 1 ID, Name, Descr, OSName, Changed, RolesID, Show, Data, EAuth, AdmRole, UsSprH
FROM v8users
WHERE ID >= @P1 AND ID <> @P2
ORDER BY ID',N'@P1 varbinary(16),@P2 varbinary(16)',0x00000000000000000000000000000000,0x952A5019EAE6A1F74023E7966E3EE1DE

 

exec sp_executesql N'SELECT TOP 1 ID, Name, Descr, OSName, Changed, RolesID, Show, Data, EAuth, AdmRole, UsSprH
FROM v8users
WHERE OSName = @P1 AND ID <> @P2
ORDER BY OSName',N'@P1 nvarchar(4000),@P2 varbinary(16)',N'\\localhost\Foxtrot',0x952A5019EAE6A1F74023E7966E3EE1DE

 

Видимо из-за размера поля OSName такой план запроса.

exec sp_executesql N'SELECT TOP 1 ID, Name, Descr, OSName, Changed, RolesID, Show, Data, EAuth, AdmRole, UsSprH
FROM v8users
WHERE ID >= @P1 AND ID <> @P2
ORDER BY ID',N'@P1 varbinary(16),@P2 varbinary(16)',0x00000000000000000000000000000000,0x952A5019EAE6A1F74023E7966E3EE1DE
exec sp_executesql N'SELECT TOP 1 ID, Name, Descr, OSName, Changed, RolesID, Show, Data, EAuth, AdmRole, UsSprH
FROM v8users
WHERE OSName = @P1 AND ID <> @P2
ORDER BY OSName',N'@P1 nvarchar(4000),@P2 varbinary(16)',N'\\ localhost \Foxtrot',0x952A5019EAE6A1F74023E7966E3EE1DE
exec sp_executesql N'SELECT TOP 2147483647 ID, Name, Descr, OSName, Changed, RolesID, Show, Data, EAuth, AdmRole, UsSprH
FROM v8users WITH(READCOMMITTED)
WHERE Name = @P1 AND ID <> @P2
ORDER BY Name',N'@P1 nvarchar(4000),@P2 varbinary(16)',N'Admin',0x952A5019EAE6A1F74023E7966E3EE1DE

Поле Name меньшего размера, чем предыдущее – и план проще. Если кого-то заинтересовало мистическое число 2147483647, то есть статья в Википедии.

 

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

Например, 0x952A5019EAE6A1F74023E7966E3EE1DE – это уникальный идентификатор пустой записи. Так вот не совсем понятно, для чего в каждом запросе писать:

ID <> 0x952A5019EAE6A1F74023E7966E3EE1DE

Ведь это только тормозит выполнение запроса. Тем более, что результат первой части запроса почти во всех случаях уникален.

exec sp_executesql N'SELECT TOP 2147483647 ID, Name, Descr, OSName, Changed, RolesID, Show, Data, EAuth, AdmRole, UsSprH
FROM v8users WITH(READCOMMITTED)
WHERE Name >= @P1 AND ID <> @P2
ORDER BY Name',N'@P1 nvarchar(4000),@P2 varbinary(16)',N'',0x952A5019EAE6A1F74023E7966E3EE1DE
exec sp_executesql N'SELECT TOP 1 ID, Name, Descr, OSName, Changed, RolesID, Show, Data, EAuth, AdmRole, UsSprH
FROM v8users WITH(READCOMMITTED)
WHERE ID >= @P1 AND ID <> @P2
ORDER BY ID',N'@P1 varbinary(16),@P2 varbinary(16)',0x9615C386AE786E744E60B9E4F7DD290A,0x952A5019EAE6A1F74023E7966E3EE1DE
exec sp_executesql N'SELECT TOP 1 ID, Name, Descr, OSName, Changed, RolesID, Show, Data, EAuth, AdmRole, UsSprH
FROM v8users WITH(READCOMMITTED)
WHERE ID >= @P1 AND ID <> @P2
ORDER BY ID',N'@P1 varbinary(16),@P2 varbinary(16)',0x9615C386AE786E744E60B9E4F7DD290A,0x952A5019EAE6A1F74023E7966E3EE1DE
exec sp_executesql N'SELECT TOP 2147483647 ID, Name, Descr, OSName, Changed, RolesID, Show, Data, EAuth, AdmRole, UsSprH
FROM v8users WITH(READCOMMITTED)
WHERE Name >= @P1 AND ID <> @P2
ORDER BY Name',N'@P1 nvarchar(4000),@P2 varbinary(16)',N'',0x952A5019EAE6A1F74023E7966E3EE1DE
exec sp_executesql N'SELECT TOP 1 ID, Name, Descr, OSName, Changed, RolesID, Show, Data, EAuth, AdmRole, UsSprH
FROM v8users WITH(READCOMMITTED)
WHERE ID >= @P1 AND ID <> @P2
ORDER BY ID',N'@P1 varbinary(16),@P2 varbinary(16)',0x9615C386AE786E744E60B9E4F7DD290A,0x952A5019EAE6A1F74023E7966E3EE1DE

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

SELECT TOP 1 ID, Name, Descr, OSName, Changed, RolesID, Show, Data, EAuth, AdmRole, UsSprH
FROM v8users WITH(NOLOCK)
WHERE EAuth IS NULL OR AdmRole IS NULL OR UsSprH IS NULL

Хорошая новость в том, что SQL-сервер при повторном выполнении использует результаты первого, то есть выполняет мгновенно.

При внешнем подключении выполняются все три запроса.

 

 

Чтобы управлять таким количеством пользователей был создан справочник «Пользователи» с реквизитом УИД, который синхронизировался с таким же полем таблицы v8users.

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

 

 

В качестве эпилога

При большом количестве пользователей не рекомендую лишний раз пользоваться методом ПолучитьПользователей() объекта ПользователиИнформационнойБазы потому, что он возвращает массив. Так что придется обождать пока не получите его целиком. Здесь впору кричать «массив, Карл!»  Почему так было сделано, остается еще одной загадкой. Почему нельзя было сделать выборку, например как у справочников или документов:

Выборка = Документы.РасходнаяНакладная.Выбрать(ДатаНач, ДатаКон);

Время ожидания сразу же бы сократилось в разы. Метод ПолучитьПользователей() на стороне сервера выглядит следующим образом:

exec sp_executesql N'SELECT TOP 2147483647 ID, Name, Descr, OSName, Changed, RolesID, Show, Data, EAuth, AdmRole, UsSprH
FROM v8users WITH(READCOMMITTED)
WHERE Name >= @P1 AND ID <> @P2
ORDER BY Name',N'@P1 nvarchar(4000),@P2 varbinary(16)',N'',0x952A5019EAE6A1F74023E7966E3EE1DE

И план так себе, за то на выходе имеем массив. В моем случае из 300 тысяч элементов.

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

Вознаграждение за ответ
Показать полностью
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Timur.V 72 29.08.18 11:07 Сейчас в теме
Влияние количества пользователей на производительность

Чем больше пользователей, тем ниже производительность 1С. Это должно быть понятно без экспериментов.

Вы пришли к выводу, что не стоит работать в 1с?
При большом количестве пользователей не рекомендую пользоваться методом ПолучитьПользователей() объекта ПользователиИнформационнойБазы

Или не стоит обращаться к методам 1с?

Поясните пожалуйста ваши выводы.
2. Fox-trot 128 29.08.18 11:41 Сейчас в теме +1 $m
Чем больше пользователей, тем ниже производительность

ребята из фейсбука, телеграм и прочими с тобой не согласятся
user1279931; +1 Ответить
3. nyam-nyam 29.08.18 12:00 Сейчас в теме
(2)У них как бы и не 1С...
Merkalov; LordKim; Superart; acanta; +4 Ответить
4. acanta 29.08.18 13:13 Сейчас в теме
Транзакции с большим количеством записей (строк/движений) можно сравнивать в Фейсбуке разве что с загрузкой группы файлов.
5. VmvLer 29.08.18 13:28 Сейчас в теме
можно краткое сообщение а ля Выводы

Вывод1:
Вывод2:

Рекомендации:
-
-

а то лень вникать в эту плащанину - обилие скринов и выкладок, конеш, круто, но наиболее ценны результаты эксперимента,
которые, надеюсь, спрятаны в этом мессиве.
6. Gilev.Vyacheslav 1879 29.08.18 18:07 Сейчас в теме
(0) даже если 1С теоретически выдержит запуск 300 тысяч пользователей как вы написали, запускать их на один сервер - безумство из-за цены ошибки, которая в этом случае получает коэффициент 300000
т.е. съедает код ошибочно 1 пользователя и избыточно одно ядро, так при вашем подходе вы положите любой сервер умножив ядра на коэф.-т
нарушается принцип изоляции ресурсов у процессов, которые между собой не пересекаются ни по данным ни по связям
кроме того вы забываете, что у каждого сервера свой предел, с таким же успехом можно исследовать ноутбук, сколько тыщ юзеров выдержит при том что предназначен он для одного пользователя, улавливаете или нет?

берете наш тест http://www.gilev.ru/tpc1cgilv/#dwnld , запускаете второй тест и получаете цифру гарантированно работающих пользователей
и не сильно важно что они делают
причем тест не покажет даже тысяч, но делать можно в пределах заявленной цифры большинство реальных задач

если ваше решение горизонтально масштабируемо, то новые пользователи должны не в одни и те же таблицы попадать
и тут важнее генерация сразу финального объема данных, которых будет в продуктиве и ни когда не будет превышен
пишите покрывающие тесты и радуетесь

пользователи в базе не сами по себе, залогинились и чай пьют, а прежде всего являются инициаторами параллельного ввода или чтения данных, поэтому важнее способность системы не топить диски данными, как только они перестают откликаться в разумных пределах, т.е. стресстест достиг порога возможностей системы
aexeel; mysm; xioxao; +3 Ответить
7. Fox-trot 128 29.08.18 18:20 Сейчас в теме
(6)ваш тест учитывает кластеризацию?
8. Gilev.Vyacheslav 1879 30.08.18 15:35 Сейчас в теме
(7) даже сама формулировка говорит многое о вашем восприятии.
Сможете дать определение что такое кластер? кластеризация?

Вы либо
не понимаете что спрашиваете так как масштабируемое решение это не одна база данных и все последующее и вытикающее из этого в том числе что тот же кластер 1С (который кстати на одном сервере называется вырожденным) ни какого отношения к масштабируемости не имеет и мало влияет на горизонтальную масштабируемость
либо
заменили цель и средство ее достижения
если сервер 1С окажется слишком слабым по количеству ядер (будь то один рабочий сервер или несколько в кластере), то наш тест в явном виде не скажет что ядер не хватает, но количество пользователей уменьшит так как работа фоновиков 1С чувствительна к этому, т.е. формальный ответ при несбалансированности железа тест G1C это укажет, даже если серверов будет несколько.
9. Fox-trot 128 30.08.18 18:10 Сейчас в теме
значит ответ - нет
и не собираюсь гуглить и копипастить ответы на твои вопросы, проще разбанить твою учетку в гугле
есть что спросить по самой статье? или высказать замечания?
речь в ней ведь не про твой тест. если очень прям хочется прорекламировать его, то давай тогда отдельную статью напишу. или ты только заглавие прочитал?
речь ведь про нехватку индексов и запросы 1С при старте непонятного содержания
19. asved.ru 35 05.09.18 09:41 Сейчас в теме
(7) Да он даже с гипертрейдингом не работает. Не говоря уже о многоядерности, NUMA, нескольких рабочих процессах и тем более кластеризации сервера приложения. Потому что прикладной код выполняется однопоточно, а наша звизда считает, что скорость выполнения одного потока (в синтетическом тесте) - подходящий критерий для оценки допустимой многопоточной нагрузки (продуктивным кодом).
21. Gilev.Vyacheslav 1879 05.09.18 21:50 Сейчас в теме
(19) многопоточно, и тон сбавь
18. asved.ru 35 05.09.18 09:34 Сейчас в теме
(6) Т.е. кейс, в котором в v8users несколько десятков тысяч пользователей, а сеансов в ИБ порядка пары сотен, Вы не рассматриваете? А зря. Это типичный случай для 1C:Fresh.
22. Gilev.Vyacheslav 1879 05.09.18 21:52 Сейчас в теме
(18) типичный случай для 1С:Фреш тотальная эскалация блокировок, другое дело что вам это не интересно, цель что то псевдоумное ляпнуть налицо
23. asved.ru 35 06.09.18 05:46 Сейчас в теме
(22) Конечно не интересно, поскольку на практике этого не бывает: платформа выше разделителя не эскалирует, а соответствующий флаг на SQL ставится в плейбуке его установки.

Итак, кто из нас ляпнул псевдоумное?
24. Gilev.Vyacheslav 1879 10.09.18 11:49 Сейчас в теме
(23) запрещающие флаги не работают 100%, при нехватке ресурсов блокировка все равно укрупняется
плюс проблема фрэша не в том что кто то один заблокировал 10 000 строк одним запросом, а в том что словить эскалацию блокировки можно 100 пользователями заблокировав безобидно по 100 строк - тут общее количество блокировок суммарно имеет тоже значение
иди еще практикуйся
26. asved.ru 35 10.09.18 17:21 Сейчас в теме
(24) увлечение пиаром плохо влияет на профессиональные навыки.

https://docs.microsoft.com/ru-ru/sql/t-sql/database-console-commands/dbcc-traceon-trace-flags-transact-sql?view=sql-server-2017

Внимательно и вдумчиво читаем про флаг 1211, в частности, описание возможных последствий при наложении большого количества блокировок. В дальнейшем просьба воздержаться от попыток подмены документации вендора своими фантазиями.
29. Gilev.Vyacheslav 1879 11.09.18 15:29 Сейчас в теме
(26) вам не нужна правда, вам нужна правота и подтягивание фактов под нее
во-первых многие до сих пор работают на старых версиях MS SQL Server и в разных версиях флаги либо вообще не присутствуют либо работают с другим алгоритмом либо вообще с другими субд
во-вторых про этот флаг http://www.gilev.ru/escalation/ мы написали еще черт знает сколько лет назад
там же написано для одаренных что не все так просто - когда в блокировках миллионы строк, сервер начинает захлебываться в любом случае, эскалация не эскалация, все равно - проблем в ДНК тех кто кладет непересекаемые данные в одну таблицу
если разные организации работают с разными данными, то консолидация в одной таблице это жирный минус по масштабируемости в любом случае, это только в теории скулю запретили и типа все ок, а на практике попробуйте и узнаете что это не работает, и что укрупнение на всю таблицу сработает
Но особо радует что вы сами не читали указанную вами ссылку - там черным по белому написано
Это может привести к снижению производительности компонента Database Engine или вызвать ошибки 1204 (невозможность выделить блокированный ресурс) из-за недостатка памяти.
т.е. сама неработоспособность Вам не интересна.
Идите дальше вдумчиво читайте и прекращайте приписывать людям свои фантазии.
27. herfis 412 10.09.18 17:38 Сейчас в теме
В 1С не оптимизирована работа с сотнями тысяч пользователей! Шок, видео!
Почему разработчики платформы такое допустили? Видимо, потому что реалисты.
(18) Несколько десятков тысяч даже для 1C:Fresh - вряд ли типичный случай. И предположу, что при использовании разделителей ситуация все-таки иная.
30. Gilev.Vyacheslav 1879 11.09.18 15:36 Сейчас в теме
(27) в нынешней концепции имхо фреш не спроектирован под реальные десятки тысяч пользователей, хотя изначально на первых презентациях выглядело именно так что, что десять тысяч пользователей якобы можно посадить

но на практике это глупость конкретная
система должна быть масштабируемая горизонтально, т.е. добавил сервер и сажай еще пользователей,

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

"фейсбук" на 1С не реализовать из-за вот этого непонимания горизонтальной машстабируемости

имхо главную ошибку в 1С допустили когда поставили не правильно приоритеты - типа так легко и просто администрировать, ведь все в одном месте в одной таблице...
32. Gilev.Vyacheslav 1879 12.09.18 13:52 Сейчас в теме
(30) хотя вот тут Грибанов говорит https://m.habr.com/company/1c/blog/422903 что они заново изобрели велосипед, и вместо вебсокетов и шардинга в сервере 1С они запилили Hazelcast с java, т.е. сами же отказались от сервера 1С как кэширующего сервера
с одной стороны это прогресс в понимании масштабируемости, с другой стороны ни одно дело до конца нормально довести не могут имхо, в результате ни платформа не горизонтально масштабируема, и еще непонятна судьба сервера системы взаимодействия
34. herfis 412 12.09.18 14:59 Сейчас в теме
(32) Ваше требование горизонтальной масштабируемости от 1С похоже на требование "хорошей жизни" от правительства. Каждый первый горячо поддержит, только непонятно как этого достичь.
Финансовые приложения не очень хорошо поддаются горизонтальному масштабированию. Парой волшебных галок в метаданных его не реализуешь. Еventual consistency мало где допустима. С шардингом вариантов чуток больше, но тем не менее... Так или иначе это тонкие настройки под инфраструктуру конкретного клиента. Не говоря уже о многократно возрастающей сложности распределенных решений со всеми вытекающими последствиями для "доступно и всерьез".
Да, есть простые и понятные сервисы, которые относительно легко и универсально распределяются. "Система взаимодействий" - один из таких.
Но не платформа 1С как таковая и типовые решения на ней. В такого рода сложных продуктах всегда дешевле расти вертикально, пока это возможно за вменяемые деньги.
"Горизонтальное масштабирование" - это не волшебное лекарство от всех болезней. Там где его невозможно применить просто и прозрачно, оно приносит кучу своих проблем и доп-затрат и его бывает трудно назвать меньшим злом.
А фреш - это "облако для бедных". Он изначально не про масштабируемость, а про снижение затрат поставщика на сопровождение мелких баз. Вполне понятная история и ничего плохого я в ней не вижу.
35. Gilev.Vyacheslav 1879 12.09.18 15:38 Сейчас в теме
(34) в IBM DB2 были распределенные данные и все необходимое еще до времен когда 1С начала дружить с данной субд
можно было просто начать использовать готовый механизм
это "про невозможность"
впрочем и в скуле можно сделать вручную (не в 1С) распределенную транзакцию, которая одновременно работает с несколькими таблицами в разных базах данных на разных серверах
только на скуле нет индексов знающих про распределение данных по нескольким физическим таблицам, но такую систему можно и вручную сделать
коллеги из софтпоинта вообще на объектах метаданных 1С целиком отдельные вещи запилили https://infostart.ru/public/884649/
не надо говорить что горизонтальная масштибируемость это блажь
просто для небольших компаний дешевле сервер помощнее купить, который "простит" ошибки и непонимание, а вот с ростом масштабов и тем более при хостинге сотен организаций провайдером понимание горизонтальной масштабируемости является залогом оптимизации затрат и расходов, делая бизнес рентабельным
10. Nikkos 31.08.18 08:13 Сейчас в теме
Вам не понятно. Разработчикам понятно. Ценность статьи тоже под вопросом.
Есть не оптимизированный код 1С, запроса,... под 300тыс.
Можно оптимизировать. Только смысл этим заниматься, если и так работает, а вероятность появления в базе 300тыс. пользователей ну очень маленькая.
Оптимизация - это дополнительные ресурсы разработчика.
Соответственно - либо вылизанный продукт под 300тыс. пользователей, но скажем за 1млн $, либо не очень - за 1000$.
За 1млн$ купят мало. А за 1000$ - много. И тем кто купит за 1000$ с вероятностью 99,9999% - не нужно 300тыс. пользователей.
Gilev.Vyacheslav; Morkhe; +2 Ответить
11. Fox-trot 128 31.08.18 17:52 Сейчас в теме
(10)твоя позиция понятна, но я ее не разделяю
12. par_62 03.09.18 06:04 Сейчас в теме
А зачем это изучать? Слону понятно,что база 1с даже на 1000 пользователей оедко используется.
13. nvv1970 04.09.18 08:19 Сейчас в теме
(12) что за чушь?
1000 пользователей - это записи таблицы. Речь в статье именно про это. Везде и повсеместно такое.
14. LordKim 04.09.18 13:06 Сейчас в теме
Вся эта говша выполняется независимо от режима запуска? (толстый, тонкий, веб)
15. Fox-trot 128 04.09.18 13:27 Сейчас в теме
(14) да и конфигуратор впридачу, только там вроде как всего три запроса
16. LordKim 04.09.18 17:18 Сейчас в теме
17. collider 05.09.18 09:23 Сейчас в теме
Эта статья напоминает анекдот про мужиков и японскую бензопилу.
Стальную трубу она не распилила.

Обнаружился неоптимальный запрос к таблице, в которой всегда мало строк?
Сделаем строк много и скажем, что запрос медленный!
20. Fox-trot 128 05.09.18 10:48 Сейчас в теме
к сожалению, каждый видит то, что хочет...
в статье не сказано про одновременную работу большого числа пользователей
я лишь хотел привлечь внимание на то, что в какой-то момент система начнет тормозить из-за, скажем, большого числа уже уволенных сотрудников
и тестировать в попугаях то, что не касается сути вопроса, это либо сознательный уход от вопроса либо профанация. тем более, что тесты писались совсем под другую старую систему
25. Fox-trot 128 10.09.18 12:28 Сейчас в теме
все это верно, но никак не относится ни к одному из поднятых в статье вопросам
28. Fox-trot 128 10.09.18 18:21 Сейчас в теме
лучше б ответил кто на поставленные вопросы, а то обсуждение ушло в совсем другую сторону
31. Fox-trot 128 11.09.18 15:44 Сейчас в теме
(30) еще раз
не путайте оперативную память с дисковой
в статье речь про количество записей в таблице, которые мешают нормальной работе
и не обязательно, что куча пользователей одновременно работают. это вообще к теме не относится
33. Gilev.Vyacheslav 1879 12.09.18 13:57 Сейчас в теме
(31) количество записей таблицы индивидуально для каждого сервера с учетом его производительности
кому то 10 миллионов строк будет тяжело обработать, а кто то и 100 миллионов не заметит,
да и не важно это, потому что 1С тут тоже совершает ошибку - не контролирует максимально допустимый размер данных в одной таблице на одном диске, а это очень важно в горизонтально масштабируемых решениях
платформа изолирует программиста 1С с одной стороны от физического понимания процессов, а с другой стороны понимание протекания физических процессов крайне важно для крупных систем, так как код пишется от имеющегося железа и его возможностей и ограничений, а не наоборот
36. triviumfan 25 24.09.18 22:49 Сейчас в теме
Автор вроде неглупый, но для чего эта статья один аллах знает.
Извиняюсь за прямоту.
37. Fox-trot 128 25.09.18 11:08 Сейчас в теме
хех, аллахом меня еще никто не называл
статья о том, что кто предупрежден, тот вооружен
Оставьте свое сообщение

См. также

Использование классов .Net в 1С для новичков Промо

Практика программирования Разработка внешних компонент Универсальные функции v7.7 v8 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    80560    Serginio    113    

Полезные примеры СКД, ч.2

Практика программирования v8 v8::СКД Бесплатно (free)

Еще несколько примеров решения задач в СКД.

06.04.2021    5468    Neti    7    

Обзор полезных методов БСП 3.1.4

Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

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

25.03.2021    21463    rayastar    49    

Звуковое управление в 1С 8.3

Практика программирования v8 1cv8.cf Бесплатно (free)

В данной статье описано создание библиотеки для звукового управления (выполнение команд голосом) для платформы 1С 8.3. Задача была поставлена так, чтобы модуль функционировал непосредственно на клиенте 1С, осуществляя управление формами, и взаимодействовал с интерфейсом.

16.03.2021    3920    velemir    31    

Использование программных перечислений, ч.1: строковые константы Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Часто ли у вас возникает необходимость в коде выполнять сравнение на строку?

10.12.2016    39255    unichkin    74    

Serverless (Faas) в 1С. Создание и вызов Yandex Cloud Functions

Универсальные функции Практика программирования v8 Бесплатно (free)

"Я не могу просто взять и скопировать код с гитхаба", "у нас 1С микросервисами окружена", "возможностей мало" - частые фразы 1С разработчиков. которым не хватает возможностей платформы в современном мире. Faas, конечно, история не новая, но нас сдерживало 152ФЗ и задержки по пингам. Для того, чтобы действительно использовать в 1С код, к примеру, на Python, надо было приложить усилия. Теперь всё намного проще - берём и используем.

28.12.2020    5834    comol    31    

Базовые вещи БСП, которые облегчат жизнь программисту 1С

Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Россия Бесплатно (free)

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

30.08.2020    14756    quazare    34    

Описание почти всех событий технологического журнала

Технологический журнал v8 Бесплатно (free)

Краткое описание событий технологического журнала с примерами. Все для быстрого старта.

19.08.2020    19529    YPermitin    34    

Вспомогательные инструкции в коде 1С Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Помогаем редактору кода 1С помогать нам писать и анализировать код.

15.10.2018    33453    tormozit    105    

Форма выбора (подбор) в управляемых формах

Практика программирования v8 v8::УФ 1cv8.cf Россия Бесплатно (free)

Разбор небольших примеров того, как правильно открывать форму выбора (подбора) в управляемых формах, не прибегая к модальным окнам.

08.05.2020    50811    user5300    17    

Эти занимательные временные таблицы

Производительность и оптимизация (HighLoad) Администрирование СУБД v8 Бесплатно (free)

Кое-что интересное о временных таблицах и работе платформы 1С с ними.

06.04.2020    14496    YPermitin    0    

Программная работа с настройками СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Нюансы программной работы с настройками системы компоновки данных в отчетах и динамических списках. Обзор всех видов настроек компоновки. Что в каких случаях правильно применять. В качестве примера рассмотрена работа с отборами и группировками.

27.01.2020    49282    ids79    26    

Оформление и рефакторинг сложных логических выражений Промо

Практика программирования v8 Россия Бесплатно (free)

В сложных логических выражениях нередко самому автору спустя какое-то время тяжело разобраться, не говоря уже о других программистах. Предлагаемая методика позволяет повысить наглядность таких выражений путем оформления в виде И-ИЛИ дерева и одновременно выполнять их рефакторинг.

20.09.2012    80455    tormozit    131    

[СКД] Программное создание схемы компоновки данных

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

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

15.01.2020    35333    John_d    22    

Последовательности событий при проведении документа 1С. Шпаргалка + про формы + про расширения

Практика программирования v8 Россия Бесплатно (free)

Собрал информацию о событиях/подписках/расширениях в одном месте.

30.12.2019    27905    kuzyara    38    

30 задач. Странных и не очень

Практика программирования v8 Бесплатно (free)

30 задач на знание языка программирования 1С и некоторого поведения платформы. Маленьких. Странных и не очень.

02.12.2019    20606    YPermitin    61    

Запись значения в поле ввода/формы со срабатыванием события ПриИзменении Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Иногда возникает необходимость после записи значения в какое либо поле ввода/формы вызвать для него обработчик события ПриИзменении, а о вызове самого события приходится только мечтать. В этой статье приводится программный способ вызова этого события.

11.07.2007    51473    tormozit    51    

Как передать IP адрес, который вызвал HTTP запрос в 1C (для веб-сервера Apache)

Практика программирования v8 Бесплатно (free)

Столкнулся с задачей получения IP адреса, который вызывает http сервис 1С. Итак, решение:

22.11.2019    10970    Sibars    19    

Обслуживание баз данных. Не так просто, как кажется

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

Считаете, что обслуживание индексов и статистик дело простое? Что ж, это не всегда так.

14.10.2019    20441    YPermitin    31    

Полезные процедуры и функции для программиста

Практика программирования Универсальные функции v8 1cv8.cf Россия Бесплатно (free)

Все мы пишем программный код и часто используем процедуры, облегчающие его написание. Ниже приведена выборка таких полезных процедур и функций.

07.10.2019    35454    HostHost    41    

Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Как сделать метод формы, доступный на клиенте и на сервере одновременно, и сохранить при этом удобство разработки

10.09.2017    48232    tormozit    74    

Таблица значений. Нюансы

Практика программирования v8 Бесплатно (free)

Обзор некоторых аспектов использования общеизвестного инструмента 1С.

01.10.2019    45408    Yashazz    50    

[Шпаргалка] Программное создание элементов формы

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

Программное создание практически всех популярных элементов формы.

06.09.2019    79914    rpgshnik    70    

Агрегатные функции СКД, о которых мало кто знает

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.

05.09.2019    65498    ids79    55    

Выгрузка документа по условию Промо

Практика программирования Разработка v8 Бесплатно (free)

Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий... А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.

25.04.2019    16839    m-rv    3    

Регистры бухгалтерии. Общая информация

Практика программирования Математика и алгоритмы v8 v8::БУ БУ Бесплатно (free)

Общая информация о внутреннем устройстве регистров бухгалтерии.

05.09.2019    37921    YPermitin    25    

Три костыля. Сказ про фокусы в коде

Практика программирования v8 Бесплатно (free)

Три интересных (или странных) костыля в коде, которые могут помочь в повседневных и не очень задачах.

03.09.2019    28096    YPermitin    81    

Отслеживание выполнения фонового задания

Практика программирования Универсальные функции Разработка v8 1cv8.cf Бесплатно (free)

Запуск фонового задания из модуля внешней обработки. Отслеживание выполнения задания в виде прогресса, расположенного на форме.

17.08.2019    39806    ids79    19    

Как прикрутить ГУИД к регистру сведений Промо

Практика программирования Перенос данных из 1C8 в 1C8 Разработка v8 Бесплатно (free)

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

16.04.2019    21534    m-rv    17    

Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

08.08.2019    124348    ids79    72    

Фоновое выполнение кода в 1С - это просто

Практика программирования v8 1cv8.cf Бесплатно (free)

Как легко запускать выполнение в фоне, не прибегая к долгому описанию фоновых процедур.

02.08.2019    50587    avalakh    26    

Разбираемся с параметрами редактирования СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Связь по типу, Параметры выбора, Связи параметров выбора

31.07.2019    34148    json    15    

Как сделать запрос на изменение данных Промо

Практика программирования v8 v8::Запросы 1cv8.cf Бесплатно (free)

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

01.06.2018    33836    m-rv    22    

СКД - наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.

26.07.2019    88152    ids79    14    

СКД - использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ

Инструментарий разработчика Практика программирования v8 v8::СКД Бесплатно (free)

Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «{…}», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.

17.07.2019    43101    ids79    27    

Регистры сведений. За кулисами

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Небольшие заметки по внутреннему устройству регистров сведений.

09.07.2019    30584    YPermitin    14    

Метод формирования движений в типовых регистрах нетиповыми регистраторами Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Вариант решения задач с проведением по типовым регистрам нетиповыми регистраторами. Зачем - чтобы при сравнении конфигурации не обращать внимание на свойства регистров и исключить вероятность допущения горькой оплошности при обновлении информационных баз, заменив типы регистраторов основной конфигурации типами конфигурации поставщика. Для программных продуктов, имеющих в своем составе метаданных документ "Корректировка регистров"("Корректировка записей регистров").

05.12.2017    29306    itriot11    34    

"Меньше копипаста!", или как Вася универсальную процедуру писал

Практика программирования Разработка v8 v8::СКД 1cv8.cf Бесплатно (free)

Программист Вася разбирает подход создания универсальных методов на примере программного вывода СКД.

04.07.2019    20889    SeiOkami    52    

Работа с настройками системы компоновки данных

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Варианты отчетов, работа с настройками вариантов: структура группировок, поля отчета, отборы, сортировка, условное оформление, другие настройки, настройки отображения диаграмм.

02.07.2019    69361    ids79    17    

Создание отчетов с помощью СКД - основные понятия и элементы

Практика программирования Математика и алгоритмы v8 v8::СКД Бесплатно (free)

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    66584    ids79    27    

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С Промо

Математика и алгоритмы Практика программирования v8 v8::blocking 1cv8.cf Бесплатно (free)

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    40288    ids79    44    

Многопоточное ускорение однопользовательских нагрузок в 1С + Microsoft SQL Server 2017

Практика программирования Производительность и оптимизация (HighLoad) v8 v8::Запросы Бесплатно (free)

Взаимодействие с Microsoft SQL Server нередко вызывает трудности у 1С-ников, а потому интересны любые моменты, связанные с его использованием. О своем опыте работы с новым SQL Server 2017 участникам конференции Infostart-2018 рассказал директор ООО «Аналитика софт» Дмитрий Дудин.

11.06.2019    28339    dmurk    148    

Регистры накопления. Структура хранения в базе данных

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Структура хранения регистров накопления в базе данных для платформы 1С:Предприятие 8.x. Первая часть в серии публикаций.

16.05.2019    55142    YPermitin    30    

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

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

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

18.04.2019    33714    ivanov660    77    

О расширениях замолвите слово...

Практика программирования Разработка v8 Бесплатно (free)

О чём стоит задуматься при принятии решения о создании расширения конфигурации…

07.04.2019    39897    ellavs    130    

Git-репозитории для 1С-кода (опыт использования при небольших проектах)

Практика программирования v8 Бесплатно (free)

Инструкции по взаимодействию с Git-репозиторием, которые писались для тех наших программистов, которые вообще никогда не работали с Git (руководства в духе "Как получить код из git-репозитория?", "Как отправить код в git-репозиторий")...

28.03.2019    29780    ellavs    90    

Трюки с внешними источниками данных

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

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

14.03.2019    37128    YPermitin    53    

Разработка и сценарное тестирование с Vanessa-ADD. Отчетность Allure. Автоматизация запуска сценариев

Практика программирования Vanessa Automation v8 Россия Бесплатно (free)

Формируем отчетность о результатах выполнения сценариев. Автоматизируем запуск.

26.02.2019    25845    Vladimir Litvinenko    28    

Возможности типовых шаблонов ограничения доступа на уровне записей (RLS)

Практика программирования БСП (Библиотека стандартных подсистем) Роли и права v8 v8::Права Бесплатно (free)

Краткий обзор применения типовых шаблонов ограничения доступа на уровне записей в конфигурациях, созданных на базе БСП: #ПоЗначениям, #ПоНаборамЗначений, #ПоЗначениямРасширенный, #ПоЗначениямИНаборамРасширенный

03.02.2019    54315    ids79    11