SQL SERVER数据库性能优化探讨.doc

上传人:99****p 文档编号:1781964 上传时间:2019-03-15 格式:DOC 页数:4 大小:23.50KB
下载 相关 举报
SQL SERVER数据库性能优化探讨.doc_第1页
第1页 / 共4页
SQL SERVER数据库性能优化探讨.doc_第2页
第2页 / 共4页
SQL SERVER数据库性能优化探讨.doc_第3页
第3页 / 共4页
SQL SERVER数据库性能优化探讨.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、SQL SERVER 数据库性能优化探讨摘 要:本文从 SQL SERVER 数据库的范式优化、查询优化、索引优化等方面出发,对数据库的性能优化方法进行探讨,总结了数据库优化应遵循的方法,力图提高 SQL 语句的执行效率。 数据库技术的应用已由传统数据处理发展至图像处理、商业决策管理等更多的新兴领域,而这些新兴领域对信息系统的高效、安全、稳定的性能要求更高。如何有效组织及处理数据库中的海量数据, 保证系统吞吐量, 成为数据库优化的首要任务。本文针对数据库优化技术探索合适的方法,从范式优化、查询优化、索引优化等多个方面进行探讨,希望可以通过这些优化使信息系统更适用于人们的需求。 1 合理使用范式

2、 关系模式规范化的目的是为了消除存储异常、减少数据冗余,解决数据插入异常、删除异常,保证数据完整性(即正确性和一致性)和存储效率。但是把数据库分解得越多,就会造成查询时的时间浪费。通常认为当一个关系模式可以达到 3NF(第三范式)或 BCNF 时,就具有了合理的结构及良好的性能。当关系规范化达到 BCNF 时, 虽然可以消除数据冗余太异常, 但却可能会破坏了数据语义。所以,我们在设计时要先尽可能设计为 BCNF,如果这时 BCNF 不到保持函数依赖的要求,破坏了数据语义,就应该则降低为 3NF。在这里,3NF 是指所有的非主属性都完全依赖主属性且不传递于主属性。一般情况下当数据库符合 3NF

3、后,通常就能很好的达到关系模式规范化的目的,它可以从根本上消除了数据冗余和数据不一致的问题。当然,使用了第三范式设计数据库后,还需要对表或者相关数据的结构及性能进行全面调整和优化。 2 采用视图方式 在一些数据量较大的表中,可能只有小部分数据会被访问,而且是被频繁的访问。这时,我们就可以采用视图方式,把这部分数据建立为视图。有时,又会有一些数据需要针对不同角色有不同权限的开放,那么这些数据也可以做成视图,并给视图赋予不同的权限,这就可以从一定程度上保证了数据的安全性。 3 建立存储过程 SQL Server 中存储过程是 SQL 语句和流程控制语句的集合。工作中,当某些操作需要使用大量重复的计

4、算时,我们就可以合理使用存储过程储存这些操作,完成软件复用,实现高性能的数据操作。同时,我们在使用存储过程后,还能能过隔离和加密的方法提高数据库的安全性。 4 使用索引优化数据库 应用数据库中会存储海量的数据表,人们对其做查询操作时,若进行全表扫描,会占用相当长的时间。索引与字典的目录类似,是数据库中重要的数据结构,它可以通过关键值指向表中的数据行。通过合理地创建并使用索引,可以避免上述全表扫描,提高数据查询的效率,可以减少由于连接造成的资源浪费,优化数据库性能。我们可以在表或视图的一列或是多列上建索引,也可以在两列或多列上建立复合索引。但是,索引在数据库中会占用存储空间,会牺牲系统性能,会在

5、时间和空间方面带来负面影响,因为表越大,索引也就越大。当一个含有索引的表中数据行被更新时,索引也同样需要更新,需要及时反映数据的变化。在含有索引的表中进行插入、更新和删除的操作时,速度可能会被影响。所以,在创建索引时必须考虑实际数据库的查询需求,以实现基于索引的数据库优化。 在建立索引时,应该找到平衡点,注意以下问题: (1)如果处理的关系表比较小, 就不需要建立索引。因为直接遍历整个表用的时间并不多, 建立索引反而加重了系统负担。 (2)若表里的数据常会频繁更新, 那么维护索引也将非常频繁, 如果这些工作量超出了索引带给我们的查询优势, 则还不如不使用索引。(3)索引分为聚集索引和非聚集索引

6、。聚集索引的物理存储按照索引排序。非聚集索引的物理存储不按照索引排序。聚集索引在插入数据的时候,所花费在“物理存储的排序” 时间上较长,但查询数据的速度会比查询非聚集数据的速度快。在建立时应考虑: (4)不在 where 子句中进行表达式运算操作(如加减乘除)及函数操作。因为上述操作会使查询放弃使用索引。 (5)创建及使用触发器和存储过程时,开始处进行“SET NOCOUNT ON” 的设置,结束时进行“SET NOCOUNT OFF” 设置,以减少服务器向客户机发送信息造成的空间上和时间上的浪费。 (6)尽量分解大事务为小事务,提高系统的并发能力。 (7)小范围内进行查询时,子查询会比连接查

7、询效率高。子查询是指在 WHERE 或 HAVING 子句中又包含了一个 SELECT 语句。 例如,SELECT * FROM 课程表 WHERE 报名人数(SELECT AVG(报名人数) FROM 课程表) 语句在执行时由内到外逐层执行,小范围内效率较高。但如果大范围内使用了嵌套,且查询嵌套层次越多, 效率越低, 子查询会比连接查询效率低。 (8)如果 IN 能用 BETWEEN 代替就用 BETWEEN。因为 BETWEEN 会使用索引,但 IN 不会用索引。 (9)FROM 子句中选择合适的表序 SQL 语句 FROM 子句中的表名有时会是多张表, SQL Server 在对表名进行解析时,会按照自右至左的顺序处理,也就是写在最后的表将被最先处理。所以,若 FROM 子句中包含多表则应该选择记录行最少的表要写在 FROM 子句的最后。 6 结论 优化数据库可以明显提高计算机系统效率,具有非常深远的意义。在数据库设计阶段对逻辑结构进行合理化优化,可获得系统的较小开销,从根本上提高系统的整体性能。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。