问大神石沫:如何判断MSSQL数据库磁盘出现了瓶颈?
石沫(A1):您好,您的问题非常好,SQL SERVER提供了很多关于I/O压力的性能计数器,请选择性能计算器PhysicalDisk(LogicalDisk),根据我们的经验,如下指标的阈值可以帮助你判断IO是否存在压力:
1. %Disk Time :这个是磁盘时间百分比,这个平均值应该在85%以下
2. Current Disk Queue Length:未完成磁盘请求数量,这个每个磁盘平均值应该小于2.
3. Avg. Disk Queue Length:磁盘请求队列的平均长度,这个每个磁盘平均值也应该小于2
4. Disk Transfers/sec:每次磁盘传输数量,这个每个磁盘的最大值应该小于100
5. Disk Bytes/sec:每次磁盘传入字节数,这个在普通的磁盘上应该在10M左右
6. Avg. Disk Sec/Read:从磁盘读取的平均时间,这个平均值应该小于10ms(毫秒)
7. Avg. Disk Sec/Write:磁盘写入的平均时间,这个平均值也应该小于10ms(毫秒)
以上,请根据自己的磁盘系统判断,比如传统的机械臂磁盘和SSD有所不同。
一般磁盘的优化方向是:
1. 硬件优化:比如使用更合理的RAID阵列,使用更快的磁盘驱动器,添加更多的内存
2. 数据库设置优化:比如创建多个文件和文件组,表的INDEX和数据放到不同的DISK上,将数据库的日志放到单独的物理驱动器,使用分区表
3. 数据库应用优化:包括应用程序的设计,SQL语句的调整,表的设计的合理性,INDEX创建的合理性,涉及的范围很广
希望对您有所帮助,谢谢!