|
Запрос, удаление временной таблицы | ☑ | ||
---|---|---|---|---|
0
Momus
03.03.20
✎
16:46
|
Поделитесь опытом сильно ли влияет на производительность явное удаление временной таблицы в запросе. Временные таблицы имею ввиду те, которые образуются после "Поместить".
|
|||
1
vicof
03.03.20
✎
16:46
|
Сильно влияет вставание в 7 утра на вымирание землероек?
|
|||
2
Momus
03.03.20
✎
16:49
|
(1) т.е. если будет какой-то архисложный запрос, Запрос.Выполнить() будет одинаково по времени отрабатывать?
|
|||
3
vicof
03.03.20
✎
16:51
|
Нет, вещи спрашиваешь не особо связанные. Зависит от настроек СУБД, 1С, сервера, железа, кода, мозгов и т.д. и т.п.
|
|||
4
unenu
03.03.20
✎
16:51
|
(2) если у вас есть бд в которой есть рн в которых 100-500КК записей то проведите тесты.
самое ценное знание то, которые вы добыли сами. |
|||
5
Сияющий в темноте
03.03.20
✎
17:03
|
это влияет не на скорость а на обьем памяти и диска используемый sql-сервером.
|
|||
6
Momus
03.03.20
✎
17:34
|
(5) т.е. прямой зависимости скорости выполнения запроса от объема занимаемой памяти и диска (если она в избытке) нет? +Судя по той информации, которую я нарыл в сети, явное уничтожение временных таблиц это скорее хорошие манеры, а не необходимость
|
|||
7
D_E_S_131
03.03.20
✎
17:35
|
(4) Да, на рабочем сервере будет в самый раз провести такой эксперимент :)
|
|||
8
Said_We
03.03.20
✎
17:49
|
(6) Не бывает в избытке. Сегодня в избытке, а завтра не хватает. Поэтому если та или иная временная таблица более не используется, то её надо удалять. Что бы потом не сидеть и не оптимизировать, то что можно нарисовать сразу.
|
|||
9
VS-1976
03.03.20
✎
18:10
|
(0) Времянка создаётся в temp_db. Удаление очищает используемое место в базе. Есть шанс что освободившееся нарезанное пространство будет использовано повторно, вместо того что бы база temp_db распухла ( выделение куска диска + нарезка структуры ). Шанс что-то выиграете от этого есть но он ничтожно мал...
|
|||
10
vi0
03.03.20
✎
18:15
|
(0) что значит явное удаление?
|
|||
11
VS-1976
03.03.20
✎
18:17
|
(10) Как то так:
ВЫБРАТЬ "Значение" КАК Поле ПОМЕСТИТЬ тзДанные ; УНИЧТОЖИТЬ тзДанные ; |
|||
12
pechkin
03.03.20
✎
18:17
|
в скорости проигрыш будет точно (в противном случае таблица удабится когда то потом), но выигрыш в освобождении пространства
|
|||
13
vi0
03.03.20
✎
18:17
|
(11) ну может быть он другое имеет ввиду
|
|||
14
Momus
03.03.20
✎
18:18
|
(10) из того, что я прочитал, вт живёт до тех пор, пока жива переменная с результатом запроса. Под явным удалением удалением я подразумеваю использование конструкции "уничтожить" в тексте запроса
|
|||
15
vi0
03.03.20
✎
18:19
|
(14) не совсем - если есть менеджер временных таблиц и он жив, то вт жива и в этом случае
|
|||
16
VS-1976
03.03.20
✎
18:19
|
(14) То только. Есть ещё случай
Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; Тогда таблица будет автоматом уничтожена когда будет уничтожен МенеджерВременныхТаблиц |
|||
17
Надо работать
03.03.20
✎
18:20
|
(8) а потом, во время отладки, будешь сидеть и не понимать куда делись твои ВТ..
|
|||
18
vi0
03.03.20
✎
18:20
|
(15) + поэтому если МВТ жив долгое время, например когда гуляет от функции к функции, то ВТ смысл удалять есть
это как частный случай |
|||
19
VS-1976
03.03.20
✎
18:21
|
(16) Но если падает клиент, а запрос осуществлялся на клиенте ( ОФ ), то таблица может существовать долго :)
|
|||
20
vi0
03.03.20
✎
18:21
|
(16) не так, нужно чтобы переменная была с МВТ
|
|||
21
vi0
03.03.20
✎
18:23
|
(17) если только для отладки то это совсем другой разговор
|
|||
22
Momus
03.03.20
✎
18:23
|
(12) проигрыш в скорости только в том случае, если мне таблица понадобится? Если я уверен, что эта таблица мне более не нужна, то в скорости разницы нет (если с памятью проблем нет)?
(16) да, про менеджер знаю, поэтому сразу уточнил именно про поместить. |
|||
23
vi0
03.03.20
✎
18:24
|
(20) точнее - переменная, если Запрос уже уничтожен
|
|||
24
pechkin
03.03.20
✎
18:25
|
(22) причем здесь понадобится или нет?
если ты запускаешь действие (уничтожить ВТ) - то оно будет выполнять N секунд. вот это и будет проигрыш |
|||
25
vi0
03.03.20
✎
18:25
|
(22) а ты спроси его "если проигрыш будет точно то как это легко проверить?"
ну раз уж "точно" то и проверить легко значит |
|||
26
vi0
03.03.20
✎
18:26
|
(24) ВТ в любом случае будет уничтожаться, если у запроса не инициирован МВТ
|
|||
27
Momus
03.03.20
✎
18:26
|
(24) вот так понятней
|
|||
28
pechkin
03.03.20
✎
18:27
|
(26) оно уничтожится, но уничтожится потом не блокируя ввод
|
|||
29
VS-1976
03.03.20
✎
18:27
|
(20) Ясен хрен пока объект держат он не будет уничтожаться сборщиком мусора и его деструктор не будет вызываться.
При этом этого достаточно: Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; В случае 2: пМенеджер = Новый МенеджерВременныхТаблиц; Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = пМенеджер; Запрос = Неопределено; Менеджер разумеется не грохнется, так как будет в переменной, так как у объекта есть счётчик ссылок. Во втором случае после уничтожения объекта Запрос, произойдёт уменьшение счётчика использования МенеджерВременныхТаблиц. И когда счётчик станет равным 0, вызовется деструктор МенеджерВременныхТаблиц. |
|||
30
pechkin
03.03.20
✎
18:27
|
то бишь асинхронно
|
|||
31
vi0
03.03.20
✎
18:28
|
(28) что такое блокировка ввода? до сих пор говорили только про скорость
|
|||
32
VS-1976
03.03.20
✎
18:31
|
(30) Разные базы, по этому MS SQL будет параллельно делать DML к базе temp_db. Удаление таблицы это тупо пометка в структуре что область свободна. Это не занимает много времени. По этому о каком-то торможении из-за УНИЧТОЖИТЬ говорить не приходится. Если конечно на temp_db не длинная очередь, и то тупо выполнится удаление позже что не критично.
|
|||
33
Momus
03.03.20
✎
18:46
|
(9), (32) вот примерно такого ответа я ожидал. Спасибо
|
|||
34
Надо работать
03.03.20
✎
18:50
|
(33) захламление кода. направьте свою энергию в более полезное для базы дело
|
|||
35
Said_We
03.03.20
✎
21:02
|
(17) "а потом, во время отладки, будешь сидеть и не понимать куда делись твои ВТ.." - это когда это?
В консоле видно когда и что удаляешь. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |