Rowcache is typically turned off because it is only useful in very specific situations-the row(s) need to fit in memory. Also, the access patterns have to fit.
If all the rows you're accessing can fit, Rowcache is a great thing. Otherwise, not so great. -- Colin 320-221-9531 > On Jul 1, 2014, at 10:40 PM, Kevin Burton <bur...@spinn3r.com> wrote: > > WOW.. so based on your advice, and a test, I disabled the row cache for the > table. > > The query was instantly 20x faster. > > so this is definitely an anti-pattern.. I suspect cassandra just tries to > read in they entire physical row into memory and since my physical row is > rather big.. ha. Well that wasn't very fun :) > > BIG win though ;) > > >> On Tue, Jul 1, 2014 at 6:52 PM, Kevin Burton <bur...@spinn3r.com> wrote: >> A work around for this, is the VFS page cache.. basically, disabling >> compression, and then allowing the VFS page cache to keep your data in >> memory. >> >> The only downside is the per column overhead. But if you can store >> everything in a 'blob' which is optionally compressed, you're generally >> going to be ok. >> >> Kevin >> >> >>> On Tue, Jul 1, 2014 at 6:50 PM, Kevin Burton <bur...@spinn3r.com> wrote: >>> so.. caching the *queries* ? >>> >>> it seems like a better mechanism would be to cache the actually logical >>> row…, not the physical row. >>> >>> Query caches just don't work in production, If you re-word your query, or >>> structure it a different way, you get a miss… >>> >>> In my experience.. query caches have a 0% hit rate. >>> >>> >>>> On Tue, Jul 1, 2014 at 6:40 PM, Robert Coli <rc...@eventbrite.com> wrote: >>>>> On Tue, Jul 1, 2014 at 6:06 PM, Kevin Burton <bur...@spinn3r.com> wrote: >>>>> you know.. one thing I failed to mention.. .is that this is going into a >>>>> "bucket" and while it's a logical row, the physical row is like 500MB … >>>>> according to compaction logs. >>>>> >>>>> is the ENTIRE physical row going into the cache as one unit? That's >>>>> definitely going to be a problem in this model. 500MB is a big atomic >>>>> unit. >>>> >>>> Yes, the row cache is a row cache. It caches what the storage engine calls >>>> rows, which CQL calls "partitions." [1] Rows have to be assembled from all >>>> of their row fragments in Memtables/SSTables. >>>> >>>> This is a big part of why the "off-heap" row cache's behavior of >>>> invalidation on write is so bad for its overall performance. Updating a >>>> single column in your 500MB row invalidates it and forces you to assemble >>>> the entire 500MB row from disk. >>>> >>>> The only valid use case for the current off-heap row cache seems to be : >>>> very small, very uniform in size, very hot, and very rarely modified. >>>> >>>> https://issues.apache.org/jira/browse/CASSANDRA-5357 >>>> >>>> Is the ticket for replacing the row cache and its unexpected >>>> characteristics with something more like an actual query cache. >>>> >>>>> also.. I assume it's having to do a binary search within the physical row >>>>> ? >>>> >>>> Since the column level bloom filter's removal in 1.2, the only way it can >>>> get to specific columns is via the index. >>>> >>>> =Rob >>>> [1] https://issues.apache.org/jira/browse/CASSANDRA-6632 >>> >>> >>> >>> -- >>> Founder/CEO Spinn3r.com >>> Location: San Francisco, CA >>> blog: http://burtonator.wordpress.com >>> … or check out my Google+ profile >>> >> >> >> >> -- >> Founder/CEO Spinn3r.com >> Location: San Francisco, CA >> blog: http://burtonator.wordpress.com >> … or check out my Google+ profile >> > > > > -- > Founder/CEO Spinn3r.com > Location: San Francisco, CA > blog: http://burtonator.wordpress.com > … or check out my Google+ profile >