On Tue, Aug 26, 2014 at 6:50 PM, Jaydeep Chovatia < [email protected]> wrote:
> Hi, > > I have question on inserting multiple cluster keys under same partition > key. > > Ex: > > CREATE TABLE Employee ( > deptId int, > empId int, > name varchar, > address varchar, > salary int, > PRIMARY KEY(deptId, empId) > ); > > BEGIN *UNLOGGED *BATCH > INSERT INTO Employee (deptId, empId, name, address, salary) VALUES (1, > 10, 'testNameA', 'testAddressA', 20000); > INSERT INTO Employee (deptId, empId, name, address, salary) VALUES (1, > 20, 'testNameB', 'testAddressB', 30000); > APPLY BATCH; > > Here we are inserting two cluster keys (10 and 20) under same partition > key (1). > Q1) Is this batch transaction atomic and isolated? If yes then is there > any performance overhead with this syntax? > As long as the update are under the same partition key (and I insist, only in that condition), logged (the one without the UNLOGGED keyword) and unlogged batches behave *exactly* the same way. So yes, in that case the batch is atomic and isolated (though on the isolation, you may want to be aware that while technically isolated, the usual timestamp rules still apply and so you might not get the behavior you think if 2 batches have the same timestamp: see CASSANDRA-6123 <https://issues.apache.org/jira/browse/CASSANDRA-6123>). There is no also no performance overhead (assuming you meant "over logged batches"). Q2) Is this CQL syntax can be considered equivalent of Thrift > "batch_mutate"? > It is equivalent, both (the CQL syntax and Thrift "batch_mutate") resolve to the same operation internally. -- Sylvain
