Повторный синтаксис вставки для эффективности в векторе - есть примеры?

Мне нужно ускорить вставки в базу данных 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 для получения дополнительной информации.

Другие вопросы по тегам