|
Уничтожение временных таблиц необходимо? | ☑ | ||
---|---|---|---|---|
0
palpetrovich
28.11.12
✎
12:05
|
Есть обработка, в ней примерно так:
Перем МенеджерВТ; // Процедура СоздатьВТИзТЗ(ТЗ) Запрос = Новый Запрос; МенеджерВТ = Новый МенеджерВременныхТаблиц; Запрос.МенеджерВременныхТаблиц = МенеджерВТ; Запрос.Текст = " ВЫБРАТЬ * ПОМЕСТИТЬ ВТДанные ИЗ &ТЗ КАК ТЗ"; Запрос.УстановитьПараметр("ТЗ", ТЗ); Запрос.Выполнить(); КонецПроцедуры // Функция ПолучитьТЗСОтбором(КакойТоОтбор="") Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = МенеджерВТ; Запрос.Текст = "ВЫБРАТЬ * ИЗ ВТДанные КАК ВТДанные ГДЕ ВТДанные.КакоеТоПоле ПОДОБНО &КакойТоОтбор"; Запрос.УстановитьПараметр("КакойТоОтбор", "%" + КакойТоОтбор + "%"); Результат = Запрос.Выполнить(); Возврат Результат.Выгрузить(); КонецФункции Процедура СоздатьВТИзТЗ(ТЗ) может вызыватся неединожды, Функция ПолучитьТЗСОтбором - гораздо более часто Необходимо-ли "обнулять" МенеджерВТ перед его повторным использованием и при завершении работы обработки? Или платформа все селает сама? |
|||
1
palpetrovich
28.11.12
✎
12:08
|
+(0) в КнигеЗнаний встретил такую фразу "Временную таблицу нужно удалять как можно скорее после использования."
насколько это правда? |
|||
2
Kashemir
28.11.12
✎
12:08
|
Сборщик мусора все почистит сам, если ссылок на менеджер не останется.
|
|||
3
Maxus43
28.11.12
✎
12:09
|
имхо не нужно.
по факту - хз, никогда не удаляю специально, если только не огромные таблицы и долгоиграющие алгоритмы |
|||
4
Kashemir
28.11.12
✎
12:10
|
(1) Наверняка речь идет о временной в пределах запроса. Но в любом случае лишним не будет - к чему отъедать лишние ресурсы для хранения данных, которые тебе уже не нужны.
|
|||
5
Sammo
28.11.12
✎
12:11
|
Речь скорее всего идет не про менеджер ВТ, а про
УНИЧТОЖИТЬ ВТДанные |
|||
6
palpetrovich
28.11.12
✎
12:12
|
(2) ну, при закрытии обработки - однозначно не останется
(3) понял, таблицы не огромные, но обработка может работать долго, зависит только от использующего ее (4) в пределах запроса использовать МенеджерВременныхТаблиц - не обязательно |
|||
7
Sammo
28.11.12
✎
12:12
|
А по факту были релизы, где менеджер временных таблиц не чистился. Но, емнип, уже исправлено.
|
|||
8
palpetrovich
28.11.12
✎
12:13
|
(5) ну наверное
|
|||
9
Kashemir
28.11.12
✎
12:14
|
ну, при закрытии обработки - однозначно не останется
___ Не обязательно лечить головную боль отрубанием оной. в пределах запроса использовать МенеджерВременныхТаблиц - не обязательно _________ Замечательное наблюдение. |
|||
10
Reset
28.11.12
✎
12:14
|
(6) Не менеджер, а сами таблицы имеется в виду, внутри запроса. Типа
Выбрать ... Поместить ВТ1; Выбрать ... Поместить ВТ2 из ВТ1; Уничтожить ВТ1; <--- тк вт1 уже не нужна Выбрать .... |
|||
11
mikecool
28.11.12
✎
12:17
|
удаляю всегда
|
|||
12
Kashemir
28.11.12
✎
12:17
|
(7) Главное скуль меньше течь стал :)
|
|||
13
palpetrovich
28.11.12
✎
12:17
|
(9) не понял саразма
(10) понятно, а в случае (0), МенеджерВТ ведет себя как обычная переменная? При повторном использовании мусор от первого не остается? |
|||
14
Reset
28.11.12
✎
12:18
|
(13) Да, по кр мере - так задумано
|
|||
15
Kashemir
28.11.12
✎
12:19
|
(13) не понял саразма
__________ в пределах запроса использовать МенеджерВременныхТаблиц - не обязательно ________ Дело в том что менеджервременныхтаблиц вообще запроса не касается. Это платформенное решение упрощающее перенос данных между запросами. |
|||
16
Широкий
28.11.12
✎
12:20
|
Насколько я помню сами временные таблицы остаются.
Данные только оттуда убиваются. |
|||
17
H A D G E H O G s
28.11.12
✎
12:20
|
tempdb пухнуть будет.
|
|||
18
palpetrovich
28.11.12
✎
12:20
|
(15) а где я сказал противное? :)
|
|||
19
H A D G E H O G s
28.11.12
✎
12:21
|
Если в пакетном будешь оставлять ненужную и хреначить следующие.
|
|||
20
Kashemir
28.11.12
✎
12:25
|
(18) Озадачил комментарий (6) на (4)
|
|||
21
vde69
28.11.12
✎
12:26
|
явная типизация и явная очистка - это хороший тон, иногда он избавляет от лишнего гемороя, хотя в общем случае и так работает.
примеры Таблица.Колонки.Добавить("Контрагент", "СправочникСсылка.Контрагенты") вроде без описания типов будет работать, ан не всегда.... например после присвоения строки не будет правильно работать ЗначениеЗаполнено |
|||
22
palpetrovich
28.11.12
✎
12:26
|
(17) т.е. так будет правильней?
Процедура СоздатьВТИзТЗ(ТЗ) Если ТипЗнч(МенеджерВТ) = Тип("МенеджерВременныхТаблиц") Тогда Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = МенеджерВТ; Запрос.Текст = " УНИЧТОЖИТЬ ИмяВременнойТаблицы"; Запрос.Выполнить(); КонецЕсли; Запрос = Новый Запрос; МенеджерВТ = Новый МенеджерВременныхТаблиц; Запрос.МенеджерВременныхТаблиц = МенеджерВТ; Запрос.Текст = " ВЫБРАТЬ * ПОМЕСТИТЬ ВТДанные ИЗ &ТЗ КАК ТЗ"; Запрос.УстановитьПараметр("ТЗ", ТЗ); Запрос.Выполнить(); КонецПроцедуры |
|||
23
palpetrovich
28.11.12
✎
12:27
|
+22
Запрос.Текст = " УНИЧТОЖИТЬ ВТДанные"; :) |
|||
24
palpetrovich
28.11.12
✎
12:29
|
Всем спасибо, буду чистить
|
|||
25
Рэйв
28.11.12
✎
12:34
|
Запрос.МенеджерВременныхТаблиц.Закрыть()
|
|||
26
palpetrovich
28.11.12
✎
12:40
|
(25) спасибо, тоже вариант
|
|||
27
Lama12
28.11.12
✎
12:42
|
ТС, сделай голосовалку.
Вопрос интересен. |
|||
28
palpetrovich
28.11.12
✎
12:49
|
(27) я не умею :(
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |