Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Запрос, удаление временной таблицы

Запрос, удаление временной таблицы
Я
   Momus
 
03.03.20 - 16:46
Поделитесь опытом сильно ли влияет на производительность явное удаление временной таблицы в запросе. Временные таблицы имею ввиду те, которые образуются после "Поместить".
 
 
   vicof
 
1 - 03.03.20 - 16:46
Сильно влияет вставание в 7 утра на вымирание землероек?
   Momus
 
2 - 03.03.20 - 16:49
(1) т.е. если будет какой-то архисложный запрос, Запрос.Выполнить() будет одинаково по времени отрабатывать?
   vicof
 
3 - 03.03.20 - 16:51
Нет, вещи спрашиваешь не особо связанные. Зависит от настроек СУБД, 1С, сервера, железа, кода, мозгов и т.д. и т.п.
   unenu
 
4 - 03.03.20 - 16:51
(2) если у вас есть бд в которой есть рн в которых 100-500КК записей то проведите тесты.
самое ценное знание то, которые вы добыли сами.
   Сияющий в темноте
 
5 - 03.03.20 - 17:03
это влияет не на скорость а на обьем памяти и диска используемый sql-сервером.
   Momus
 
6 - 03.03.20 - 17:34
(5) т.е. прямой зависимости скорости выполнения запроса от объема занимаемой памяти и диска (если она в избытке) нет? +Судя по той информации, которую я нарыл в сети, явное уничтожение временных таблиц это скорее хорошие манеры, а не необходимость
   D_E_S_131
 
7 - 03.03.20 - 17:35
(4) Да, на рабочем сервере будет в самый раз провести такой эксперимент :)
   Said_We
 
8 - 03.03.20 - 17:49
(6) Не бывает в избытке. Сегодня в избытке, а завтра не хватает. Поэтому если та или иная временная таблица более не используется, то её надо удалять. Что бы потом не сидеть и не оптимизировать, то что можно нарисовать сразу.
   VS-1976
 
9 - 03.03.20 - 18:10
(0) Времянка создаётся в temp_db. Удаление очищает используемое место в базе. Есть шанс что освободившееся нарезанное пространство будет использовано повторно, вместо того что бы база temp_db распухла ( выделение куска диска + нарезка структуры ). Шанс что-то выиграете от этого есть но он ничтожно мал...
   vi0
 
10 - 03.03.20 - 18:15
(0) что значит явное удаление?
   VS-1976
 
11 - 03.03.20 - 18:17
(10) Как то так:

ВЫБРАТЬ
    "Значение" КАК Поле

ПОМЕСТИТЬ тзДанные

;

УНИЧТОЖИТЬ тзДанные
;
   pechkin
 
12 - 03.03.20 - 18:17
в скорости проигрыш будет точно (в противном случае таблица удабится когда то потом), но выигрыш в освобождении пространства
   vi0
 
13 - 03.03.20 - 18:17
(11) ну может быть он другое имеет ввиду
   Momus
 
14 - 03.03.20 - 18:18
(10) из того, что я прочитал, вт живёт до тех пор, пока жива переменная с результатом запроса. Под явным удалением удалением я подразумеваю использование конструкции "уничтожить" в тексте запроса
   vi0
 
15 - 03.03.20 - 18:19
(14) не совсем - если есть менеджер временных таблиц и он жив, то вт жива и в этом случае
   VS-1976
 
16 - 03.03.20 - 18:19
(14) То только. Есть ещё случай
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;

Тогда таблица будет автоматом уничтожена когда будет уничтожен МенеджерВременныхТаблиц
   Надо работать
 
17 - 03.03.20 - 18:20
(8) а потом, во время отладки, будешь сидеть и не понимать куда делись твои ВТ..
   vi0
 
18 - 03.03.20 - 18:20
(15) + поэтому если МВТ жив долгое время, например когда гуляет от функции к функции, то ВТ смысл удалять есть
это как частный случай
   VS-1976
 
19 - 03.03.20 - 18:21
(16) Но если падает клиент, а запрос осуществлялся на клиенте ( ОФ ), то таблица может существовать долго :)
   vi0
 
20 - 03.03.20 - 18:21
(16) не так, нужно чтобы переменная была с МВТ
   vi0
 
21 - 03.03.20 - 18:23
(17) если только для отладки то это совсем другой разговор
   Momus
 
22 - 03.03.20 - 18:23
(12) проигрыш в скорости только в том случае, если мне таблица понадобится? Если я уверен, что эта таблица мне более не нужна, то в скорости разницы нет (если с памятью проблем нет)?
(16) да, про менеджер знаю, поэтому сразу уточнил именно про поместить.
   vi0
 
23 - 03.03.20 - 18:24
(20) точнее - переменная, если Запрос уже уничтожен
   pechkin
 
24 - 03.03.20 - 18:25
(22) причем здесь понадобится или нет?
если ты запускаешь действие (уничтожить ВТ) - то оно будет выполнять N секунд. вот это и будет проигрыш
   vi0
 
25 - 03.03.20 - 18:25
(22) а ты спроси его "если проигрыш будет точно то как это легко проверить?"
ну раз уж "точно" то и проверить легко значит
   vi0
 
26 - 03.03.20 - 18:26
(24) ВТ в любом случае будет уничтожаться, если у запроса не инициирован МВТ
   Momus
 
27 - 03.03.20 - 18:26
(24) вот так понятней
   pechkin
 
28 - 03.03.20 - 18:27
(26) оно уничтожится, но уничтожится потом не блокируя ввод
   VS-1976
 
29 - 03.03.20 - 18:27
(20) Ясен хрен пока объект держат он не будет уничтожаться сборщиком мусора и его деструктор не будет вызываться.
При этом этого достаточно:

Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;

В случае 2:

пМенеджер = Новый МенеджерВременныхТаблиц;
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = пМенеджер;
Запрос = Неопределено;

Менеджер разумеется не грохнется, так как будет в переменной, так как у объекта есть счётчик ссылок.
Во втором случае после уничтожения объекта Запрос, произойдёт уменьшение счётчика использования МенеджерВременныхТаблиц. И когда счётчик станет равным 0, вызовется деструктор МенеджерВременныхТаблиц.
   pechkin
 
30 - 03.03.20 - 18:27
то бишь асинхронно
 
 Рекламное место пустует
   vi0
 
31 - 03.03.20 - 18:28
(28) что такое блокировка ввода? до сих пор говорили только про скорость
   VS-1976
 
32 - 03.03.20 - 18:31
(30) Разные базы, по этому MS SQL будет параллельно делать DML к базе temp_db. Удаление таблицы это тупо пометка в структуре что область свободна. Это не занимает много времени. По этому о каком-то торможении из-за УНИЧТОЖИТЬ говорить не приходится. Если конечно на temp_db не длинная очередь, и то тупо выполнится удаление позже что не критично.
   Momus
 
33 - 03.03.20 - 18:46
(9), (32) вот примерно такого ответа я ожидал. Спасибо
   Надо работать
 
34 - 03.03.20 - 18:50
(33) захламление кода. направьте свою энергию в более полезное для базы дело
   Said_We
 
35 - 03.03.20 - 21:02
(17) "а потом, во время отладки, будешь сидеть и не понимать куда делись твои ВТ.." - это когда это?
В консоле видно когда и что удаляешь.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.