Batch statements
Use BatchStatement
to execute a set of queries as an atomic operation (refer to Batching inserts, updates and deletes to understand how to use batching effectively):
PreparedStatement preparedInsertExpense =
session.Prepare(
"INSERT INTO cyclist_expenses (cyclist_name, expense_id, amount, description, paid) "
+ "VALUES (:name, :id, :amount, :description, :paid)");
SimpleStatement simpleInsertBalance =
new SimpleStatement(
"INSERT INTO cyclist_expenses (cyclist_name, balance) VALUES (?, ?) IF NOT EXISTS",
"Vera ADRIAN", 0);
BatchStatement batch =
new BatchStatement()
.SetBatchType(BatchType.Logged)
.Add(simpleInsertBalance)
.Add(preparedInsertExpense.bind("Vera ADRIAN", 1, 7.95f, "Breakfast", false));
session.Execute(batch);
As shown in the examples above, batches can contain any combination of simple statements and bound statements.
A given batch can contain at most 65536 statements. Past this limit, addition methods throw an ArgumentOutOfRangeException
.
Note that Cassandra batches are not suitable for bulk loading, there are dedicated tools for that (like the DataStax Bulk Loader). Batches allow you to group related updates in a single request, so keep the batch size small (in the order of tens).
In addition, simple statements with named parameters are currently not supported in batches (this is due to a protocol limitation that will be fixed in a future version).