You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Stefania (JIRA)" <ji...@apache.org> on 2015/07/13 11:26:06 UTC

[jira] [Commented] (CASSANDRA-9673) Improve batchlog write path

    [ https://issues.apache.org/jira/browse/CASSANDRA-9673?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14624419#comment-14624419 ] 

Stefania commented on CASSANDRA-9673:
-------------------------------------

[~iamaleksey] can you elaborate a bit more on how to achieve this:

bq. To avoid merely shifting the temp buffer to the receiving side(s) we should change the structure of the batchlog table to use a list or a map of individual mutations.

On the receiver, is there a way to do this without deserializing each mutation only to serialize it again into a blob (byte buffer) or alternatively something like {{list<mutation_type>}} where {{mutation_type}} is

{code}
ksname : string
key : blob
updates : map<uuid, blob>
{code}

Isn't this worse than just leaving all mutations serialized in a unique byte buffer copied directly from the incoming message and inserted in the batchlog table as the data blob?  

We could use the {{BufferPool}} to minimize GC, except we just need to find a way to give the buffers back to the pool eventually.

> Improve batchlog write path
> ---------------------------
>
>                 Key: CASSANDRA-9673
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-9673
>             Project: Cassandra
>          Issue Type: Improvement
>            Reporter: Aleksey Yeschenko
>            Assignee: Stefania
>             Fix For: 3.0.0 rc1
>
>
> Currently we allocate an on-heap {{ByteBuffer}} to serialize the batched mutations into, before sending it to a distant node, generating unnecessary garbage (potentially a lot of it).
> With materialized views using the batchlog, it would be nice to optimise the write path:
> - introduce a new verb ({{Batch}})
> - introduce a new message ({{BatchMessage}}) that would encapsulate the mutations, expiration, and creation time (similar to {{HintMessage}} in CASSANDRA-6230)
> - have MS serialize it directly instead of relying on an intermediate buffer
> To avoid merely shifting the temp buffer to the receiving side(s) we should change the structure of the batchlog table to use a list or a map of individual mutations.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)