在大多数情况下面,我们是对应用层进行优化,,因为对应用性能的优化是大家最乐于接受的功能,其结果能被观测及检验,查询的性能是SQL应用的整个性能的一个关键。
应用层上的问题包括以下内容:
·决策支持VS.和在线事务处理(OLTP)需要不同的性能策略
·事务设计能够减少并发,因为长的事务保持占用锁,也就减少了其他用户对相关数据的存取
·关联一致性对数据修改需要join操作
·支持Select操作的索引增加了修改数据的时间
·为了安全而设立的审计限制了性能
在应用层优化的选项包括:
·远程处理或复制处理能够把决策支持从OLTP机器中分离出来
·利用存储过程来减少编译时间和网络的利用
·利用最少量的锁去满足你的应用需要
数据库层的问题包括:
·建立备份和恢复方案
·在设备上分布存储数据
·审计操作影响性能;仅审计你所需的
·日常的维护活动将导致性能的降低和导致用户不能操作数据库表
在数据库层上优化选择包括:
·利用事务日志的阀值来自动转储事务日志防止其超出使用空间
·在数据段中用阀值来监视空间的使用
·利用分区来加速数据的装入
·对象的定位以避免硬盘的竞争
·把重要表和索引放入cache中,保证随时取得
服务器层的问题有:
·应用的类型——服务器是支持OLTP还是DSS,或者两者都支持
·所支持的用户数影响优化决策——随着用户数的增加,对资源的竞争会发生改变
·网络负荷
·当用户数和事务数达到一定的数量时复制服务器或其他分布式处理是一个解决的方法
服务器层的优化的选项包括:
·优化内存——一个关键的配置参数和其他方面的参数
·决策是客户端处理还是服务器端处理——有些处理能在客户端进行吗
·配置cache的大小和I/O的大小
·增加多个CPU
·为空闲时间排定批处理任务和生成报表
·工作负荷发生改变,重新配置特定参数
·决定是否可能把DSS移到另一个SQL服务器中设备层
设备层的问题包括:
·主设备、包含用户数据库的设备,用户数据设备,或数据库日志是否要镜像
·怎样在设备之间分布系统数据库、用户数据库和数据库日志
·为获得对堆表插入操作的高性能,是否有必要进行分区
设备层上优化的选项包括:
·用多个中等大小的设备及多个控制器可能比用少量的大设备有更好的I/O性能
·分布数据库,表和索引以在不同的设备上进行I/O装载