Details
-
Improvement
-
Status: Resolved
-
Normal
-
Resolution: Fixed
-
None
-
Performance
-
Normal
-
All
-
None
-
Description
This patch utilises CASSANDRA-15510 to improve throughput and reduce garbage produced by a number of common operations, by employing transformAndFilter, transform and FastBuilder
- Row, Cell and ComplexColumnData cloning are implemented with BTree.transform, so no special builders are necessary;
- Rows.copy removed
- Rows.merge implemented using BTree.update and a ColumnData reconciler
- Zero-allocations if result of merge is same as existing
- Fewer comparisons
- ColumnData reconciler implemented in same manner
- Cells.reconcileComplex is retired
- ComplexColumnData reconciliation now
- Garbage-free if the merge has no effect
- Always fewer allocations
- Fewer comparisons
- FastBuilder employed widely:
- ClusteringIndexNamesFilter deserialization
- Columns deserialization
- PartitionUpdate deserialization
- AbstractBTreePartition construction
- Misc others
The upshot of this work when combined with the proposed patch for CASSANDRA-15367 has a dramatic impact on operations over collection types - under contention, as much as 100x improved throughput, and hundreds of megabytes of reduced allocations. For all operations, allocations under contention and no contention are significantly reduced and throughput improved.
Attachments
Attachments
Issue Links
- fixes
-
CASSANDRA-15464 Inserts to set<text> slow due to AtomicBTreePartition for ComplexColumnData.dataSize
- Open
- is duplicated by
-
CASSANDRA-17163 High CAS failures in MemtablePool.SubPool.tryAllocate
- Resolved