DBA应该知道的一些关于SQL Server跟踪标记的使用_MySQL
bitsCN.com 跟踪标记是什么?
对于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。
如何控制跟踪标记控制跟踪标记的方式有以下三种:
1.通过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'; </procedure>
这个存储过程来指定,sp_procoption存储过程会在SQL Server服务器启动时自动执行。
还有一点值得注意的是,不是所有的跟踪标记都可以用DBCC命令启动,比如Flag 835就只能通过启动参数指定。
2.通过在SQL Server配置管理器中指定
这种方式是通过在数据库引擎启动项里加启动参数设置,只有Global Scope。格式为-T#跟踪标记1;T跟踪标记2;T跟踪标记3。
3.通过注册表启动
这种方式和方法2大同小异,就不多说了。<br><br><br>一些在生产环境中可能需要的跟踪标记
<strong>Trace Flag 610</strong>
参考资料:
http://msdn.microsoft.com/en-us/library/dd425070.aspx
<strong>Trace Flag 834</strong>
<strong>Trace Flag 835</strong>
<strong>Trace Flag 1118</strong>
tempdb分配整个区,而不是混合区,减少SGAM页争抢。
当apply tempdb的best practice之后,还遇到争抢问题,考虑使用该跟踪标记。
参考资料:
<strong>Trace Flag 1204和1222</strong>
这两个跟踪标记都是将死锁写到错误日志中,不过1204是以文本格式进行,而1222是以XML格式保存。可以通过
<strong>sp_readerrorlog</strong>查看日志<strong>。</strong>
<strong></strong>
<strong></strong>
<strong></strong>
<strong></strong>
<strong>Trace Flag 1211和1224</strong>
<strong>Trace Flag 2528</strong>
<strong>Trace Flag 3226 </strong>
<strong>Trace Flag 4199</strong>
<strong>所有KB补丁对于查询分析器行为的修改都生效,这个命令比较危险,可能扫称性能的下降,具体请参看:</strong>
http://support.microsoft.com/kb/974006
<pre class="brush:php;toolbar:false"><strong>Trace Flag 806 </strong>
<strong></strong>
在读取过程中对页检查逻辑一致性,在错误日志中就可以看到类似下面的信息:
<strong></strong>
2004-06-25 11:29:04.11 spid51 错误: 823,严重性: 24 日状态: 2<br>2004-06-25 11:29:04.11 spid51 I/O 错误 (审核失败) 在读取过程中检测到的偏移量主题 SQL Server/MSSQL/data/pubs.mdf e:/Program 文件中的 0x000000000b0000.
参考资料:http://support.microsoft.com/kb/841776
该跟踪标记会极大的降低性能!!!
<br>
<b>Trace Flag 818 </b>
检查写一致性
踪标志 818 启用了一个内存中的环形缓冲区,用于跟踪由运行 SQL Server 的计算机执行的最后 2,048 个成功写操作(不包括排序和工作文件 I/O)。发生 605、823 或 3448 之类的错误时,将传入缓冲区的日志序列号 (LSN) 值与最新写入列表进行比较。如果在读操作期间检索到的 LSN 比在写操作期间指定的更旧,就会在 SQL Server 错误日志中记录一条新的错误信息。大部分 SQL Server 写操作以检查点或惰性写入形式出现。惰性写入是一项使用异步 I/O 操作的后台任务。环形缓冲区的实现是轻量的,因此对系统性能的影响可以忽略。
<br>
参考资料:http://support.microsoft.com/kb/826433
<br>
<b>Trace Flag 1200 </b>
返回加锁信息的整个过程,是学习加锁过程很牛逼的标志,示例代码如下:
<strong></strong>
DBCC TRACEON(1200,-1)DBCC TRACEON(3604)DBCC TRACESTATUSSELECT * FROM AdventureWorks.person.Address
参考资料:
http://stackoverflow.com/questions/7449061/nolock-on-a-temp-table-in-sql-server-2008
<br>
<pre class="brush:php;toolbar:false"><b>Trace Flag 1806</b>
<strong></strong>
禁用即时文件初始化,所有的磁盘空间请求全部使用填0初始化,可能造成在空间增长时产生阻塞。
<strong></strong>
<b>Trace Flag 3502</b>
在日志中显示有关checkpoint的相关信息。如图1所示。
<b><img src="/static/imghw/default1.png" data-src="http://img.bitscn.com/upimg/allimg/c140719/1405L145UN10-520Z.jpg" class="lazy" style="max-width:90%" title="2013-04-23_233140" border="0" alt="2013-04-23_233140" style="max-width:90%" style="max-width:90%"></b>
图1.在错误日志中显示Checkpoint
<br>Trace Flag 3505
不允许自动进行checkpoint,checkpoint只能手动进行,是非常危险的一个命令。
<br>小结<br><br>跟踪标志是控制SQL Server行为的一种方式,对于某些跟踪标志来说,可以在生产环境中提高性能,而对于另一些来说,用在生产环境中是一件非常危险的事情,只有在测试环境中才能被使用。要记住,跟踪标记对于调优是一种剑走偏锋的手段,只有在使用了所有基本的调优手段之后,才考虑使用跟踪标记。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제









이 기사는 MySQL의 Alter Table 문을 사용하여 열 추가/드롭 테이블/열 변경 및 열 데이터 유형 변경을 포함하여 테이블을 수정하는 것에 대해 설명합니다.

기사는 인증서 생성 및 확인을 포함하여 MySQL에 대한 SSL/TLS 암호화 구성에 대해 설명합니다. 주요 문제는 자체 서명 인증서의 보안 영향을 사용하는 것입니다. [문자 수 : 159]

기사는 MySQL에서 파티셔닝, 샤딩, 인덱싱 및 쿼리 최적화를 포함하여 대규모 데이터 세트를 처리하기위한 전략에 대해 설명합니다.

기사는 MySQL Workbench 및 Phpmyadmin과 같은 인기있는 MySQL GUI 도구에 대해 논의하여 초보자 및 고급 사용자를위한 기능과 적합성을 비교합니다. [159 자].

이 기사에서는 Drop Table 문을 사용하여 MySQL에서 테이블을 떨어 뜨리는 것에 대해 설명하여 예방 조치와 위험을 강조합니다. 백업 없이는 행동이 돌이킬 수 없으며 복구 방법 및 잠재적 생산 환경 위험을 상세하게합니다.

기사는 외국 열쇠를 사용하여 데이터베이스의 관계를 나타내고 모범 사례, 데이터 무결성 및 피할 수있는 일반적인 함정에 중점을 둡니다.

이 기사에서는 PostgreSQL, MySQL 및 MongoDB와 같은 다양한 데이터베이스에서 JSON 열에서 인덱스를 작성하여 쿼리 성능을 향상시킵니다. 특정 JSON 경로를 인덱싱하는 구문 및 이점을 설명하고 지원되는 데이터베이스 시스템을 나열합니다.

기사는 준비된 명령문, 입력 검증 및 강력한 암호 정책을 사용하여 SQL 주입 및 무차별 적 공격에 대한 MySQL 보안에 대해 논의합니다 (159 자)
