Cell Security and the Formula Engine Cache
I've been looking at a security implementation this week for a customer and investigating what impact it's having on their cube's performance. A number of interesting points have come up which are all worthy of a blog entry, but I thought I'd start with what I noticed about cell security. I'd heard from Mosha that cell security was just about the worst feature to use on a cube from a performance point of view because it stops the AS engine from knowing whether a cell is empty or not - and I can see this on my customer's cube because cold cache queries take a lot longer to run for users who have cell security compared to users who don't. But I also found another bad side-effect: it seems to stop the AS engine caching the results of calculations.
Here's the steps I took to repro this in Adventure Works (I used the Simple version but I'm sure it works just the same on the full version):