-
Notifications
You must be signed in to change notification settings - Fork 14
Description
Is your feature request related to a problem? Please describe.
Pipelining allows a txn to send all of its INSERTs/UPDATEs/DELETEs "simultaneously" without waiting for responses to each one. This can lead to ~3-6x perf increases, depending on the data/benchmark:
https://joist-orm.io/blog/initial-pipelining-benchmark/
Describe the solution you'd like
A way to have multiple queries issued, and then awaitd via Promise.all, like:
bench("pipeline Promise.all", async () => {
await sql.begin(async (sql) => {
const statements = [];
for (let i = 0; i < numStatements; i++) {
statements.push(sql`INSERT INTO tag (name) VALUES (${`value-${nextTag++}`})`);
}
await Promise.all(statements);
});
});
(This uses the postgres.js syntax, which fwiw I'm not actually a huge fan of/tied to, but it does technically allow submitted multiple statements like this pretty easy.)
Describe alternatives you've considered
No alternatives, other than just not using pipelining.
Additional context
Sub-issues
Metadata
Metadata
Assignees
Labels
No labels