> Did you compare the cluster performance including blocked natives, dropped mutations, 95 percentiles, cluster CPU usage, etc in two scenarios (batch vs single)?
Although 500M per day is not so much for 8 nodes cluster (if the node spec is compliant with datastax recommendations) and async single statements could handle it (just demands high CPU on client machine), the impact of such things (non compliant batch statements annoying the cluster) would show up after some weeks, when suddenly a lot of cluster tasks need to be run simultaneously; one or two big compactions are running on most of the nodes, some hinted hand offs and cluster could not keep up and starts to became slower and slower.
The way to prevent it sooner, would be keep the error counters as low as possible, things like blocked NTPs, dropped, errors, hinted hinted hand-offs, latencies, etc.
I checked the error counters, so far so good, no blocked natives, and no dropped mutations. I use TWCS to avoid big compactions. My node has 4 cores and 8G memory. In fact when I started to use Cassandra, I didn't know the difference between batch and asynchronous writes and my choosing batch write is coming from the experience of using Redis batch to avoid netwark overhead. I got your point and will keep an eye on the error counters stuff. Thank you.