running vertica 7.0.1 on a single linux server.
from 1-5 client applications use ODBC to execute a prepared statement which loads a batch of around 20,000 - 100,000 records (22 columns, ~100 bytes/rec) each minute using the standard odbc bind() - where each column gets a values vector and an indicator vector filled - and then sqlexecute(). This is currently implemented and works without issue.
what I'm wondering is:
1) can data be loaded in this use case by instead using COPY... FROM (using sqlexecutedirect) where loading is not from a file or named pipe, but from a buffer in memory (~10MB for 100K records)
2) would it be faster than the odbc prepared statements?
As an aside: Does the ODBC driver convert the prepared statement column value vectors into a COPY... FROM STDIN internally? I seem to remember seeing this assertion in a blog somewhere. If yes, is there a way to tune the batch size? eg, on the command line i can write a bunch of successive COPY... FROM... NO COMMIT and then finally COMMIT which is presumably a lot faster than committing per row.
Sign up
Already have an account? Login
Welcome to the Rocket Forum!
Please log in or register:
Employee Login | Registration Member Login | RegistrationEnter your E-mail address. We'll send you an e-mail with instructions to reset your password.