Mike,
FWIW, I did some testing on one of our apps some years ago to try to reduce desmgr spinning. This application uses temp tables exceptionally heavily with the driving tables created outside the proc chain and many further scratch ones created from within the various proc contexts.
As you can see from the below, the averages over 10 tests involving binding procs and regular tables made little difference as the activity due to these objects pales into insignificance when weighed up against how much work it's doing (presumably) as a result of the temp table activity. You can't bind temp tables and as far as I know there's no other way to reduce the desmgr overhead you get hit with (without an app redesign of course).
Test | desmgr_grabs | desmgr_waits | grabs+waits | desmgr_spins | spins_per_wait | cont (waits/grab) | Av CPU | Threads | |
No binding | 19,753,032 | 2,066,866 | 21,819,898 | 91,740,893 | 44.38647353 | 10.46353795 | 97.39 | 40 | |
Top 16 tables | 18,943,215 | 2,218,048 | 21,161,263 | 199,083,031 | 89.75596155 | 11.70893114 | 88.43 | 40 | |
Top 16 tables + all procs | 17,103,850 | 1,877,092 | 18,980,942 | 241,373,273 | 128.5889413 | 10.97467529 | 94.07 | 40 | |
All tables | 18,217,554 | 2,082,877 | 20,300,431 | 241,193,992 | 115.7984807 | 11.43335159 | 92.5 | 40 | |
All tables + all procs | 17,039,693 | 1,403,136 | 18,442,829 | 106,872,841 | 76.1671292 | 8.234514554 | 93.68 | 40 |
Cheers,
Simon