Alex, I am making a guess. I would be better able to support this guess with data from leveldb LOG files of one server.
The performance difference between the sequential keys and the reverse of the sequential keys is informative. The reverse ordered keys essentially become more like "random keys" within the leveldb key space. Overtime, they disperse to different .sst table files scattering the "focal point" of the read-before-write operations. The sequential keys are keeping all newly written data within the same .sst table file, i.e. the same "focal point". And there is a new tuning called "timed grooming" in the Riak 2.1.3 and 2.1.4 releases that has a bug. The bug can cause more frequent compaction cycles than intended for 2.1.3 and 2.1.4 under some work loads. Your particular sequential keys might be such a load. This is what the LOG files would indicate. The biggest impact of more frequent compaction cycles is that the Linux page cache and leveldb block caches get invalidated more often causing longer read cycles to determine "nothing is there" in the read-before-write operation of Riak. Your higher ring size is likely not helping, but there is math that can prove or disprove this assumption. And again, the base numbers are within the LOG files. We do have an eleveldb patch release available. You would have to manual install it on each of the nodes. The patch disables the timed grooming and contains some critical bug fixes that lead to the Riak 2.1.4 release. You would need to tell me which operating system package you originally download for Riak, then I can send an appropriate link. Matthew > On May 5, 2016, at 10:11 AM, alexc155 <[email protected]> wrote: > > Hi, > > Thanks for your reply. > > I don't think that write_once is going to work for us as we have to > periodically update the data (although if we remove the data before > re-inserting it, would that work?) > > Why does read-before-write slow down new writes so much? > > Some new information we've found - it seems that if we write the data and > then update it, we get fast speeds too. It's just the initial write of the > data that is slow. > > So why is writing sequential keys so much slower than updating them or > writing non-sequential keys? > > > > -- > View this message in context: > http://riak-users.197444.n3.nabble.com/How-to-increase-Riak-write-performance-for-sequential-alpha-numeric-keys-tp4034219p4034225.html > Sent from the Riak Users mailing list archive at Nabble.com. > > _______________________________________________ > riak-users mailing list > [email protected] > http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com _______________________________________________ riak-users mailing list [email protected] http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
