SQLSERVER数据库性能优化探析

SQLSERVER数据库性能优化探析

ID:46049130

大小:59.50 KB

页数:6页

时间:2019-11-20

SQLSERVER数据库性能优化探析_第1页
SQLSERVER数据库性能优化探析_第2页
SQLSERVER数据库性能优化探析_第3页
SQLSERVER数据库性能优化探析_第4页
SQLSERVER数据库性能优化探析_第5页
资源描述:

《SQLSERVER数据库性能优化探析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

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

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

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

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

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

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

7、ERE或HAVING子句中又包含了一个SELECT语句。例如,SELECT*FROM课程表WHERE报名人数>(SELECTAVG(报名人数)FROM课程表)语句在执行时由内到外逐层执行,小范围内效率较高。但如果大范围内使用了嵌套,且查询嵌套层次越多,效率越低,子查询会比连接查询效率低。(3)如果IN能用BETWEEN代替就用BETWEENo因为BETWEEN会使用索引,但IN不会用索引。(4)FROM子句中选择合适的表序SQL语句FROM子句中的表名有时会是多张表,SQLServer在对表

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。