Liran
Liran

Reputation: 830

What's the maximum I can afford to cache?

I have some design issue, Lets say you have an application that stores data into its cache during runtime, what do you think is the maximum amount of data (in mb) an application should cache before it must use DB.

Thanks.

Upvotes: 0

Views: 163

Answers (2)

Steve Jessop
Steve Jessop

Reputation: 279315

There's a reasonable chance that SQLServer is better at this than you are, and that you should cache approximately nothing.

Like Will says, though, if you're willing to pay in terms of lost data on a crash, you might increase responsiveness by not persisting until later. Anything you can do "for free", in the sense of giving up the guarantees you'd get by writing it to the DB immediately, the DB can in principle do for itself. SQL Server is quite aggressive about using almost all available free memory (and quite polite in reducing its memory usage when other apps need RAM). So any memory you use for caching, you're taking away from SQL Server's caches.

Upvotes: 1

Will Hartung
Will Hartung

Reputation: 118704

How much memory do you have? How much can you afford to lose when the app or system crashes? How long can you afford the start up time to be when you restart and have to reload those caches? Typically, even with caches, you need to write through to the DB any way (or to something) to persist the data.

And if you eventually have "too much data" to fit in to memory, then you're now paging working sets from the DB to memory. You also have the cache synchronization issues if someone changes the DB behind your back.

All sorts of fun issues.

But, if you have the memory, go ahead and use it.

Upvotes: 3

Related Questions