您所在的位置:e-works首页 > 基础信息化 > IT综合

专家问答: SQL Server性能推动器

发表时间:2006-9-29 来源:TechTarget
对SQL Server的性能进行调整是一项你永远也做不完的工作;你永远不会找到完美的性能配置,然后让它一直按照这个走下去。你必须不断地识别和排除性能问题,在它们变成整个企业的瓶颈之前。下面这个FAQ清单将会帮助你解决常见的SQL Server性能调整问题。

    对SQL Server的性能进行调整是一项你永远也做不完的工作;你永远不会找到完美的性能配置,然后让它一直按照这个走下去。你必须不断地识别和排除性能问题,在它们变成整个企业的瓶颈之前。下面这个FAQ清单将会帮助你解决常见的SQL Server性能调整问题。
  
    FAQ专家:Jeremy Kadlec 是Edgewood Solutions公司的首席数据库工程师,这家技术服务公司位于北美,提供全套的微软SQL Server服务。Jeremy Kadlec撰写了大量的有关SQL Server各个主题的文章和白皮书,并且在最初的SQL Server用户群,并且很自然地也在SQL PASS中,频繁发表文章。Jeremy还是北弗吉尼亚的SQL Server用户群的共同领导人。他是《The Rational Guide to IT Project Management》一书的作者,并且在位于巴的摩尔郡的马里兰大学取得了信息系统的硕士学位。你可以通过(410) 591-4683 或者jeremyk@edgewoodsolutions.com和Jeremy取得联系。

    1、为什么SQL Server会超时?

  我们的应用程序正遇到很严重的SQL Server超时问题。我们用vb.net 和 ADO.NET开发应用程序,数据库是SQL Server 2000。我们已经在服务器上安装了SQL Server ,操作系统是Windows Server 2003,并且现在大概有50个用户连接。我如何才能解决这个问题呢?

  有必要通过层来分解性能问题。在SQL Server上,我推荐使用平衡工具来判断最需要资源的对象。从这个观点出发,决定使用什么技术来解决最关键的问题。

  2、我是否应该将数据与索引分离以提高性能?

  将数据与索引分离来改善性能是不是可行的呢?解决这个问题的理想的办法是什么?

  是的——从理想的角度来说,对于大型数据库,将数据与索引分隔在不同的文件组是有好处的,同时这些大型数据库拥有具有多个控制器卡的硬件,并且被强制分离I/O。我会对你现有的硬件和数据库进行性能测试,然后做出一些改变看看会有什么收获。祝你好运!

  3、我如何加速SQL Server 2000中的记录检索?

  我正在使用SQL Server 2000,它工作得很慢。有一个表具有50842行,即使是一个简单的查询命令,也需要15秒钟来检索查询分析器中的所有记录。在ASP.NET中,几乎用了将近1分钟来填满数据采集器。你有什么建议吗?

  我会找出表是否具有索引或者是否稍后会进行维护。要判断表是否具有索引,你可以通过在表上执行sp_help来判断所有的相关对象。我还建议你联系你的数据库管理员来决定维护时间表,看看这个表是否包括在维护程序中。

  4、在活动模式下运行所有的SQL Server是不是好一点?

  说道性能调整的话,你能告诉我有关我在哪里可以找到以下场景的统计数字的观点或者建议吗?哪一个会带来更好的性能?

  A)在活动模式下运行一个服务器,另一个是在非活动的模式下,每一个都具有4个处理器。

  B)两个服务器都运行在活动模式下,每个带有2个处理器。

  我认为这个聚簇的问题更多地涉及的是成本和服务器管理,而不单单是性能。在第一个场景中,一个服务器处理所有的处理,第二个是空闲的,直到出现了错误。所以你即使把第二个服务器放在第一个的同样的环境下结果还是一样。在第二个场景下,两个服务器都需要处理一半(即,50%)的CPU利用能力,所以如果当错误出现的时候,一个服务器可以处理最初的50%的负载和失败的那个服务器的50%的负载。如果两个服务器都发挥了100%的能力,那么当错误发生的时候,一个处理器就需要处理200%的负载,性能就无法支持企业了。这无疑对于性能是有害的。第三个选择就是让两个服务器都运行4个处理器,分别承担50%的工作量,这样当错误发生的时候,一个服务器就可以支撑另一个的负载了。从性能的角度来说,我认为在最坏的场景出发,你可以应该追求高的可用性和灾难恢复能力,选择我提供的第一个或者第三个选择中的任何一个。我希望都能起作用!

  5、聚簇和非聚簇索引哪一个更好?

  聚簇索引和非聚簇索引之间的区别是什么啊?

  这是一个大问题。单个的聚簇索引可以在表上创建,这个索引可以为整个表按照某个列的值将数据进行实际的排序。一个表可以拥有255个非聚簇索引。非聚簇索引是基于数据的顺序的,但是不是真正的将数据排序。

  一个表可以拥有以下索引配置中的一个:

  没有索引

  一个聚簇索引

  一个聚簇索引和许多个非聚簇索引

  一个非聚簇索引

  许多个非聚簇索引

责任编辑:孙文婕
2
;