Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
 17. Используйте глобальные временные таблицы для быстрой вставки  [new]
Квази
Member

Откуда:
Сообщений: 455
автор
Для ускорения вставки и обновления используйте временные таблицы (Global Temporary Table – GTT) для массовых вставок и последующего переноса данных в обычные таблицы.


а за счет чего достигается ускорение?
9 апр 19, 08:34    [21856694]     Ответить | Цитировать Сообщить модератору
 Re: 17. Используйте глобальные временные таблицы для быстрой вставки  [new]
Ivan_Pisarevsky
Member

Откуда: НН
Сообщений: 8319
При достаточном кол-ве ОЗУ данные не материализуются на диск. Как только данные доступны из SQL запросов внутри базы развязаны руки применить тот же мерж, например.
9 апр 19, 09:07    [21856713]     Ответить | Цитировать Сообщить модератору
 Re: 17. Используйте глобальные временные таблицы для быстрой вставки  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9634
Квази,

автором данного совета являюсь я, поэтому поясню.

Если сравнивать простой случай, когда идёт массовый INSERT в одну табличку, то использование GTT не даёт никакого преимущества. Однако если ваш импорт более сложный, когда необходимо вставка или обновление или даже удаление в целевой базе, или же надо распихать записи по нескольким таблицам, или надо искать что-то в других таблицах БД в процессе импорта, то проще сначала слить данные в GTT, а потом делать сложные выборки, многократно пробегать курсором, использовать MERGE, обрабатывать ошибки и использовать другие вкусности.
9 апр 19, 09:26    [21856725]     Ответить | Цитировать Сообщить модератору
 Re: 17. Используйте глобальные временные таблицы для быстрой вставки  [new]
Квази
Member

Откуда:
Сообщений: 455
Симонов Денис
Квази,

автором данного совета являюсь я, поэтому поясню.


Понятно, спасибо.
9 апр 19, 11:21    [21856880]     Ответить | Цитировать Сообщить модератору
 Re: 17. Используйте глобальные временные таблицы для быстрой вставки  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28015
Квази,

gtt все же дает преимущества даже при массовой вставке данных.

Дело в том, что версионность для задач типа "проливки" данных через сервер не очень подходит. Допустим, вставили 1млн записей, обработали, и теперь их надо удалять. При удалении возникнет миллион версий с признаком удаления, а потом, когда исходные записи станут мусором, его придется вычищать.

В GTT тоже может быть мусор, но по окончании работы с ГТТ они просто удаляются как файл, соответственно, никаких побочных эффектов в виде сборки мусора и лишнего места в БД не возникает.

Достаточно сравнить эту реализацию с реализацией GTT в InterBase - там ГТТ в базе.
http://www.ibase.ru/ib75temptables/
Как результат - либо тормоза (на сборку мусора) при первом коннекте, либо при дисконнекте. Плюс пухнет база из-за временных данных. Понятно, что потом-то это место освободится, но...

p.s. последние версии IB не проверял - остались ГТТ в базе, или они их вынесли в темп. файлы как в ФБ.
9 апр 19, 12:13    [21856954]     Ответить | Цитировать Сообщить модератору
 Re: 17. Используйте глобальные временные таблицы для быстрой вставки  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 47677

kdv
по окончании работы с ГТТ они просто удаляются как файл

Не удаляются. Не так давно был топик, вылившийся в CORE-6043.

Posted via ActualForum NNTP Server 1.5

9 апр 19, 12:22    [21856968]     Ответить | Цитировать Сообщить модератору
 Re: 17. Используйте глобальные временные таблицы для быстрой вставки  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9634
Dimitry Sibiryakov,

там речь о COMMIT RETAIN
9 апр 19, 12:36    [21856986]     Ответить | Цитировать Сообщить модератору
 Re: 17. Используйте глобальные временные таблицы для быстрой вставки  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 47677

Симонов Денис
там речь о COMMIT RETAIN

Это в тикете, а в топике Влад объяснял, что один файл используется под все временные
таблицы и там мусор накапливается и собирается как обычно.

Posted via ActualForum NNTP Server 1.5

9 апр 19, 12:45    [21856997]     Ответить | Цитировать Сообщить модератору
 Re: 17. Используйте глобальные временные таблицы для быстрой вставки  [new]
hvlad
Member

Откуда:
Сообщений: 10405
Dimitry Sibiryakov
Не удаляются
Опять пальцем в небо
9 апр 19, 12:46    [21856998]     Ответить | Цитировать Сообщить модератору
 Re: 17. Используйте глобальные временные таблицы для быстрой вставки  [new]
hvlad
Member

Откуда:
Сообщений: 10405
Dimitry Sibiryakov
Это в тикете, а в топике Влад объяснял, что один файл используется под все временные
таблицы и там мусор накапливается и собирается как обычно.
И это тоже половина правды.
9 апр 19, 12:46    [21857001]     Ответить | Цитировать Сообщить модератору
 Re: 17. Используйте глобальные временные таблицы для быстрой вставки  [new]
hvlad
Member

Откуда:
Сообщений: 10405
Dimitry Sibiryakov,

я не могу понять - ты намеренно врёшь или страдаешь от неудачных попыток кратко выражаться ?
Лучше вообще не выражаться в таком случае...
9 апр 19, 12:48    [21857003]     Ответить | Цитировать Сообщить модератору
 Re: 17. Используйте глобальные временные таблицы для быстрой вставки  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 47677

hvlad
я не могу понять - ты намеренно врёшь или страдаешь от неудачных попыток кратко выражаться ?

Скорее я страдаю от твоих попыток кратко выражаться. Я же не обкуренная пифия чтобы
интерпретировать твои оракулообразыне туманные намёки.

Posted via ActualForum NNTP Server 1.5

9 апр 19, 13:29    [21857075]     Ответить | Цитировать Сообщить модератору
 Re: 17. Используйте глобальные временные таблицы для быстрой вставки  [new]
hvlad
Member

Откуда:
Сообщений: 10405
Dimitry Sibiryakov,

тогда рекомендую либо спрашивать, что неясно, либо лучше уж жевать
9 апр 19, 13:30    [21857076]     Ответить | Цитировать Сообщить модератору
 Re: 17. Используйте глобальные временные таблицы для быстрой вставки  [new]
hvlad
Member

Откуда:
Сообщений: 10405
Dimitry Sibiryakov
Я же не обкуренная пифия
Ты уверен ?Картинка с другого сайта.
9 апр 19, 13:30    [21857080]     Ответить | Цитировать Сообщить модератору
 Re: 17. Используйте глобальные временные таблицы для быстрой вставки  [new]
WildSery
Member

Откуда: да, оттуда.
Сообщений: 15875
hvlad,

он больше не может (ц)
9 апр 19, 13:54    [21857129]     Ответить | Цитировать Сообщить модератору
Все форумы / Firebird, InterBase Ответить