近期因工作需要,希望比较全面的总结下SQL SERVER 数据库性能优化相关的注意事项,在网上搜索了一下,发现很多文章,有的都列出了上百条,但是仔细看发现,有很多似是而非或者过时(可能对SQL SERVER6
5 以前的版本或者ORACLE 是适用的)的信息,只好自己根据以前的经验和测试结果进行总结了
我始终认为,一个系统的性能的提高,不单单是试运行或者维护阶段的性能调优的任务,也不单单是开发阶段的事情,而是在整个软件生命周期都需要注意,进行有效工作才能达到的
所以我希望按照软件生命周期的不同阶段来总结数据库性能优化相关的注意事项
一、 分析阶段 一 般来说,在系统分析阶段往往有太多需要关注的地方,系统各种功能性、可用性、可靠性、安全性需求往往吸引了我们大部分的注意力,但是,我们必须注意,性能 是很重要的非功能性需求,必须根据系统的特点确定其实时性需求、响应时间的需求、硬件的配置等
最好能有各种需求的量化的指标
另一方面,在分析阶段应该根据各种需求区分出系统的类型,大的方面,区分是OLTP(联机事务处理系统)和OLAP(联机分析处理系统)
二、 设计阶段 设计阶段可以说是以后系统性能的关键阶段,在这个阶段,有一个关系到以后几乎所有性能调优的过程—数据库设计
在数据库设计完成后,可以进行初步的索引设计,好的索引设计可以指导编码阶段写出高效率的代码,为整个系统的性能打下良好的基础
以下是性能要求设计阶段需要注意的: 1、 数据库逻辑设计的规范化 数据库逻辑设计的规范化就是我们一般所说的范式,我们可以这样来简单理解范式: 第 1 规范:没有重复的组或多值的列,这是数据库设计的最低要求
第 2 规范: 每个非关键字段必须依赖于主关键字,不能依赖于一个组合式主关键字的某些组成部分
消除部分依赖,大部分情况下,数据库设计都应该达到第二范式
第 3 规范: 一个非关键字段