0
https://www.youtube.com/watch?list=PLoGAcXKPcRvanix7u9eqg_qt1tp849rX3&v=p-6ii2NiUI0
MSDN上面有这么一段关于plan cache的文章。大致就是说
Posted on
Tuesday, December 29, 2015
by
醉·醉·鱼
and labeled under
sql
引用: https://technet.microsoft.com/en-us/library/ms181055(v=sql.105).aspxhttps://www.youtube.com/watch?list=PLoGAcXKPcRvanix7u9eqg_qt1tp849rX3&v=p-6ii2NiUI0
MSDN上面有这么一段关于plan cache的文章。大致就是说
- 当没有cached query plan 的时候,执行query就会创建一个query plan并被cache起来。
- 下面这些操作可以导致cached plan被清掉
- SERVER RESTART/DATABASE LEVEL CHANGES/CONFIGURATION CHANGES
- DBCC FREEPROCCACHE/DBCC FREESYSTEMCACHE/SP_RECOMPILE
- DROP & RECREATE SP
- Object changes,包括view,table,statistics
- 长时间没用
MSDN提到,SQL SERVER采用了基于COST的机制去清理query plan。如果当前没有内存压力,SQL SERVER 不会去清query plan。如果有内存压力,SQL SERVER回去验证每个query plan,并且降低他们的currect cost,直至0。一旦当它变成0并且内存压力来的时候,每次验证的同时就会清掉这个plan。如果在这之前这个query plan被用掉,那current cost又会被reset成最原来的cost,即不会被清掉。
Post a Comment