跟踪标记是什么?数据库
对于DBA来讲,掌握Trace Flag是一个成为SQL Server高手的必要条件之一,在大多数状况下,Trace Flag只是一个剑走偏锋的奇招,没必要要,但在不少状况下,会使用这些标记可让你更好的控制SQL Server的行为。服务器
下面是官方对于Trace Flag的标记:测试
跟踪标记是一个标记,用于启用或禁用SQL Server的某些行为。优化
由上面的定义不难看出,Trace Flag是一种用来控制SQL Server的行为的方式。不少DBA对Trace Flag都存在一些误区,认为只有在测试和开发环境中才有可能用到Trace Flag,这种想法只能说部分正确,所以对于Trace Flag能够分为两类,适合在生产环境中使用的和不适合在生产环境中使用的。日志
Important:Trace Flag属于剑走偏锋的招数,在使用Trace Flag作优化以前,先Apply基本的Best Practice。开发
如何控制跟踪标记io
控制跟踪标记的方式有如下三种:基础
一、经过DBCC命令配置
能够经过DBCC命令来启用或关闭跟踪标记,这种方式的好处是简单易用,分别使用下面三个命令来启用,禁用已经查看跟踪标记的状态:方法
● DBCC TRACEON(2203,-1)
● DBCC TRACEOFF(2203,1)
● DBCC TRACESTATUS
其中,TRACEON和TRACEOFF第二个参数表明启用标志的范围,1是Session Scope,-1是Global Scope,若是不指定该值,则保持默认值Session Scope。
另外,值得说的是,若是你但愿在每次SQL Server服务启动时经过DBCC命令控制某些Flag,则使用
EXEC sp_procoption @ProcName = '<procedure name>'
, @OptionName = ] 'startup'
, @OptionValue = 'on';
这个存储过程来指定,sp_procoption存储过程会在SQL Server服务器启动时自动执行。
还有一点值得注意的是,不是全部的跟踪标记均可以用DBCC命令启动,好比Flag 835就只能经过启动参数指定。
二、经过在SQL Server配置管理器中指定
这种方式是经过在数据库引擎启动项里加启动参数设置,只有Global Scope。格式为-T#跟踪标记1;T跟踪标记2;T跟踪标记3。
三、经过注册表启动
这种方式和方法2大同小异,就很少说了。
一些在生产环境中可能须要的跟踪标记
Trace Flag 610
减小日志产生量。若是你对于日志用了不少基础的best practice,好比说只有一个日志文件、VLF数量适当、单独存储,若是仍是不能缓解日志过大的话,考虑使用该跟踪标记。