Hi all,
I'm comparing performance between Cassandra 2.2.10 and 3.0.15.
SELECT of 3.0.15 is faster than 2.2.10.
However, conditional INSERT and UPDATE of 3.0.15 are slower than 2.2.10.
Is it expected? If so, I want know why.
I'm trying to measure performance for non-conditional operation next.
Environment:
- 3 nodes in a single cluster
- AWS EC2 i3.large (2 cores, 30GB memory, NVMe SSD)
- Cassandra commitlog and data are stored in NVMe SSD
Configuration:
- Replication factor: 3
- commitlog_sync: batch
- conccurent_reads: 512
- concurrent_writes: 512
Request:
- SELECT "id", "val" from testdb.testtbl WHERE "id" = id with CL.SERIAL
- INSERT INTO testdb.testtbl ("id", "val") VALUES (id, val) IF NOT EXIST
- UPDATE testdb.testtbl SET "val" = val WHERE "id" = id IF EXISTS
- Client program requests these operations via Java driver
Result:
- INSERT throughput [operations per sec]
| Concurrency | 2.2.10 [op/s] |3.0.15 [op/s] |
| 1 | 303 | 263 |
| 2 | 526 | 454 |
| 4 | 784 | 666 |
| 8 | 1066 | 888 |
| 16 | 1391 | 1194 |
| 32 | 1649 | 1428 |
| 64 |1802 | 1553 |
- UPDATE throughput
| Concurrency | 2.2.10 [op/s] | 3.0.15 [op/s] |
| 1 | 322 | 277 |
| 2 | 606 | 512 |
| 4 | 1000 | 727 |
| 8 | 1250 | 1012 |
| 16| 1495|1280 |
| 32| 2147|1739 |
| 64| 3248|2949 |
- SELECT throughput
| Concurrency | 2.2.10 [op/s] | 3.0.15 [op/s] |
| 1 | 454 | 476 |
| 2 | 869 | 909 |
| 4 | 1333 | 1333 |
| 8 | 1818 | 1777 |
| 16 | 2424 | 2539 |
| 32 | 2990 | 3018 |
| 64 | 3422 | 3699 |
Thanks,
Yuji