On Tue, Jun 15, 2010 at 4:44 PM, Charles Butterfield <charles.butterfi...@nextcentury.com> wrote: > To clarify the history here -- initially we were writing with CL=0 and had > great performance but ended up killing the server. It was pointed out that > we were really asking the server to accept and acknowledge an unbounded > number of requests without waiting for any final disposition of the rows. > So we had a "doh!" moment. That is why we went to the other extreme of > CL=ALL, to let the server fully dispose of each request before acknowledging > it and getting the next. >
CL.ALL (and CL.QUORUM) go through the strongly consistent write path, while CL.ONE (and CL.ANY) go through the weakly consistent write path. Using CL.ALL you aren't _letting_ the server full dispose of each request, you are _requiring_ it to hold on to resources until _all_ replicas confirm the write. With CL.ONE, the writes are asynchronous, with only a single success required before results are returned to the client, consuming fewer server resources. CL.ONE is what I recommend you use unless you have specific needs to the contrary. Unfortunately, the best documentation for this is the code, though it is mentioned briefly here: http://wiki.apache.org/cassandra/ArchitectureOverview b