|
Кеширование данных в 1С
|
|||
---|---|---|---|
#18+
Вопрос знатокам платформы: Зашел спор про вставку данных в БД 1С минуя платформу. Прямым SQL-ем. А именно вставку в строчную часть справочника. Никаких ключей не генерируется. Просто вставка/апдейт 2-х заведома известных ключевых значений. И все это не в бизнес-время, когда юзеров нет. Аргумент ПРОТИВ : так делать нельзя, потому что "платформа может закешировать" старое значение, в то время, когда физически в БД появится новое, а о чем платформа не знает. Аргумент ЗА : платформа кеширует только служебные метаданные и не кеширует бизнес-данные на длительный период. Поэтому внешняя вставка/апдейт может делаться совершенно спокойно, если она не нарушает бизнес-логики. Кто прав ? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2021, 10:46 |
|
Кеширование данных в 1С
|
|||
---|---|---|---|
#18+
L_argo потому что "платформа может закешировать" старое значение когда она его и ради чего закэширует? оно активно используется в модуле с повторным использованием возвращаемых значений аргументы "за" как-то на аргументы не похожи - чего ради вообще это делать, это все ради скорости? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2021, 11:22 |
|
Кеширование данных в 1С
|
|||
---|---|---|---|
#18+
Неистовый Служитель Культа L_argo потому что "платформа может закешировать" старое значение 1. когда она его и ради чего закэширует? оно активно используется в модуле с повторным использованием возвращаемых значений 2. аргументы "за" как-то на аргументы не похожи - чего ради вообще это делать, это все ради скорости? Особенно при ночном выполнении и отсутствии пользователей. Где почитать про кеширование данных в 1С (первые гуглоссылки уже прочитаны) ? Как это соотносится с возможностью в 1С выполнения прямых запросов к БД (которые однозначно проходят мимо платформы) ? Также интересно, как это работает на таблицах с и без поля _Version. 2. Ради скорости. Там миллионы строк с тенденцией к росту. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 10:35 |
|
Кеширование данных в 1С
|
|||
---|---|---|---|
#18+
L_argo Как это соотносится с возможностью в 1С выполнения прямых запросов к БД (которые однозначно проходят мимо платформы) ? никак. исходя что то кэширование, что я имею ввиду оно в рамках рантайма 1с - общий модуль с флажком, вы дергаете функцию, 1с смотрит на сигнатуру вызова - параметры те же - значит можно не считать заново, а отдать обратно уже посчитанное значение L_argo Также интересно, как это работает на таблицах с и без поля _Version. version - это вроде для "оптимистических блокировок". совпадают версии в таблице бд и та что у тебя в "новой" версии - записываем, обновляем version, нет - значит опоздали, уже кто-то другой запись поменял ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 10:43 |
|
Кеширование данных в 1С
|
|||
---|---|---|---|
#18+
соответственно если нет юзеров и фоновых задач работающих с этими данными - можно не заморачиваться единственно - ваши изменения пройдут мимо механизма версионирования самой 1с. и разборки "какая падла поменяла?!" в бухгалтерии приобретут новый оттенок драматизма... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 10:46 |
|
Кеширование данных в 1С
|
|||
---|---|---|---|
#18+
Да можно. Только ОЧЕНЬ аккуратно. А зачем в строчную часть справочника? Пересмотрите архитектуру и заменить в этой части допустим на ссылку через регистр сведений. И пишите в регистр сведений без ограничений скорости. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2021, 14:45 |
|
Кеширование данных в 1С
|
|||
---|---|---|---|
#18+
Программист 1с И пишите в регистр сведений без ограничений скорости. что-то новое в природе - 1с научилась писать в таблицы через объектную модель и не тормозить Программист 1с Пересмотрите архитектуру и заменить в этой части допустим на ссылку через регистр сведений. шило на мыло ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2021, 14:48 |
|
Кеширование данных в 1С
|
|||
---|---|---|---|
#18+
Неистовый Служитель Культа, Обсудим почем запись в регистр сведений идет гораздо быстрее чем в справочник? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2021, 22:15 |
|
Кеширование данных в 1С
|
|||
---|---|---|---|
#18+
Программист 1с Неистовый Служитель Культа, Обсудим почем запись в регистр сведений идет гораздо быстрее чем в справочник? да, если Вам не сложно - поделитесь почерпну нового знания ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2021, 09:49 |
|
Кеширование данных в 1С
|
|||
---|---|---|---|
#18+
Неистовый Служитель Культа Программист 1с Неистовый Служитель Культа, Обсудим почем запись в регистр сведений идет гораздо быстрее чем в справочник? да, если Вам не сложно - поделитесь почерпну нового знания Для а = 1 по 1000000 Цикл Об = Справочники.Мой.СоздатьЭлемент(); Об.Наименование = а; Об.Записать() КонецЦикла; //Даже без набора Для а = 1 по 1000000 Цикл МенеджерЗаписи = РегистрыСведений.МояЗапись.СоздатьМенеджерЗаписи(); МенеджерЗаписи.МоеПоле = а; МенеджерЗаписи.Записать(); КонецЦикла; ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2021, 13:33 |
|
Кеширование данных в 1С
|
|||
---|---|---|---|
#18+
Программист 1с Неистовый Служитель Культа пропущено... да, если Вам не сложно - поделитесь почерпну нового знания Для а = 1 по 1000000 Цикл Об = Справочники.Мой.СоздатьЭлемент(); Об.Наименование = а; Об.Записать() КонецЦикла; //Даже без набора Для а = 1 по 1000000 Цикл МенеджерЗаписи = РегистрыСведений.МояЗапись.СоздатьМенеджерЗаписи(); МенеджерЗаписи.МоеПоле = а; МенеджерЗаписи.Записать(); КонецЦикла; это все конечно прекрасно, но к текущей задаче какое отношение имеет? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2021, 14:05 |
|
Кеширование данных в 1С
|
|||
---|---|---|---|
#18+
Задача - вставлять сотни тыщ. записей из внешней БД. И это уже давно и беспроблемно работает. Но появились скептики, утверждающие, что так делать не TRUE. Потому возник этот топик. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2021, 14:35 |
|
Кеширование данных в 1С
|
|||
---|---|---|---|
#18+
L_argo Но появились скептики, утверждающие, что так делать не TRUE. аргументация их в чем состоит? платформа закешировала? какие-то "мифы и легенды"... большой апдейт в рамках большой транзакции, она не закоммитилась - а тут 1с посылает запрос к таблице (с read_committed_snapshot и следовательно она конца транзакции ждать не будет) и вернет то чего через секунду не будет? так пользователей же нет. чисто теоретическая коллизия имхо ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2021, 15:26 |
|
Кеширование данных в 1С
|
|||
---|---|---|---|
#18+
L_argo Задача - вставлять сотни тыщ. записей из внешней БД. И это уже давно и беспроблемно работает. Но появились скептики, утверждающие, что так делать не TRUE. Потому возник этот топик. Можно ли пилить болгаркой голыми руками, бочку парами бензина? Нуу можно - только надо понимать что делаешь и зачем. В данном случае могут быть проблемы при некорректной вставке и одновременной записи из 1с и вставки. Может еще где-то. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2021, 16:39 |
|
Кеширование данных в 1С
|
|||
---|---|---|---|
#18+
Плюс отладка всех этих действий и кто менял справочник? Поэтому я бы шел через регистр сведений. Но Вы лучше знаете задачу и возможно только напрямую в mssql вас спасет по производительности. Но тогда не правильнее было бы в 1с просто подключить внешний источник данных? Ту же табличку отдельно создайте. А при открытии элемента справочника - 1с лезет во внешние данные и выводит пользователю табличную часть. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2021, 16:41 |
|
Кеширование данных в 1С
|
|||
---|---|---|---|
#18+
L_argo Вопрос знатокам платформы: Зашел спор про вставку данных в БД 1С минуя платформу. Прямым SQL-ем. А именно вставку в строчную часть справочника. Никаких ключей не генерируется. Просто вставка/апдейт 2-х заведома известных ключевых значений. И все это не в бизнес-время, когда юзеров нет. Аргумент ПРОТИВ : так делать нельзя, потому что "платформа может закешировать" старое значение, в то время, когда физически в БД появится новое, а о чем платформа не знает. Кто прав ? таки да, 1С кеширует прочитанный объект. Однако, если версия объекта изменилась (поле _version, для MS SQL тип timestamp), то объект перечитывается, иначе считается неизменённым. И тут засада - изменили табличную часть, а юзер нажал "сохранить" в ранее открытом окошке - все изменения пропали. Выход: Кто мешает сделать update главной таблицы, чтобы изменилась _Version, например, Код: sql 1. 2.
Опытным путем установлено, что регистры сведений не кешируются. И можно невозбранно лить в них напрямую. Что крайне ускоряет работу. Имею богатый опыт. В одной конторе уже три года подряд работает фоновое задание, которое берет JSON из с одного http-сервера и обновляет регистр. Раз в 5 минут, около 3К строк. merge на MS SQL. Прямая запись идет около 0.01 сек ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2021, 16:45 |
|
Кеширование данных в 1С
|
|||
---|---|---|---|
#18+
VladimirKr Опытным путем установлено, что регистры сведений не кешируются. И можно невозбранно лить в них напрямую. Что крайне ускоряет работу. ускоряет за счет чего? не перебирает кеш? не факт, что в рамках задачи автора можно будет ограничиться какими-то перечислениями или готовыми ссылками без создания новых чтобы все проапдейтить/вставить - опять новые сущности, опять кеширование. или все измерения строками сделать? а где гарантии, что можно будет уложиться в индекс? зы автор пишет напрямую - кеш сервера приложений не работает и память ненужным не забивает зы2 ссылки в кеше насколько я помню со временем протухают ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2021, 17:58 |
|
Кеширование данных в 1С
|
|||
---|---|---|---|
#18+
Неистовый Служитель Культа ускоряет за счет чего? не перебирает кеш? Ускоряется за счёт возможности группового изменения записей регистра одним merge/ update/insert, которые в 1с делаются по одной записи. Единственная групповая операция изменения данных в 1с это удаление записей из регистра сведений (запись пустого набора записей РС) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2021, 22:29 |
|
Кеширование данных в 1С
|
|||
---|---|---|---|
#18+
VladimirKr Ускоряется за счёт возможности группового изменения записей регистра одним merge/ update/insert, которые в 1с делаются по одной записи. ок. а здесь за счет чего ускорение будет? авторДля а = 1 по 1000000 Цикл Об = Справочники.Мой.СоздатьЭлемент(); Об.Наименование = а; Об.Записать() КонецЦикла; //Даже без набора Для а = 1 по 1000000 Цикл МенеджерЗаписи = РегистрыСведений.МояЗапись.СоздатьМенеджерЗаписи(); МенеджерЗаписи.МоеПоле = а; МенеджерЗаписи.Записать(); КонецЦикла; чтобы уровнять условия допустим мы выключаем в справочнике контроль уникальности... да и вообще получение и автоприращение кода элемента выключаем ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2021, 10:25 |
|
|
start [/forum/topic.php?fid=28&msg=40041465&tid=1518165]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
28ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 236ms |
total: | 366ms |
0 / 0 |