专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »数据库 » sqlserver数据库:从外到内提高SQL Server数据库性能 »正文

sqlserver数据库:从外到内提高SQL Server数据库性能

来源: 发布时间:星期三, 2008年12月31日 浏览:2次 评论:0
="t18">  如何提高SQL Server数据库性能该从哪里入手呢?笔者认为该遵循从外到内顺序来改善数据库运行性能如下图:

从外到内提高SQLServer数据库性能
  第层:网络环境

  到企业碰到数据库反映速度比较慢时首先想到是是否是网络环境所造成而不是开始就想着如何去提高数据库性能这是很多数据库管理员个误区当网络环境比较恶劣时你就算再如何去改善数据库性能也是枉然

  如以前有个客户向笔者反映数据库响应时间比较长让笔者给他们个提高数据库性能解决方案那时笔者感到很奇怪据笔者所知这家客户数据库记录量并不是很大而且他们配置数据库服务器硬件很不错笔者为此还特意跑到他们企业去查看问题原因看原来是网络环境所造成这家企业客户机有200多台而且都是利用集线器进行连接这就导致企业内部网络广播泛滥网络拥塞而且由于没有部署企业级杀毒软件Software网络内部客户机存在病毒掠夺了带宽不仅数据库系统响应速度比较慢而且其他应用软件Software如邮箱系统速度也不理想

  在这种情况下即使再花十倍、百倍力气去提升SQL Server数据库性能也是竹篮子打水场空现在数据库服务器性能瓶颈根本不在于数据库本身而在于企业网络环境若网络环境没有得到有效改善则SQL Server数据库性能是提高不上去

  为此笔者建议这家企业想跟他们网络管理员谈谈看看如何改善企业网络环境减少广播包和网络冲突;并且有效清除局域网内病毒、木马等等 3个月后我再去回访这家客户时候他们反映数据库性能有了很大提高而且其他应用软件Software性能也有所改善

  所以当企业遇到数据库性能突然降低时候个反应就是查看网络环境看看其实否有恶化只有如此才可以少走冤枉路

  第 2层:服务器配置

  这里指服务器配置主要是讲数据库服务器硬件配置以及周边配套虽然说提高数据库硬件配置需要企业付出代价但是这往往是个比较简便思路方法比起优化SQL语句来说其要简单

  如企业可以通过增加硬盘数量来改善数据库性能在实际工作中硬盘输入输出瓶颈经常被数据库管理员所忽视其实到并发访问比较多时候硬盘输入输出往往是数据库性能个主要瓶颈的此时若数据库管理员可以增加几个硬盘通过磁盘阵列来分散磁盘压力无疑是提高数据库性能个捷径

  如增加服务器内存或者CPU当数据库管理员发现数据库性能不理想是由内存或者CPU所造成此时任何改善数据库服务器本身措施都将物用处所以有些数据库管理专家把改善服务器配置当作数据库性能调整个先决条件

  如解决部署在同个数据库服务器上资源争用问题虽然我们多次强调要为数据库专门部署个服务器但是不少企业为了降低信息化成本往往把数据库服务器跟应用服务器放在同个服务器中这就会导致区别服务器的间资源争用问题如把文件服务器跟数据服务器部署在同个服务器中当对文件服务器进行备份时数据库性能就会有明显下降所以在数据库性能发现周期性变化时就要考虑是否服务器上区别应用对资源争夺所造成

  故笔者建议改善数据库性能时第 2个需要考虑层面就是要看看能否通过改善服务器配置来实现

  第 3层:数据库服务器

  当通过改善网络环境或者提高服务器配置都无法达到改善数据库性能接下去就需要考察数据库服务器本身了首先就需要考虑数据库服务器配置

  方面要考虑数据库服务器连接模式SQL Server数据库提供了很多数据库模式区别数据库连接模式对应区别应用若数据库管理员能够熟悉企业自身应用并且选择合适连接模式这往往能够达到改善数据库性能

  其次合理配置数据库服务器相关作业如出于安全需要数据库管理员往往需要对数据库进行备份那么备份作业放在什么时候合适呢?当然放在夜晚夜深人静时候对数据库进行备份最好另外对于大型数据库每天都进行完全备份将会是件相当累人事情虽然累得不是我们可是数据库服务器也会吃不消差异备份跟完全备份结合将是改善数据库性能个不错策略

  第 4层:数据库对象

  若以上 3个层面后数据库性能还不能够得到大幅度改善则就需要考虑是否能够调整数据库对象来完成我们虽然调整数据库对象往往可以提到不错效果但是往往会对数据库产生比较大影响所以笔者般不建议用户开始就通过调整数据库对象来达到改善数据库性能

  数据库对象有表、视图、索引、关键字等等我们也可以通过对这些对象进行调整以实现改善数据库性能目标

  如在视图设计时尽量把其显示内容缩小宁可多增加视图如出货明细表销售人员可能希望看到产品编号、产品中英文描述、产品名字、出货日期、客户编号、客户名字等等但是对于财务来说可能就不需要这么全信息他们只需要产品编号、客户编号、出货日期等等少量信息即可所以能可浪费点代码空间设计两张视图对应区别部门需求如此财务部门在查询数据时不会为不必要数据浪费宝贵资源

  如可以通过合理设置索引来提高数据库性能索引对于提高数据查询效率有着非常好效果些需要重复查询数据、或者数据修改不如何多表设置索引无疑是个不错选择

  另外要慎用存储过程虽然说存储过程可以帮助大家实现很多需求但是在万不得已情况下不要使用存储过程而利用前台应用来实现需求这主要是在通常情况下前台应用执行效率往往比后台数据库存储过程要高

  第 5层:SQL 语句

  若以上各个层面你都努力过但是还不满足由此带来效果则还有最后通过对SQL语句进行优化也可以达到改善数据库性能

  虽然说SQL Server服务器自身就带有个SQL语句优化器他会对用户SQL语句进行调整、优化以达到个比较好执行效果但是据笔者了解这个最多只能够优化些粗略层面或者说80%优化仍然需要数据库管理员配合要数据库管理员跟SQL优化器进行配合才能够起到非常明显作用

  不过SQL语句调整对于普通数据库管理员来说可能有难度除非受过专业训练般很难对SQL语句进行优化还好笔者受过这方面专业训练对这方面有比较深认识如在SQL语句中避免使用直接量任何个包含有直接量SQL语句都不太可能被再次使用我们数据库管理员要学会利用主机变量来代替直接量不然这些不可再用查询语句将使得缓存Cache被不可再用SQL语句填满这都是平时工作中些小习惯

  总的笔者认为在数据库性能调优时候若能够遵循如上顺序必定可以让我们少走冤枉路不花无用功其实数据库调优并没有我们想象这么难只要我们能够掌握其中诀窍数据库调优将可以手到擒来

相关文章

读者评论

  • 共0条 分0页

发表评论

  • 昵称:
  • 内容: