![]() |
![]() |
![]() |
|
Немного теории. Временные таблицы | ☑ | ||
---|---|---|---|---|
0
H A D G E H O G s
12.11.08
✎
11:55
|
День добрый.
Некоторые обзывы о Временных Таблицах. Стал увлекаться изпользованием этого чуда, и возникли сомнения, которые решил проверить. По результатам: 1) Временные таблицы 1С - это локальные временные таблицы SQL, со всеми их последствиями. Это НЕ таблицы в оперативной памяти, они храняться в базе tempdb. 2) Временная таблица в SQL очищается после того, как мы очистим Менеджер временной таблицы в 1С (или код выйдет за область видимости переменной) 3) Однако временная таблица в SQL продолжает существовать, пока есть коннект к SQL -ю (даже из конфигуратора), или мы не выполнили запрос УНИЧТОЖИТЬ 4) И Самое Важное: я не увидел создания ИНДЕКСА для временной таблицы в SQL, скажем код вида: Запрос=Новый Запрос; Запрос.Текст= "ВЫБРАТЬ | ПартииТоваровНаСкладахОстатки.Номенклатура, | ПартииТоваровНаСкладахОстатки.СтоимостьОстаток |ИЗ | РегистрНакопления.ПартииТоваровНаСкладах.Остатки КАК ПартииТоваровНаСкладахОстатки"; Таблица=Запрос.Выполнить().Выгрузить(); Таблица.Индексы.Добавить("Номенклатура"); Запрос=Новый Запрос; Менеджер=Новый МенеджерВременныхТаблиц; Запрос.МенеджерВременныхТаблиц=Менеджер; Запрос.УстановитьПараметр("Таблица",Таблица); Запрос.Текст= "ВЫБРАТЬ | Таблица.Номенклатура, | Таблица.СтоимостьОстаток |ПОМЕСТИТЬ ВРЕМЕННАЯ |ИЗ | &Таблица КАК Таблица"; Запрос.Выполнить(); ИНДЕКСА во временной таблице не создаст.. Вот такие исследование. Критика/тыкание носом в ошибки приветствуется. P.S. В дальнейшем удержусь от необузданного использования этого чуда. Уж лучше индексированная ТЗ. |
|||
1
Sadovnikov
12.11.08
✎
12:00
|
(0) Возвращайся в реальный мир - ты с 1С работаешь :)
Я вчера такой пример приводил: "Выполняем элементарный запрос: Select Док_Товары.Ссылка, Док_Товары.Товары.(Количество, Цена) From Документ.ПоступлениеТоваров Док_Товары 1С-ка при этом создает временную таблицу. А удалять ее даже и не собирается. Делает ей TRUNCATE TABLE и успокаивается. И пры завершении сеанса тоже даже не думает за собой прибраться. В итоге наблюдаем веселую картину - туеву хуча временных таблиц, висящих до тех пор, пока сервер 1С-ки не перезапустишь. " |
|||
2
H A D G E H O G s
12.11.08
✎
12:01
|
(1) Ну и пусть висят. Какая разница? Они же только своей структурой наполнены..
|
|||
3
H A D G E H O G s
12.11.08
✎
12:05
|
(1) Сервер перезапускать необязательно. Достаточно всем отключиться от 1С.. :-)
|
|||
4
Immortal
12.11.08
✎
12:05
|
(0)на ИТС написано надо tempdb настроить и работать с ними правильно.
(1) в ИТСе (2) есть такое (3) тож на ИТСе (4) а как по твоему определить ключ? |
|||
5
wPa
12.11.08
✎
12:06
|
(2) Не забывай закрывать МВТ, а то получишь не хреновую утечку памяти
|
|||
6
H A D G E H O G s
12.11.08
✎
12:08
|
Ну а насчет индекса кто - что скажет? Я его не проглядел?
|
|||
7
Sadovnikov
12.11.08
✎
12:09
|
(4) Можно узнать, как в ИТС-е обосновывают такую неряшливую работу с таблицами?
|
|||
8
Fragster
гуру
12.11.08
✎
12:10
|
(4) рекурсия?
|
|||
9
KAO111
12.11.08
✎
12:11
|
А если использовать ключевое слово
ИНДЕКСИРОВАТЬ ПО ? |
|||
10
ptiz
12.11.08
✎
12:11
|
(0) Для добавления индексов во временные таблицы используется ключевое слово ИНДЕКСИРОВАТЬ ПО в тексте запроса
|
|||
11
Immortal
12.11.08
✎
12:11
|
эх , Ёжик-))
см (4) п. 4.. При необходимости создания индекса для временной таблицы, следует в запросе указать ключевое слово ИНДЕКСИРОВАТЬ ПО, после которого перечислить поля, по которым нужно построить индекс. Например: ВЫБРАТЬ Код, Наименование ПОМЕСТИТЬ ВременнаяТаблица ИЗ Справочник.Номенклатура ИНДЕКСИРОВАТЬ ПО Код Поля, по которым происходит индексирование должны находиться в списке выборки. |
|||
12
wPa
12.11.08
✎
12:11
|
(8) ))) выход из рекурсии сразу на (1)
|
|||
13
Immortal
12.11.08
✎
12:12
|
(7) в смысле что структуры висят после использования?
там про это не написано-) |
|||
14
Sadovnikov
12.11.08
✎
12:13
|
(13) Сильный ответ от 1С :)
Тоесть, они даже никакого обоснование криворукости придумать не смогли? |
|||
15
Defender aka LINN
12.11.08
✎
12:14
|
(6) Проглядел.
|
|||
16
H A D G E H O G s
12.11.08
✎
12:21
|
(15) Точно, проглядел.. Даже вкладка в конструкторе появляется..
Все, тогда все хорошо. Молодцы, 1С-овцы.. |
|||
17
H A D G E H O G s
12.11.08
✎
12:22
|
(14) Я вот посмотрел, что при одном и том - же запросе они используют одну и туже таблицу. Без нового создания..
|
|||
18
Immortal
12.11.08
✎
12:23
|
(8):D
(14) на партнёрском надо поискать, может чего и объясняли.А так вообще не встречал доводов ни за ни против(официальных) |
|||
19
Immortal
12.11.08
✎
12:24
|
я с вами обед блин пропущу-)
убёх |
|||
20
Sadovnikov
12.11.08
✎
12:25
|
(17) Да, одну и ту же. Но это не повод оставлять ее на сервере и после выхода из 1С.
|
|||
21
H A D G E H O G s
12.11.08
✎
12:29
|
(20) Очистку и удаление Врем. таб. доверили программисту.
Ну я в (1) - это исключение из правил, которое будет исправлено наверное. |
|||
22
Sadovnikov
12.11.08
✎
12:31
|
(21) А позволь узнать - как ты сможешь удалить эту временную таблицу из примера в (1)? Хотя бы ее имя как узнаешь?
|
|||
23
H A D G E H O G s
12.11.08
✎
12:33
|
(22) Нет, нет, я говорю, про созданные 1С -ником Временные таблицы через МенеджерВременныхТаблиц..
А в (1) - это косяк, несущественный, может и исправят. |
|||
24
wPa
12.11.08
✎
12:44
|
(22) Ну а что неправильного? truncate log on checkpoint для tempdb всегда включена. Сам очистится. Или будешь ждать транзакцию чтобы выйти из 1С?
|
|||
25
Sadovnikov
12.11.08
✎
12:45
|
(23) С одной стороны - несущественный косяк. С другой - показывает раздолбайское отношение 1С к разработке платформы. Плюс, на сколько я помню, восьмерка же позиционировалась как супер-пупер прога для офигенно крупных контор с большим количеством пользователей? Вот там-то как раз этот косяк и будет весьма существенным. Вкупе с остальными.
|
|||
26
wPa
12.11.08
✎
12:46
|
(23) Да на эти грабли наступили. Закрывать даже если там одна запись
|
|||
27
Sadovnikov
12.11.08
✎
12:46
|
(24) Кто сам очистится-то? Загляни в tempdb и возрадуйся.
|
|||
28
Sadovnikov
12.11.08
✎
12:47
|
(3) "Сервер перезапускать необязательно. Достаточно всем отключиться от 1С" - нифига не достаточно.
|
|||
29
Ferz
12.11.08
✎
12:49
|
Вот еще о временных таблицах http://main.1c-ei.ru/Articles/TypeQurey
|
|||
30
wPa
12.11.08
✎
12:54
|
(27) Я радуюсь. 200 мегов - У нас сервер SQL перезапускается ежедневно. Поставь автошринк для нее...
|
|||
31
Sadovnikov
12.11.08
✎
12:56
|
(30) "У нас сервер SQL перезапускается ежедневно" - а теперь представь работу базы 24*7.
|
|||
32
wPa
12.11.08
✎
12:57
|
(28) если бекап ее не делаешь - отдельно сжимай. У нас полные бекапы поэтому смысла нет - проще перегрузить.
|
|||
33
wPa
12.11.08
✎
12:58
|
(31) см. (32). в регламент добавь шринк или автошринк - будет при бекапе. Короче - решаемо не проблема - тем более для тебя
|
|||
34
H A D G E H O G s
12.11.08
✎
13:00
|
(29) За это - спасибо, буду вникать.
|
|||
35
Sadovnikov
12.11.08
✎
13:03
|
(33) Так я же не говорю, что это дикая нерешаемая проблема :)
Просто, показал как пример безалаберности прогеров 1С :( |
|||
36
Immortal
12.11.08
✎
13:09
|
усё. сровняли 8 с плинтусом..
подумаешь, кактус, мы и не такое ели-) |
|||
37
Sadovnikov
12.11.08
✎
13:12
|
(36) Как? Неужели я забил последний гвоздь в этом благородном начинании??? :)
|
|||
38
Immortal
12.11.08
✎
16:03
|
(37) кончен, тебе только молоток дай, ты и Нуралиева-кормильца пришибёшь-)
|
|||
39
Immortal
12.11.08
✎
16:04
|
кончен=конечно
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |