SQL性能优化 第4章 调整SQL Server
1、决定CPU瓶颈依据,使用Windows NT性能监视器,对监控器选择以下对象和计数器:
- 处理器对象,处理器时间计数器百分比。按右边窗口显示的数字选择所有处理器,这个计数给出了每个处理器的处理器使用情况
- 系统对象,总的处理器时间计数器百分比。这个计数器给出了系统中所有处理器的平均总处理时间。
处理器的使用持续保持在 8 0%或8 0%以上,或者它经常会到达这个比率,就可能具有一个 C P U瓶颈
2、调整磁盘驱动器:
- 监控磁盘I / O,使用 Windows NT/2000性能监视器监控磁盘活动,必须先启用一个称为 diskperf的选项。在 DOS提示符下输入如下命令:Diskperf -Y(系统重启时,开启所有磁盘性能计数器)
- 首先计算每个磁盘上进行了多少次I/O,根据所采用的RAID级别使用相应的I/O计算公式,只需要查看一下监视器记录下来每次读和写的秒数的值,就可以意识到系统中是否存在磁盘瓶颈
把序列I/O操作与随机I/O操作分离,
3、调整内存,通过使用 Windows NT/2000性能监视器( P e r f M o n )监控以下对象和计数器:
- 内存对象,可用字节计数器 进程可以使用的系统中可用的内存数量,以字节为单位
- 内存对象,页/秒计数器 每秒从内存调出页面到磁盘或从磁盘调入页面到内存的页数
- SQLServer:内存管理对象,总的服务器内存(KB)计数器SQL Server当前使用内存的总的大小,以K B为单位
- SQLServer:缓存管理器对象,高速缓存命中率计数器 在数据高速缓存中发现请求数据的百分比
- 进程对象,工作区计数器 每个进程基础上的工作区大小 (一个进程当前正在使用的内存大小),以字节为单位。在性能监视器的 Instance (实例)下拉菜单中,选择需要监控的进程
- 进程对象,页错误/秒计数器 进程指向内存中不在自己工作区中的页的时间数。如果页仍在主存中,或与另一个进程共享,将不会出现从磁盘调入页;否则,必须从磁盘调入页
3、分离日志文件和数据文件以及分布数据,因为当序列I/O与随机I/O在同一个词盘时,只能采用随机I/O读写操作
4、文件和文件组使用
- 将数据库的表和索引放在特定的磁盘驱动器上,必须创建用户定义文件组
- 将用户的表和索引与系统表分离,在这种情况下,需要为你的文件创建用户定义文件组
- 建立文件组,可以分散I/O负载
5、SQL Server配置参数
- 相似掩码(a ffinity mask)参数用以指明在多处理器环境下, SQL Server 可以运行在哪个CPU上
- 轻量缓冲池,纤维的使用可以减少环境切换,原理是允许 SQL Server 维护调度表而不是使用 Windows NT 或Windows 2000调度表
- 锁,QL Server可以分配给锁的最大的内存数为内存总数的4 0%。我们建议将锁参数保留为缺省值 0,允许SQL Server在必要时分配锁
- 最大异步I/O(max async I/O)选项指明每个数据文件上可以进行的未完成的异步 I/O的最大数量,缺省值 3 2表明在任何时间,每个文件上可以有 3 2个读和3 2个写未完成,选项的最大值为 2 5 5
- 最大工作者线程(max worker thread)选项指明了SQL Server可以用于处理的最大线程数 (或纤维,如果启用了轻量缓冲池 ),如果最大线程数量导致了过多的环境切换,试着减小这个值
- 恢复时间间隔,系统在故障时进行恢复花费的最大时间,以分钟为单位。缺省值为0,它指明了SQL Server将替你决定时间间隔—大约一分钟的恢复时间
- 用户连接:缺省情况下是动态配置的. SQL Server允许最大32 767个用户连接,这也是这个参数的最大值