1

Ingress 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を直接使用してオンラインで例を見つけることもできません。これを構文的に機能させる方法について何か提案はありますか?

4

2 に答える 2

1

@w00te : Ignore REPEATED. I would rather do something more "radical" if the multi-insertion performance is essential. - I would create a temporary HEAP table (they are the fastest storage type when it comes to insertion) and once I am done inserting bunch (can be MILLIONS) of rows, then I just either MODIFY the table to VECTORWISE or SELECT from it into a vectorwise table. If you just select, then perhaps the table does not have to be temporary, it can be a normal table where you temporarily store data. Depends on the use-case.

While inserting into the abovementioned HEAP table, use batch processing if possible (Ingres JDBC >= 4.0.1), it can significantly boost the speed of inserting millions of rows (I know it for a fact - I did few tests).

EDIT: Apparently, this will not work with VectorWise. The best approach is to insert straight to a VectorWise table, preferably non-indexed. Use JDBC prepared statement, and batch execution, and you will be fine. Grant's proposal to use CACHE_DYNAMIC should also be considered.

于 2012-08-13T07:51:02.520 に答える
1

Vectorwise がサポートしているかどうかはわかりませんが、Ingres はサポートしていますが、CACHE_DYNAMIC. 詳細については、 http://docs.actian.com/ingres/10s/upgrade-guide/2038-cached-dynamic-cursor-query-plansを参照してください。

于 2012-08-09T07:51:34.473 に答える