SQL Server的隐藏function

在SQL隐藏functionSQL Server中,我们获得了很多有用的存储过程。

我们应该知道什么隐藏的function来调整我们的SQLServer数据库服务器?

PS 这里是关于Oracle的类似问题

为了回答关于调优的实际问题,而不是看内部,它可以帮助你理解为什么SQL在某些方面performance出来,只有一个我能想到的没有logging的选项。

您需要确保您的事务日志文件中没有太多VLF,否则日志操作将会变慢。 要查看VLF的数量,您必须使用未logging的DBCC LOGINFO命令,然后采取纠正措施。 Kimberly在http://sqlskills.com/blogs/Kimberly/post/8-Steps-to-better-Transaction-Log-throughput.aspx有一篇很棒的博客文章

除此之外,性能调优还没有真正的魔力。 这是关于正确的devise,正确的索引策略,正确的数据库维护,并重新评估一遍又一遍,以确保您的要求仍然满足上述所有。 没有/更快的SQL Server开关。

希望这可以帮助

SQL Server内部查看器是一个比dbcc更强大的工具,用于在SQL Server中存储数据的内部方法。 特别是对于pipe理分区,分配查看器提供了哪些分区上的数据。

您可以从这里得到它:[url删除…谷歌“内部查看器的SQL Server”网站:codeplex.com]

有一大堆没有logging的 DBCC命令,比如:

DBCC PAGEDBCC IND让你窥视存储引擎。 保罗·兰德尔(Paul Randal)已经对他们进行了博客

我会回应保罗·兰德尔(Paul Randal),没有太多logging。 面临的挑战是阅读不合规格的文件。 我已经回顾了我的SQL Server安装清单中最重要的(但并不那么明显):

http://www.brentozar.com/archive/2008/03/sql-server-2005-setup-checklist-part-1-before-the-install/

一些例子包括:

  • 设置安全性以利用即时文件初始化
  • alignment你的分区
  • 使用多path,并了解它是如何工作的
  • 不要过度承认记忆(人们把RDP装入盒子里,运行东西,所以计划)

了解任何给定查询的SQL Server性能的关键是深入了解查询计划。 具体了解所使用的连接types,提取步骤的types(扫描与查找)以及计划可以告诉您的限制。 例如,查询计划几乎总是把SELECT用户列表中的成本用户定义函数搞砸了。 但是,如果您了解查询计划的工作方式,则您将了解SQL Server如何工作,中断以及如何解决问题。

了解SQL Server服务器稳定性的关键是了解如何快速读取错误日志。 不是windows事件日志,实际上,老实说上帝的ERRORLOG文本文件。

聘请一位优秀的SQL Server查询编写者的关键是要求他们用正确的语法为您编写如何在T-SQL中使用游标。 如果他们得到正确的答案,不要雇用他们,他们使用游标太多,游标几乎总是错误的方法。

IT不是无证的,但有一点知道“隐藏”function是默认跟踪。 除非有人明确禁用它,否则SQL Server 2005和2008有一个系统跟踪,默认情况下从服务器启动开始。

这对于回答“发生了什么?”是非常有用的。 在性能问题后input问题。 同样好,在安全事件发生后的特定时间,找出SQL Server上的人是非常重要的。

我从杰克·科贝特(Jack Corbett)的文章中了解到这一点:[1]。 Jonathan M Kehayias在上周为PASS DBA SIG做了一个Live Meeting(见这里:[2])。

以下脚本(也来自Jack Corbett)显示了如何查看默认跟踪是否在您的SQL Server上运行以及跟踪文件是什么:

Select CAT.name as event_category, E.name as event_name, C.name as column_name, Case When FI.logical_operator = '0' Then 'AND' Else 'OR' End as logical_operator, Case When FI.comparison_operator = 0 Then '=' When FI.comparison_operator = 1 Then '<>' When FI.comparison_operator = 2 Then '>' When FI.comparison_operator = 3 Then '<' When FI.comparison_operator = 4 Then '>=' When FI.comparison_operator = 5 Then '<=' When FI.comparison_operator = 6 Then 'Like' When FI.comparison_operator = 7 Then 'Not Like' End as comparison_operator, FI.value as filter_value From sys.traces T Cross Apply -- this function provides the details about the trace ::fn_trace_geteventinfo(T.id) EI Join sys.trace_events E On EI.eventid = E.trace_event_id Join sys.trace_columns C On EI.columnid = C.trace_column_id Join sys.trace_categories CAT On E.category_id = CAT.category_id Outer Apply --outer apply is like a left join as there may not be filters ::fn_trace_getfilterinfo(T.id) FI --Optional Where T.id = 1 

– RBarryYoung

(注:我不信任超链接,所以这是我得到的)

1:www.sqlservercentral.com/scripts/Auditing/64335/

2:sqlblog.com/blogs/jonathan_kehayias/archive/2009/05/27/pass-dba-sig-default-trace-presentation-files.aspx