时间:2021-07-01 10:21:17 帮助过:26人阅读
SQL Server 数据库引擎会事先在后台清理未使用的缓存条目,以使内存可用于当前条目。
但是,可以使用此命令从每个缓存中或者从指定的 Resource Governor 池缓存中手动删除未使用的条目。
运行 DBCC FREESYSTEMCACHE 可清除 SQL Server 实例的计划缓存。 清除计划缓存将导致对所有即将到来的执行计划进行重新编译,并可能导致查询性能暂时性地突然降低。
对于计划缓存中的每个已清除缓存存储,SQL Server 错误日志都包含以下信息性消息:“SQL Server 刷新了 %d 次(计划缓存中的)‘%s‘ 缓存存储,因为有 ‘DBCC FREEPROCCACHE‘ 或 ‘DBCC FREESYSTEMCACHE‘ 操作。
” 每隔五分钟,只要缓存在这段时间间隔内得到刷新,此消息就记录一次。
有一个疑问
比如有个执行计划缓存,使用频率不是特别高,比如半分钟运行一次。。
执行 DBCC FREESYSTEMCACHE的时候,这个执行计划缓存没在使用,那是不是也清掉了? (暂时还未得可知)(2) dbcc freesystemcache(‘all‘) 应急解决tempdb无法收缩
使用如下代码,收缩成功。
- <span style="color: #0000ff;">USE</span> <span style="color: #ff0000;">[</span><span style="color: #ff0000;">tempdb</span><span style="color: #ff0000;">]</span>
- <span style="color: #0000ff;">GO</span>
- <span style="color: #0000ff;">DBCC</span> FREESYSTEMCACHE (<span style="color: #ff0000;">‘</span><span style="color: #ff0000;">ALL</span><span style="color: #ff0000;">‘</span><span style="color: #000000;">)
- </span><span style="color: #0000ff;">GO</span>
- <span style="color: #0000ff;">USE</span> <span style="color: #ff0000;">[</span><span style="color: #ff0000;">TEMPDB</span><span style="color: #ff0000;">]</span>
- <span style="color: #0000ff;">GO</span>
- <span style="color: #0000ff;">DBCC</span> SHRINKFILE(<span style="color: #ff0000;">‘</span><span style="color: #ff0000;">TEMPDEV</span><span style="color: #ff0000;">‘</span>,<span style="color: #800000; font-weight: bold;">1024</span><span style="color: #000000;">)
- </span><span style="color: #0000ff;">GO</span>
(1)基本参考
- <span style="color: #0000ff;">use</span><span style="color: #000000;"> master
- </span><span style="color: #0000ff;">go</span>
- <span style="color: #0000ff;">alter</span> <span style="color: #0000ff;">database</span> tempdb modify <span style="color: #0000ff;">file</span> (name<span style="color: #808080;">=</span>tempdev,filename<span style="color: #808080;">=</span><span style="color: #ff0000;">‘</span><span style="color: #ff0000;">d:\database\TempDB.mdf</span><span style="color: #ff0000;">‘</span>,size<span style="color: #808080;">=</span>1000MB,FILEGROWTH <span style="color: #808080;">=</span><span style="color: #000000;"> 100MB)
- </span><span style="color: #0000ff;">go</span>
- <span style="color: #0000ff;">alter</span> <span style="color: #0000ff;">database</span> tempdb modify <span style="color: #0000ff;">file</span>(name<span style="color: #808080;">=</span>templog,filename<span style="color: #808080;">=</span><span style="color: #ff0000;">‘</span><span style="color: #ff0000;">d:\database\TempLog.ldf</span><span style="color: #ff0000;">‘</span>,size<span style="color: #808080;">=</span>1000MB,FileGrowth<span style="color: #808080;">=</span><span style="color: #000000;">100MB)
- </span><span style="color: #0000ff;">go</span>
(2)最佳实践
- <span style="color: #0000ff;">use</span><span style="color: #000000;"> tempdb
- </span><span style="color: #0000ff;">go</span>
- <span style="color: #0000ff;">dbcc</span> shrinkfile(<span style="color: #ff0000;">‘</span><span style="color: #ff0000;">tempdev</span><span style="color: #ff0000;">‘</span>,<span style="color: #800000; font-weight: bold;">1000</span><span style="color: #000000;">);
- </span><span style="color: #0000ff;">dbcc</span> shrinkfile(<span style="color: #ff0000;">‘</span><span style="color: #ff0000;">templog</span><span style="color: #ff0000;">‘</span>,<span style="color: #800000; font-weight: bold;">1000</span><span style="color: #000000;">);
- </span><span style="color: #0000ff;">use</span><span style="color: #000000;"> db_tank;
- </span><span style="color: #0000ff;">declare</span> <span style="color: #008000;">@path</span> <span style="color: #0000ff;">Nvarchar</span>(<span style="color: #800000; font-weight: bold;">500</span>),<span style="color: #008000;">@path_mdf</span> <span style="color: #0000ff;">Nvarchar</span>(<span style="color: #800000; font-weight: bold;">500</span>),<span style="color: #008000;">@path_ldf</span> <span style="color: #0000ff;">Nvarchar</span>(<span style="color: #800000; font-weight: bold;">500</span>),<span style="color: #008000;">@sql</span> <span style="color: #0000ff;">nvarchar</span>(<span style="color: #800000; font-weight: bold;">4000</span><span style="color: #000000;">);
- </span><span style="color: #0000ff;">select</span> <span style="color: #008000;">@path</span><span style="color: #808080;">=</span>physical_name <span style="color: #0000ff;">from</span> sys.database_files <span style="color: #0000ff;">where</span> type_desc<span style="color: #808080;">=</span><span style="color: #ff0000;">‘</span><span style="color: #ff0000;">rows</span><span style="color: #ff0000;">‘</span><span style="color: #000000;">;
- </span><span style="color: #0000ff;">set</span> <span style="color: #008000;">@path</span><span style="color: #808080;">=</span><span style="color: #ff00ff;">CAST</span>(<span style="color: #808080;">left</span>(<span style="color: #008000;">@path</span>,<span style="color: #ff00ff;">len</span>(<span style="color: #008000;">@path</span>)<span style="color: #808080;">-</span><span style="color: #ff00ff;">charindex</span>(<span style="color: #ff0000;">‘</span><span style="color: #ff0000;">\</span><span style="color: #ff0000;">‘</span>,<span style="color: #ff00ff;">reverse</span>(<span style="color: #008000;">@path</span>))<span style="color: #808080;">+</span><span style="color: #800000; font-weight: bold;">1</span>) <span style="color: #0000ff;">AS</span> <span style="color: #0000ff;">NVARCHAR</span><span style="color: #000000;">);
- </span><span style="color: #0000ff;">set</span> <span style="color: #008000;">@path_mdf</span><span style="color: #808080;">=</span><span style="color: #008000;">@path</span><span style="color: #808080;">+</span>N<span style="color: #ff0000;">‘</span><span style="color: #ff0000;">tempdb.mdf</span><span style="color: #ff0000;">‘</span><span style="color: #000000;">;
- </span><span style="color: #0000ff;">set</span> <span style="color: #008000;">@path_ldf</span><span style="color: #808080;">=</span><span style="color: #008000;">@path</span><span style="color: #808080;">+</span>N<span style="color: #ff0000;">‘</span><span style="color: #ff0000;">templog.ldf</span><span style="color: #ff0000;">‘</span><span style="color: #000000;">;
- </span><span style="color: #0000ff;">print</span> <span style="color: #008000;">@path</span><span style="color: #808080;">+</span><span style="color: #ff0000;">‘</span><span style="color: #ff0000;">,</span><span style="color: #ff0000;">‘</span><span style="color: #808080;">+</span><span style="color: #008000;">@path_mdf</span><span style="color: #808080;">+</span><span style="color: #ff0000;">‘</span><span style="color: #ff0000;">,</span><span style="color: #ff0000;">‘</span><span style="color: #808080;">+</span><span style="color: #008000;">@path_ldf</span>
- <span style="color: #0000ff;">set</span> <span style="color: #008000;">@sql</span><span style="color: #808080;">=</span><span style="color: #ff0000;">‘</span><span style="color: #ff0000;">
- alter database tempdb modify file( name =</span><span style="color: #ff0000;">‘‘</span><span style="color: #ff0000;">tempdev</span><span style="color: #ff0000;">‘‘</span><span style="color: #ff0000;">,filename=</span><span style="color: #ff0000;">‘‘‘</span><span style="color: #808080;">+</span><span style="color: #008000;">@path_mdf</span><span style="color: #808080;">+</span><span style="color: #ff0000;">‘‘‘</span><span style="color: #ff0000;">,filegrowth=128MB);
- alter database tempdb modify file( name =</span><span style="color: #ff0000;">‘‘</span><span style="color: #ff0000;">templog</span><span style="color: #ff0000;">‘‘</span><span style="color: #ff0000;">,filename=</span><span style="color: #ff0000;">‘‘‘</span><span style="color: #808080;">+</span><span style="color: #008000;">@path_ldf</span><span style="color: #808080;">+</span><span style="color: #ff0000;">‘‘‘</span><span style="color: #ff0000;">,filegrowth=128MB);
- </span><span style="color: #ff0000;">‘</span>
- <span style="color: #0000ff;">exec</span>(<span style="color: #008000;">@sql</span>)
联机丛书:DBCC FREESYSTEMCACHE (Transact-SQL)
感谢:sql server大佬群中的两位大佬的指点:烈火寒冰JT 与 八风不动
tempdb无法收缩。使用 DBCC FREESYSTEMCACHE 解决
标签:reverse 执行 错误日志 解决 base nsa ocs 代码 未使用