|
Где хранится таблица значений? | ☑ | ||
---|---|---|---|---|
0
Darchick
12.10.15
✎
07:31
|
Добрый день! Подскажите пожалуйста где физически во время обработки хранится Таблица значений в клиент-серверном варианте. На сервере базы данных или на сервере 1С:Предприятия? В оперативной памяти, кэше или еще где-то? Не могу найти информацию по этому поводу.
|
|||
1
jurassic
12.10.15
✎
07:31
|
в памяти
|
|||
2
Darchick
12.10.15
✎
07:32
|
В памяти сервера 1С?
|
|||
3
VladZ
12.10.15
✎
07:34
|
Правильный ответ: там! :)
|
|||
4
GROOVY
12.10.15
✎
07:34
|
На серевере, в озу. если квота вышла то на харде в темпах.
|
|||
5
ЧеловекДуши
12.10.15
✎
07:38
|
(0) Если про реквизит Формы. То на клиенте.
Если про то, что обрабатывается по директиве "&НаСервере", то все перемещается на Сервер и обрабатывается на сервере :) Вообще все это как-то не оптимально, реализовано. Почему нельзя объявить реквизиты формы, которые не надо перемещать на сервер. Или делать это выборочно, по списку :) |
|||
6
jurassic
12.10.15
✎
07:40
|
(5) а что, уже нельзя?
|
|||
7
GROOVY
12.10.15
✎
07:41
|
(5) На клиенте не хранится ТЗ. Там есть часть сериализованных данных.
|
|||
8
GROOVY
12.10.15
✎
07:42
|
(5) И на клиенте вообще ничего не хранится, это, по сути, браузер.
|
|||
9
Darchick
12.10.15
✎
07:44
|
(4) Теоретически я так и думала, а вот практически при выполнении кода две конфигурации, расположенные на разных серверах БД, но исполняемые на одном сервере 1С дают разное время
код (упрощенно) &НаСервере Процедура ВыполнитьЗапросНаСервере() Запрос=Новый Запрос(); Запрос.Текст="ВЫБРАТЬ | ВнутренниеДокументы.Ссылка |ИЗ | Справочник.ВнутренниеДокументы КАК ВнутренниеДокументы" ; ТЗ=Запрос.Выполнить().Выгрузить(); Время1 = ТекущаяУниверсальнаяДатаВМиллисекундах(); Для каждого стр из ТЗ цикл а1=стр.ссылка; конеццикла; Время2 = ТекущаяУниверсальнаяДатаВМиллисекундах(); Время=(Время2-Время1)/1000; Сообщить(Время); КонецПроцедуры Данные абсолютно одинаковые |
|||
10
GROOVY
12.10.15
✎
07:47
|
Darchick, для чистоты эксперимента замеряйте без контекста и с перезапуском сервера.
Ну и "сообщить" на сервере - это атавизм. |
|||
11
jsmith82
12.10.15
✎
07:47
|
(9) И щито?
|
|||
12
GROOVY
12.10.15
✎
07:48
|
Кстати, нафига запрос в ТЗ выгружать? 1С всячески рекомендует выборку юзать.
|
|||
13
Darchick
12.10.15
✎
07:51
|
(10) ОК попробую
(12) Это дает лучшую производительность? |
|||
14
GROOVY
12.10.15
✎
07:52
|
(13) Естественно. Выборка порционна. Обычно за такой код увольняют.
|
|||
15
jsmith82
12.10.15
✎
07:53
|
(12) А почему бы и нет? Удобно вполне. Можно курсор юзать по индексу. Щас-то уже не 640 кб ОЗУ на дворе.
|
|||
16
jsmith82
12.10.15
✎
07:53
|
(14) Фигня это. За это не увольняют, а снижают балл на экзамене по платформе.
|
|||
17
GROOVY
12.10.15
✎
07:54
|
(16) А почему?!
Коллеги, когда у вас в выборке 20 строк - то пофиг. Когда 20млн - тогда глаза открываются. |
|||
18
GROOVY
12.10.15
✎
07:56
|
ТЗ из запроса = созданию второго (дубля) объекта, не сериализуемого в памяти на сервере. При том, что он уже есть и вполне себе сериализуем.
|
|||
19
Darchick
12.10.15
✎
07:58
|
(17) Полностью согласна, но мне нужно было четко разделить время обращения к БД и исполнения на сервере. Насчет выборки была не уверена, а ТЗ всегда думала что хранится на сервере 1С.
|
|||
20
Darchick
12.10.15
✎
07:59
|
(17) Поэтому результат и удивил
|
|||
21
jsmith82
12.10.15
✎
08:04
|
Причём тут код в (9) и ТЗ на сервере 1с?
|
|||
22
GROOVY
12.10.15
✎
08:08
|
ТЗ на клиенте нет. В принципе.
|
|||
23
Darchick
12.10.15
✎
08:09
|
(21) ТЗ=Запрос.Выполнить().Выгрузить(); Выгружает результат запроса в таблицу значений
|
|||
24
jsmith82
12.10.15
✎
08:09
|
(23) Ну и чо? Две базы на разных серверах СУБД. Код на сервере 1с.
|
|||
25
jsmith82
12.10.15
✎
08:10
|
Груви сказал - ТЗ хранится на сервере 1с в ОЗУ, всё.
|
|||
26
jsmith82
12.10.15
✎
08:11
|
Откуда такие вопросы вообще в (0)? Прям озадачилась. Биты в памяти менять через ассемблер собралась что ли
|
|||
27
GROOVY
12.10.15
✎
08:15
|
(25) Не все. Может упасть на хард.
|
|||
28
jsmith82
12.10.15
✎
08:16
|
(27) Ну, файл подкачки тоже ОЗУ
|
|||
29
Darchick
12.10.15
✎
08:17
|
(26) Нужно сравнить производительность 2 серверов БД. Код слегка переукоротила было примерно вот так:
&НаСервере Процедура ВыполнитьЗапросНаСервере() Время0 = ТекущаяУниверсальнаяДатаВМиллисекундах(); Запрос=Новый Запрос(); Запрос.Текст="ВЫБРАТЬ | ВнутренниеДокументы.Ссылка |ИЗ | Справочник.ВнутренниеДокументы КАК ВнутренниеДокументы" ; ТЗ=Запрос.Выполнить().Выгрузить(); Время1 = ТекущаяУниверсальнаяДатаВМиллисекундах(); Для каждого стр из ТЗ цикл а1=стр.ссылка; конеццикла; Время2 = ТекущаяУниверсальнаяДатаВМиллисекундах(); ВремяЗапроса=(Время1-Время0)/1000; ВремяОбработки=(Время2-Время1)/1000; КонецПроцедуры Изначально предполагалось что времяЗапроса будет отличаться, а времяОбработки останется примерно одинаковым, а вот вышло наоборот. Не могу понять почему |
|||
30
GROOVY
12.10.15
✎
08:18
|
И где тут обработка?
|
|||
31
GROOVY
12.10.15
✎
08:19
|
В коде все делается на сервере, копируется массив данных, непонятно зачем, и перебирается по индексированному полю. В принципе тормозить должно.
|
|||
32
GROOVY
12.10.15
✎
08:20
|
*31 по НЕ индекированному
|
|||
33
jsmith82
12.10.15
✎
08:23
|
(29) Производительность двух серверов БД - окей...
Делаешь одну обработку и гоняешь её на две базы, что и делаешь Теперь догнал |
|||
34
jsmith82
12.10.15
✎
08:24
|
То бишь запрос у неё одинаково работает, а итерация по ТЗ не одинаково. И она подозревает, что ТЗ хранится в памяти сервера БД
|
|||
35
jsmith82
12.10.15
✎
08:24
|
А количество строк в ТЗ одинаковое?
|
|||
36
GROOVY
12.10.15
✎
08:25
|
Какие все подозрительные.
Не проще ли посмотреть, что сервер получает и как хранит? |
|||
37
organizm
12.10.15
✎
08:27
|
эххх, поколение пепси.
|
|||
38
organizm
12.10.15
✎
08:28
|
их бы запустить поработать с ASP.NET глаза бы открылись на мир...
|
|||
39
jsmith82
12.10.15
✎
08:28
|
(32) Без разницы тут. Просто УИД
|
|||
40
jsmith82
12.10.15
✎
08:28
|
(38) А чо там? Я работал в 2008 г. Чото крутое?
|
|||
41
organizm
12.10.15
✎
08:29
|
позволяет понять возможности клиента и сервера, что можно и что нельзя. а то все 1С плохое...
|
|||
42
gigi789
12.10.15
✎
08:32
|
(9) Для такого кода запрос не нужен, достаточно Справочники.ВнутренниеДокументы.Выбрать();
|
|||
43
gigi789
12.10.15
✎
08:33
|
(8) ой-ли. А зачем же позвольте вас спросить гуру мы кеши всякие чистим??
|
|||
45
H A D G E H O G s
12.10.15
✎
08:37
|
Вполне кошерно выгружать запрос в тз. Ведь вы же максимально фильтруете его и на выходе у нас пара сотня строк, не больше. Не так ли Грувви?
|
|||
46
gigi789
12.10.15
✎
08:37
|
(30) Человек смотрит 1) скорость выполнение кастериндексскана
2) перебор тз Как варик пишет обоснование увеличения опреративы. Типо бла бла добавите 10 гигов и вот этот код начнет выполнятся быстрее. |
|||
47
NcSteel
12.10.15
✎
08:39
|
(45) Пара сотня не критична, миллионы критично
|
|||
48
jsmith82
12.10.15
✎
08:41
|
10 млн доков / 365 дней = 27 доков в день
|
|||
49
H A D G E H O G s
12.10.15
✎
08:41
|
(47) еще раз. Миллионов у вас не должно быть. Никогда.
|
|||
50
gigi789
12.10.15
✎
08:41
|
(45) Еще очень кошерно делать выборку для заполнения тч документа, и не в коем случаи не пользоваться ЗаполнитьЗначенияСвойств(). Ибо тру 1сники зп получают от времени и количества строчек кода.
|
|||
51
jsmith82
12.10.15
✎
08:41
|
*27 тыщ в день
|
|||
52
NcSteel
12.10.15
✎
08:42
|
(49) Почему? А если обмен?
|
|||
53
User_Agronom
12.10.15
✎
08:42
|
(0) У меня тут СП завалялось какое-то. Оттуда:
"ТаблицаЗначений (ValueTable) ... Доступность: Сервер, толстый клиент, внешнее соединение. ..." Так что (7) не совсем верно. При работе в обычных формах ТЗ нормально живёт на клиенте. |
|||
54
jsmith82
12.10.15
✎
08:43
|
Причём тут обмен?
|
|||
55
Провинциальный 1сник
12.10.15
✎
08:43
|
(17) Когда у вас в выборке 20 млн строк - то само её существование говорит о том, что запрос написан неверно)
|
|||
56
NcSteel
12.10.15
✎
08:44
|
(54) При том, что для обмена могут потребоваться запросы с выборкой данных
|
|||
57
NcSteel
12.10.15
✎
08:44
|
(55) Ложь
|
|||
58
Лефмихалыч
12.10.15
✎
08:44
|
(49) ни когда не говори ни когда
|
|||
59
NcSteel
12.10.15
✎
08:44
|
(58) +100500
Поражают крайне критические выводы |
|||
60
Лефмихалыч
12.10.15
✎
08:45
|
вообще. автор занимается хернёй.
|
|||
61
H A D G E H O G s
12.10.15
✎
08:46
|
Автор, ответ на твой вопрос:
Dbcc cleanbuffers На сервере mssql между тестами |
|||
62
jsmith82
12.10.15
✎
08:47
|
(53) Компиляция прям для клиента?
|
|||
63
H A D G E H O G s
12.10.15
✎
08:47
|
(52) порционные запросы в цикле
|
|||
64
jsmith82
12.10.15
✎
08:47
|
А, ну да
|
|||
65
Провинциальный 1сник
12.10.15
✎
08:48
|
(57) Нет. Язык запросов разрабатывался не для того, чтобы выдавать сырые данные огромного размера. Делать "ВЫБРАТЬ * ИЗ РегистрБухгалтерии.Хозрасчетный" и переборка выборки - еще более неверно, чем выгрузка в ТЗ.
|
|||
66
gigi789
12.10.15
✎
08:49
|
(54) по ком тянем в соседнюю базу данные например. Достаточно удобно запрос выгрузить в тз, тз в строку из строки и вот у вас тз на той стороне.
|
|||
67
NcSteel
12.10.15
✎
08:50
|
(65) Кто тебе сказал, что 20 млн это сырые данные? Самая настоящая выжимка того что надо
|
|||
68
Лефмихалыч
12.10.15
✎
08:50
|
(65) язык-то может и разрабатывался так, но вот только изобретатели всяких форм отчетности типа алкогольной об этом не в курсе, по этому выборки в миллионы строк таки иногда бывают
|
|||
69
H A D G E H O G s
12.10.15
✎
08:51
|
(22) из на клиенте в принципе есть, Грувви.
|
|||
70
H A D G E H O G s
12.10.15
✎
08:51
|
(66) а вот этого делать нельзя.
|
|||
71
gigi789
12.10.15
✎
08:52
|
(66) Согласен с тем что это нужно делать порционо и желательно много поточно.
|
|||
72
NcSteel
12.10.15
✎
08:52
|
(63) Не факт, что будет быстрее, а код усложняет....
|
|||
73
gigi789
12.10.15
✎
08:52
|
(70) почему??
|
|||
74
Провинциальный 1сник
12.10.15
✎
08:52
|
(70) Отличнейшее решение, что оно вам не нравится? Сериализация-десериализация позволяет избавиться от кучи проблем типа плавающей точки при передаче рублей.
|
|||
75
User_Agronom
12.10.15
✎
08:53
|
(62) Не понял, что хотел ты сказать.
А так да: в обычных формах ТЗ можно сформировать на клиенте и там с ним работать. (22) О сколько нам открытий чудных, готовит просвещения дух! Но это явно не тот случай. |
|||
76
H A D G E H O G s
12.10.15
✎
08:54
|
(74) сериализация идет в неепияеской длины строку, которую надо Каждый раз при сериализации гдето разместить в памяти.
|
|||
77
Лефмихалыч
12.10.15
✎
08:55
|
+(76) при чем - два раза разместить, ведь ее же потом передают из процесса в процесс
|
|||
78
jsmith82
12.10.15
✎
08:56
|
Прерву вашу баталию, миллионы строк вполне живут в ТЗ на сервере и робят
Если у фирмы миллионы строк, пусть ставят хороший сервер |
|||
79
H A D G E H O G s
12.10.15
✎
08:59
|
(77) ты немного не понял. Реаллокация в памяти происходит каждый раз, когда к строке добавляется другая строка. Как раз, когда готовая строка отправляется в другой процесс ничего страшного.
|
|||
80
NcSteel
12.10.15
✎
09:04
|
(79) Ну и че? ))) пусть хоть переварачивает сервер, от этого он не помрет и отработает....
Я открою секрет, то даже гото можно использовать. |
|||
81
DmitrO
12.10.15
✎
09:28
|
(27)На сколько я помню, 1С говорила, что на хард может упасть результат запроса, а не ТЗ.
|
|||
82
Живой Ископаемый
12.10.15
✎
10:37
|
(81) А с МайкроСофтом они об этом договорились?
|
|||
83
Garykom
гуру
12.10.15
✎
11:31
|
(9) и ни у кого не возникло подозрения что подобный код вполне зависим от сервера бд?
или хотите сказать что в платформе 1С нет никакой оптимизации, кеширования и прочих многопоточных хр..й? переброска данных полученных запросом с сервера бд, на сервер 1С в ТЗ занимает какое то время возможно сделана оптимизация в платформе что сначала в ТЗ создаются пустые элементы в нужном кол-ве (из запроса), и только потом они в фоне начинают заполнятся данными с сервера бд причем если пытаются прочитать строку из ТЗ которая еще не заполнена, то задержка будет, пока ее с сервера вне очереди не прочитают ЗЫ это просто размышления... |
|||
84
Фокусник
12.10.15
✎
11:36
|
(43) а что, у браузеров нет кешей? ;)
|
|||
85
hhhh
12.10.15
✎
11:42
|
(83) думаете там по одной строке передается? По идее по 5-10 тыс строк должно сразу в одной порции.
|
|||
86
Necessitudo
12.10.15
✎
11:46
|
(25) А разве не в буферном пуле СУБД хранится таблица значений?)
|
|||
87
gigi789
12.10.15
✎
11:54
|
(84) а что разве в них не чего не хранится??
|
|||
88
Живой Ископаемый
12.10.15
✎
12:14
|
2(26) если мы ее помещаем в параметр запроса для ВТ? наверное да, в нем
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |