Повторный синтаксис вставки для эффективности в векторе - есть примеры?
Мне нужно ускорить вставки в базу данных I ngress VectorWise, и документация показывает это:
http://docs.actian.com/ingres-vectorwise/2.5/sql-language-guide/5315-insert
The INSERT statement inserts rows into a table.
This statement has the following format:
[REPEATED]]INSERT INTO [schema.]table_name
[(column {, column})]
[OVERRIDING SYSTEM VALUE | OVERRIDING USER VALUE]
[VALUES (expr{, expr}) {,(expr{ ,expr})} |
[WITH common_table_expression] subselect];
и говорит:
REPEATED: Сохраняет план выполнения вставки, что может ускорить последующее выполнение.
Я не могу на всю жизнь получить запрос, используя "REPEATED" для успешного выполнения, и я не могу найти никаких примеров в Интернете, используя для этого прямой SQL. У кого-нибудь есть предложения о том, как заставить это работать синтаксически?
2 ответа
@w00te: игнорировать ПОВТОР. Я бы предпочел сделать что-то более "радикальное", если важна производительность с несколькими вставками. - Я бы создал временную таблицу HEAP (они являются самым быстрым типом хранилища, когда дело доходит до вставки), и как только я закончил вставлять связку (может быть МИЛЛИОНОВ) строк, я просто либо ИЗМЕНИЛ таблицу для VECTORWISE, либо ВЫБИРАЛ из нее vectorwise
Таблица. Если вы просто выберите, то, возможно, таблица не должна быть временной, это может быть обычная таблица, в которой вы временно храните данные. Зависит от варианта использования.
Вставляя в вышеупомянутую таблицу HEAP, используйте пакетную обработку, если это возможно (Ingres JDBC >= 4.0.1), это может значительно повысить скорость вставки миллионов строк (я знаю это точно - я провел несколько тестов).
РЕДАКТИРОВАТЬ: Очевидно, это не будет работать с VectorWise. Наилучшим подходом является прямая вставка в таблицу VectorWise, предпочтительно не проиндексированную. Используйте подготовленный оператор JDBC и пакетное выполнение, и все будет в порядке. Предложение Гранта использовать CACHE_DYNAMIC также должно быть рассмотрено.
Я не уверен, поддерживает ли это Vectorwise, Ingres, но вы можете посмотреть на использование CACHE_DYNAMIC
, См. http://docs.actian.com/ingres/10s/upgrade-guide/2038-cached-dynamic-cursor-query-plans для получения дополнительной информации.