# Will memcache bring any benefits with a small DB set?

**URL:** <https://www.ruby-forum.com/t/will-memcache-bring-any-benefits-with-a-small-db-set/183902>\
**Category:** Rails\
**Created:** [February 22, 2010, 2:57pm UTC](https://www.ruby-forum.com/t/will-memcache-bring-any-benefits-with-a-small-db-set/183902 "2010-02-22T14:57:05Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![comopasta](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/59ef9b/32.png) [@comopasta](https://www.ruby-forum.com/u/comopasta)\
**Post date:** [February 22, 2010, 2:57pm UTC](https://www.ruby-forum.com/t/will-memcache-bring-any-benefits-with-a-small-db-set/183902/1 "2010-02-22T14:57:05Z")

</div>

Hi,

I have a DB that stores strings of XML. There could be hundreds of  
those, thousands at most.

Based on client requests, a binary file is generated, most of the  
content in the binary file is XML taken from the DB. So there is plenty  
of parsing to do and several searches to collect the right pieces of XML  
that I need.

I need persistence so I still need the DB and ActiveRecord. But I  
thought that if I could copy the DB into memory to speed up.

This sounds like I could start playing with memcache.  
But somewhere I read that memcache will only be faster when dealing with  
millions of records. I won’t have millions of records so will this  
really bring me any benefits? The load from clients is expected to be  
heavy though.

I’d appreciate your opinions.  
I will be playing with memcache in the meanwhile as well.

Cheers.

---

<div class="post-metadata">

**Author:** ![comopasta](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/59ef9b/32.png) [@comopasta](https://www.ruby-forum.com/u/comopasta)\
**Post date:** [February 22, 2010, 3:30pm UTC](https://www.ruby-forum.com/t/will-memcache-bring-any-benefits-with-a-small-db-set/183902/2 "2010-02-22T15:30:42Z")

</div>

On Feb 22, 1:57 pm, comopasta Gr [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> This sounds like I could start playing with memcache.  
> But somewhere I read that memcache will only be faster when dealing with  
> millions of records. I won’t have millions of records so will this  
> really bring me any benefits? The load from clients is expected to be  
> heavy though.
> 
> I’d appreciate your opinions.  
> I will be playing with memcache in the meanwhile as well.

It’s hard to talk in generalities about this sort of stuff as there  
are so many factors that come into play. Your best bet is to benchmark  
some stuff, also taking into account the pattern of traffic you expect  
(ie what proportion of cache hits do you expect?) Even in the case  
where memcache doesn’t make things faster (or even makes things  
slower) it may still help at high volume if it takes some load off  
your database.

Fred

---

<div class="post-metadata">

**Author:** ![comopasta](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/59ef9b/32.png) [@comopasta](https://www.ruby-forum.com/u/comopasta)\
**Post date:** [February 22, 2010, 3:50pm UTC](https://www.ruby-forum.com/t/will-memcache-bring-any-benefits-with-a-small-db-set/183902/3 "2010-02-22T15:50:36Z")

</div>

Have you had a look at your logs to see how often a particular page gets  
called. This will give you an idea as to how many entries you might end  
up  
with in the cache, if they are not being called repeatedly then the  
improvement will be slight. Or if the data changes often the the cache  
will  
become out of date too often.

Also how big are these chunks of data? Again this is the sort of thing  
you  
will need to know when sizing the cache. If the data is really large  
then  
the cache may expire them before you get to reuse them.

That aside parsing and combining xml documents is not the fastest thing  
on  
earth so if you can cache final format of the data and reuse it then you  
should get a good speedup.

You need to measure things.

---

<div class="post-metadata">

**Author:** ![comopasta](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/59ef9b/32.png) [@comopasta](https://www.ruby-forum.com/u/comopasta)\
**Post date:** [February 22, 2010, 10:04pm UTC](https://www.ruby-forum.com/t/will-memcache-bring-any-benefits-with-a-small-db-set/183902/4 "2010-02-22T22:04:59Z")

</div>

Hi,

Yeah I’m on my way to start playing with memcache after checking some  
sites. Then I’ll make some tests and see to which side it affects  
performance.

This app won’t be serving pages but providing binary data based on the  
stored records, no html, js and all the typical web app stuff. I have no  
patterns of terminal behavior so I can only guess at this point (of  
course I know the types of requests that clients will make). On the  
other hand there’s other areas where I need to improve performance, for  
example I’m thinking of have some real C code for the binary file  
generation, which I make now with the bindata gem.

The nice thing about cache is that I can use it whenever I feel is good  
since it seems so easy to use, so I can revert changes or move the  
feature around to play with it.

I also slowly started playing with load testing using apachebench so I  
can stress the server a bit.

Thanks for your comments!

Regards.
