<% if session("name")<>"" then response.write("当前用户:"&session("name")) response.write("  注销") response.write("  修改资料") else if request.cookies("name")<>"" then response.write("当前用户:"&request.cookies("name")) response.write("  注销") response.write("  修改资料") end if end if %>
首页 > 经验与观点>技术领域>SQL Server >SQL Server调优的五个步骤(上)

数据库性能管理

 
  • Oracle DBA如何管理DB2(上)
  • Oracle DBA如何管理DB2(下)
  • Oracle优化的五个方面
  • Oracle SQL 性能优化技巧1
  • Oracle9i查询优化工具初探
  • SQL Server调优的五个步骤(上)
  • SQL Server调优的五个步骤(下)
  • SQL Server常见性能问题的优化
  • SQLServer SQL调优技巧
  • Microsoft的优化SQL方法
  • 理解SQL Server的SQL查询计划
  • 优化DB2数据库的5个最佳实践
  • 优化DB2数据库的十个最佳实践(续)
  • 数据库性能基准的五个问题
  • 在多种数据库环境下管理业务需求(上)
  • 在多种数据库环境下管理业务需求(下)
  • 跟踪数据库性能变化
  • 推荐产品的使用

     
  • Toad快速入门
  • Toad与Oracle免费的SQL 开发工具比较
  • American Electric Power使用Toad节省大量时间
  • Toad帮助CISCO系统实行标准化
  • SQLab Xpert 帮助GMAC-RFC的PeopleSoft应用改进性能
  • 使用Navicat导入数据到MySQL中
  • 开源时代:Navicat实现从MS SQL到MySQL的数据迁移
  • Navicat MySQL GUI评论
  • Navicat评论:一个程序怎样极大地降低了我的压力级别
  • MySQL GUI 工具汇总
  • QCO帮助CSN的SAP应用提升性能
  • QCO为Interstate Battery 节省投资
  • QCO帮助Egged 提高IT应用速度
  • QCO帮助Spaipa的SAP应用提高性能
  • Swisscom使用QCD管理数据库




  •  SQL Server调优的五个步骤(上)


            www.InnovateDigital.com 整理

          步骤1 优化应用工作量

          优化应用性能的第一步是优化工作量。在该部分调优方法论中列出的优化步骤能够解决很多常见的性能和可延展性问题。这些优化可以帮助降低由于特殊的设计或低效的实施导致的性能瓶颈影响,并且可以保证系统资源能够充分和有效利用。例如,解决低效率的查询计划或低效率的缓存等问题将会更加有效率地发挥SQL服务器缓存机制,从而整体上降低I/O操作。

          ■ 编译/重新编译- 数据库,CPU

          确定是否存在显著的CPU竞争,如果存在,请关注重新编译次数多的那些T-SQL语句,它们占用大量CPU资源。如果应用中SQL代码重新编译次数很多,可以考虑下面优化方法:

          ●评估有关的语句的作用,将数据修改代码和数据定义命令相分离。

          ●解决过时的索引统计。

          ●使用变量或其他逻辑替代临时表。微软忠告:频繁地编译/重新编译会消耗很高的CPU和磁盘I/O资源,会增加整体的工作量竞争。


          ■ 低效率的查询计划-数据库,CPU

          确定是否存在明显的CPU竞争,如果有,请确定无效率查询计划是如何占用过多的cpu资源。是否存在数据库模式,应用需求,用户使用的报表工具,或其它条件促使在生产环境下执行无效率的查询,使用Hash连接和排序操作的查询,结果会消耗很高的CPU和I/O。


          步骤2 减少读/写活动

          一旦你的应用代码被调优,接下来达到最佳性能就是减少应用运行时读写活动量或I/O,一个最常见的应用代码错误是编写低效率的数据查询操作;查询返回很多的数据-太多的列或行-SQLServer会负载很大。无论是应用设计允许用户创建自己的(通常无效率的),不限定每页结果的查询,还是后端代码使用嵌套查询,这些查询会返回很多的数据(包括用视图或表值函数写的查询),你的应用做为一个整体可能会访问更多的远超过需要的数据。在一些情况下,检查完你的应用代码后,你可能会认识到你的代码将会返回底层表中的所有数据,来满足查询需要!分析存在的索引和它们维护模式,确定添加索引是否合适,分析数据库文件的增长情况会帮你极大减少应用的读写活动量,可以释放宝贵的磁盘资源。

          ■ 无效率的或缺失的索引-DB I/O

          确定是否存在明显的磁盘I/O竞争,如果存在,需要分析缺失或或无效率的索引是如何导致磁盘I/O瓶颈的。DBA们必须评估应用的 SQL代码保证语句尽可能有效率地执行;这项任务通常必需创建索引来最有效地提取数据。如果应用的SQL代码发生变化,访问不同的表或从目的表选择更多的/不同的列,当前的索引可能会不起作用。需要分析说明SQL 代码无效率使用存在的索引或语句正在用表扫描搜集数据的地方。

          ■ 磁盘I/O-数据库文件的增长-DB I/O

          确定是否存在明显的磁盘I/O竞争,如果存在,需要关注频繁使用扩展段的数据库。DBA们应关注在一定的时间窗口内频繁使用扩展段的数据库。当SQL Server增大数据库文件时,文件倾向于破碎,操作将非常消耗CPU和I/O。

          ■ 磁盘I/O-数据库文件配置-DB I/O

          确定是否存在明显的磁盘I/O竞争,如果存在,请关注配置糟糕的数据库文件是如何导致数据库内锁竞争的增加,进而形成资源瓶颈,减少应用之间的竞争。DBA应考察可能导致闩竞争的一些数据库文件的配置问题,包括:

          ●数据文件和日志文件配置在同一磁盘设备上。

          ●数据库文件数量少于可用的CPU数量,特别是TempDB数据库。

          ●数据库文件数量少于可用的磁盘I/O设备数量。





         (北京铸锐数码科技有限公司 www.InnovateDigital.com)


     
    北京铸锐数码科技有限公司 版权所有 © 2008
    中国·北京市海淀区大钟寺13号华杰大厦8A9-2室
    邮编 100098 电话 010-62139280 传真 010-62135268    京ICP备05019494