从外到内提高SQL Server数据库性能(2)
作者:彭芬 来源:IT专家网 发布时间:2009-01-22 14:12:00
第三层:数据库服务器。
当通过改善网络环境或者提高服务器配置,都无法达到改善数据库性能的目的时,接下去就需要考察数据库服务器本身了。首先,就需要考虑数据库服务器的配置。
一方面,要考虑数据库服务器的连接模式。SQL Server数据库提供了很多的数据库模式,不同的数据库连接模式对应不同的应用。若数据库管理员能够熟悉企业自身的应用,并且选择合适的连接模式,这往往能够达到改善数据库性能的目的。
其次,合理配置数据库服务器的相关作业。如出于安全的需要,数据库管理员往往需要对数据库进行备份。那么,备份的作业放在什么时候合适呢?当然,放在夜晚,夜深人静的时候,对数据库进行备份最好。另外,对于大型数据库,每天都进行完全备份将会是一件相当累人的事情。虽然累得不是我们,可是数据库服务器也会吃不消。差异备份跟完全备份结合将是改善数据库性能的一个不错的策略。
第四层:数据库对象。
若以上三个层面后,数据库性能还不能够得到大幅度改善的话,则就需要考虑是否能够调整数据库对象来完成我们的目的。虽然调整数据库对象往往可以提到不错的效果,但是,往往会对数据库产生比较大的影响。所以,笔者一般不建议用户一开始就通过调整数据库对象来达到改善数据库性能的目的。
数据库对象有表、视图、索引、关键字等等。我们也可以通过对这些对象进行调整以实现改善数据库性能的目标。
如在视图设计时,尽量把其显示的内容缩小,宁可多增加视图。如出货明细表,销售人员可能希望看到产品编号、产品中英文描述、产品名字、出货日期、客户编号、客户名字等等。但是,对于财务来说,可能就不需要这么全的信息。他们只需要产品编号、客户编号、出货日期等等少量的信息即可。所以,能可浪费一点代码的空间,设计两张视图,对应不同部门的需求。如此,财务部门在查询数据时,不会为不必要的数据浪费宝贵的资源。
如可以通过合理设置索引来提高数据库的性能。索引对于提高数据的查询效率,有着非常好的效果。对一些需要重复查询的数据、或者数据修改不怎么多的表设置索引,无疑是一个不错的选择。
另外,要慎用存储过程。虽然说存储过程可以帮助大家实现很多需求。但是,在万不得已的情况下,不要使用存储过程。而利用前台的应用程序来实现需求。这主要是因为在通常情况下,前台应用程序的执行效率往往比后台数据库存储过程要高的多。
第五层:SQL 语句。
若以上各个层面你都努力过,但是还不满足由此带来的效果的话,则还有最后一招。通过对SQL语句进行优化,也可以达到改善数据库性能的目的。
虽然说SQL Server服务器自身就带有一个SQL语句优化器。他会对用户的SQL语句进行调整、优化,以达到一个比较好的执行效果。但是,据笔者的了解,这个最多只能够优化一些粗略的层面。或者说,80%的优化仍然需要数据库管理员的配合。要数据库管理员跟SQL优化器进行配合,才能够起到非常明显的作用。
不过,SQL语句的调整对于普通数据库管理员来说,可能有一定的难度。除非受过专业的训练,一般很难对SQL语句进行优化。还好笔者受过这方面的专业训练,对这方面有比较深的认识。如在SQL语句中避免使用直接量。任何一个包含有直接量的SQL语句都不太可能被再次使用。我们数据库管理员要学会利用主机变量来代替直接量。不然,这些不可再用的查询语句将使得程序缓存被不可再用的SQL语句填满。这都是平时工作中的一些小习惯。
总之,笔者认为,在数据库性能调优的时候,若能够遵循如上的顺序,必定可以让我们少走冤枉路,不花无用功。其实,数据库调优并没有我们想象的这么难。只要我们能够掌握其中的诀窍,数据库调优将可以手到擒来。
猜你喜欢
- 这个主要应用于,获取用户输入的时候,防止用户不小心,多输入了一个空格,导致验证无法通过,多用于用户名跟密码的,好多情况下,大家复制的winr
- Varchar 对每个英文(ASCII)字符都占用2个字节,对一个汉字也只占用两个字节char 对英文(ASCII)字符占用1个字节,对一个
- 在大型的ASP项目中,很多的页面都涉及到分页、翻页功能。如果每个页面都写一个翻页的程序的话,这样的工作即降低了工作效率,也不利于工程的模块化
- CSS布局中可以用javascript判断浏览器版本看如下的javascript脚本: if (window.XMLHt
- 本文将演示如何使用SQL 7.0服务器的Enterprise Manager创建、配置一个示例数据库。我们还会演示如何增加具有合适权限的用户
- 【作者翻译】结构和层次降低了复杂性并提高了可读性。你的文章或站点组织的越深入,用户就越容易理解你观点和得到你想传达的信息。在网页上,这点被通
- 常用的重定向方式有: 301 redirect, 302 redirect 与 meta fresh:301 redirect: 301代表
- 在DreamWeaver中编写CSS,这种编写习惯本站(twocity.cn)并不提倡,不过由于"可视化"和操作简便,使
- 对于网站设计者而言,时常处理大批量的文件是难免的,特别是图片和一些文本文本文件,更是经常处理。而由于网站大量文件的关系,对于同类
- 代码如下:'============================== '格式化HTML,SDCMS加强版 '==
- 2009年 6月6日,空间4岁啦!与此同时Qzone月登录用户2亿,同时在线用户也突破了1000万。这是让人欢欣雀跃的数字,在空间同事眼里,
- 一 MySQL WorkbenchMySQL Workbench提供DBAs和developers一个集成工具环境:1)数据库设计和建模2)
- 科讯5.0 标签和之前版本变化不大,如果用老版本的科讯,可以参考这个标签使用。相关文章:新云4.0 模板通用标签说明 标签清单:======
- 如何用组件实现自动发送电子邮件?我想做一个能够自动发送电子邮件的程序,该如何做? 这就要用到w3 upl
- asp之家注:对于ACCESS数据库中的NULL,经常我们直接判断该字段是否为空用的是:name="",但是这个还不够,
- 下面为大家举一个例子,请按照下面的步骤: (1)从http://home.gbsource.net/xuankong/dll.z
- sql2000的服务器版本是8.0,sql2005是9.0首先要读安装必须配置(见后记)1.我是先装2000的,安装好后打上sp4补丁,(s
- sql代码如下:CREATE PROCEDURE Proname //使用CREATE PROCED
- 代码如下:<% Rem xml缓存类 '----------------------------
- 我们生活在信息繁杂的社会,尤其是在互联网时代,人们开始通过网络开始接触越来越多的信息,那么,如何获取/传递有效而准确的信息将非常重要。在网页