Dmitry Konstantinov created CASSANDRA-21354:
-----------------------------------------------
Summary: Avoid serialization and deserialization for coordnator
local single partition data read
Key: CASSANDRA-21354
URL: https://issues.apache.org/jira/browse/CASSANDRA-21354
Project: Apache Cassandra
Issue Type: Improvement
Components: Local/Other
Reporter: Dmitry Konstantinov
Assignee: Dmitry Konstantinov
Attachments: image-2026-05-07-10-10-16-886.png, may3_max_alloc.html
Currently when we execute a local read we fetch data from SSTables and
Memtables using a merging iterator and write it to a byte buffer. Later when we
combine a CQL response we deserialize the data back to iterate over them as a
part of coordinator logic. So, we allocate rows and cells twice here, during
the read from SSTables/Memtables and during the deserialization by coordinator
logic if we read data locally (it is a typical scenario because usually drivers
are sending requests to replicas).
The idea of optimization: if we do a single partition read of a small number of
rows we can keep the data in memory and avoid this double row objects
allocation.
We should limit amount of such data kept in memory to avoid too much pressure
on GC due to extended lifetime for these objects and promoting them to an old
generation.
So, a system property can be used to limit number of rows we keep in memory in
this scenario, as well as to disable the logic in case of any issues.
!image-2026-05-07-10-10-16-886.png|width=800!
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]