Excellent article. The best part was the demo. I think in 2012 the actual execution plan it self shows tempDB spills with a warning sign on the SELECT operator.
I have one question about the statement "Memory grants can take up to 75% of the buffer pool".
Q1: Is it the max memory for all Mem Grants that can be allocated to all currently running queries at a point in time?
Q2: You said memory grants are allocated from buffer pool. I thought buffer pool sole purpose was to cache data pages. So in case high memory grants there might be lot of disk flushing of cached data pages happen?
Memory is one of the most confusing things for me to understand. I will be grateful if you could answer the above questions?