In my last blog, I showed how the execution plan in denali has been enhanced by 2 new warnings ,conversion affecting cardinality and conversion affecting seek, which are shown when a data type conversion has happened either implicitly or explicitly.
That is not all though, there is more
. Also added are two warnings when performance has been affected due to memory issues.
Memory spills to tempdb are a costly operation and happen when SqlServer is under memory pressure and needs to free some up. For a long time you have been able to see these as warnings in a profiler trace as a sort or hash warning event, but now they are included right in the execution plan. Not only that but also you can see which operator caused the spill , not just which statement. Pretty damn handy.
Another cause of performance problems relating to memory are memory grant waits. Here is an informative write up on them, but simply speaking , SQLServer has to allocate a certain amount of memory for each statement. If it is unable to you get a “memory grant wait”. Once again there are other methods of analyzing these, but the plan now shows these too.
Dont’ worry that’s not real production code ![]()
There is one other new warning that is of interest to me, “Unmatched Indexes”. Once I find out the conditions under which that fires ill blog about it.