SQL Server 服务器磁盘测试之SQLIO篇

原文:SQL Server 服务器磁盘测试之SQLIO篇

      数据库调优工作中,有一部分是需要排查IO问题的,例如IO的速度或者RAID级别无法响应高并发下的快速请求。最常见的就是查看磁盘每次读写的响应速度,通过性能计数器Avg.Disk sec/Read(Write)我们可以很直观的看到他们。不同的业务,繁忙程度也不同,需要什么样的IO做支撑?难道都用最高配的IO去配置硬件吗?能否通过一些经验和基线来判断当下磁盘环境是否能满足需求呢?

手上有4块 Inter SSD DC S3500 Series 600GB硬盘做成的RAID1两块,我们就拿它来练练手吧!

SQLIO是微软提供的一款IO测试工具,下载地址:http://www.microsoft.com/en-us/download/details.aspx?id=20163

下载完毕后,一路Next安装完毕,默认目录是:C:\Program Files (x86)\SQLIO

前期准备工作:

1、为SQLIO.exe排除数据执行保护

         

2、去掉图示上的勾

        

下面我们来熟悉一下SQLIO的参数:

-o

Number of outstanding I/O requests per thread. When attempting to determine the capacity of a given volume or set of volumes, start with a reasonable number for this and increase until disk saturation is reached (that is, latency starts to increase without an additional increase in throughput or IOPs). Common values for this are 8, 16, 32, 64, and 128.

Keep in mind that this setting is the number of outstanding I/Os per thread.

每个线程可以发起多个IO请求

-LS

Instructs SQLIO to capture disk latency information. Capturing latency data is recommended when testing a system.

开启该参数打印出磁盘延迟信息,必选项。

-k

Specify either R or W (read or write). Both reads and writes should be tested. Keep in mind that the storage array cache may absorb a good amount of write activity and potentially skew results. Ensure that the duration is long enough to saturate the cache in order to get a true measure of storage capacity.

指定读操作-R或者写操作W

-s

Duration of test (in seconds). For initial tests, running for 5-10 minutes per I/O size is recommended to get a good idea of I/O performance.

每个批次执行的时间,推荐每个size的IO请求运行5-10分钟,单位为秒

-b

Size of the I/O request in kbytes. For random I/O, 8 KB and 64 KB are as many values as are need to be tested. The most common random I/O size for SQL Server is 8 KB. For random I/O, pay close attention to the number of I/Os per second and latency. For sequential I/O, test a range of sizes (4, 8, 16, 32, 64, 128, 256) and pay attention to throughput and latency.

指定读写的IO大小,单位是KB。8KB是SQL Server随机读写最常用的块大小,其次是64KB。

对于随机IO测试,密切注意每秒的IO请求数和延迟;

对于顺序IO测试,多注意每秒的吞吐量和延迟。

-f

Type of I/O to issue. Either ‘random’ or ‘sequential’.

指定IO的请求方式,随机Random或者顺序Sequential

-F

Name of the file that will contain a list of the test file(s) used by SQLIO.

指定SQLIO测试使用的文件

测试目的:

查看不同的卷簇大小(默认4KB/64KB)对SQL Server常用IO操作单位(8KB/64KB)的影响

测试热身:

首先,我们先理清几点 Keep in your mind:

1、对于随机Random读写,我们看重的是每秒的IO操作次数,即 IO/sec,IO Operations

2、对于顺序Sequential读写,我们看重的是每秒的吞吐量,即 MB/sec

3、对于SQL Server数据文件,更多的操作是随机读写。

读:SQL Server应客户端查询需求,将不在内存中的记录从磁盘上随机的位置读入内存;写:SQL Server CheckPoint或者Lazy
Writer出动时,将SQL Server Buffer Cache中大量的Dirty Page写入磁盘上随机的位置。

4、对于SQL Server日志文件,更多的操作是顺序读写。

读:当进行日志备份或者LogReader工作时,SQL Server将顺序的读取日志。

写:顺序写操作是日志的再正常不过的行为了

5、如下表格,列出了SQL Server常见行为下的IO操作单位大小,可以看到,8KB和64KB依次是SQL Server最常操作的IO单位大小

6、SQL
Server分配数据的最小单位是8KB,而Windows存储数据也有最小的分配单位,那就是卷簇,而且该值格式化磁盘分区时是可选的,默认值即为4KB。

查看指定分区卷簇大小:fsutil fsinfo ntfsinfo d:

 

测试过程:

        1、两块分区分别为D盘和E盘,其中D盘簇大小为默认4KB,E盘簇大小为64KB

         2、D盘的测试代码如下:

 

Rem 8KB随机写sqlio -kW -t8 -s90 -dD -o1 -frandom -b8 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kW -t16 -s90 -dD -o1 -frandom -b8 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kW -t32 -s90 -dD -o1 -frandom -b8 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kW -t64 -s90 -dD -o1 -frandom -b8 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kW -t64 -s90 -dD -o2 -frandom -b8 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kW -t64 -s90 -dD -o4 -frandom -b8 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kW -t64 -s90 -dD -o8 -frandom -b8 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kW -t64 -s90 -dD -o16 -frandom -b8 -BH -LS Testfile.dat >>4KB_Cluster_Test.txt

Rem 64KB随机写sqlio -kW -t8 -s90 -dD -o1 -frandom -b64 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kW -t16 -s90 -dD -o1 -frandom -b64 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kW -t32 -s90 -dD -o1 -frandom -b64 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kW -t64 -s90 -dD -o1 -frandom -b64 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kW -t64 -s90 -dD -o2 -frandom -b64 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kW -t64 -s90 -dD -o4 -frandom -b64 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kW -t64 -s90 -dD -o8 -frandom -b64 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kW -t64 -s90 -dD -o16 -frandom -b64 -BH -LS Testfile.dat >>4KB_Cluster_Test.txt

Rem 8KB随机读sqlio -kR -t8 -s90 -dD -o1 -frandom -b8 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kR -t16 -s90 -dD -o1 -frandom -b8 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kR -t32 -s90 -dD -o1 -frandom -b8 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kR -t64 -s90 -dD -o1 -frandom -b8 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kR -t64 -s90 -dD -o2 -frandom -b8 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kR -t64 -s90 -dD -o4 -frandom -b8 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kR -t64 -s90 -dD -o8 -frandom -b8 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kR -t64 -s90 -dD -o16 -frandom -b8 -BH -LS Testfile.dat >>4KB_Cluster_Test.txt

Rem 64KB随机读sqlio -kR -t8 -s90 -dD -o1 -frandom -b64 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kR -t16 -s90 -dD -o1 -frandom -b64 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kR -t32 -s90 -dD -o1 -frandom -b64 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kR -t64 -s90 -dD -o1 -frandom -b64 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kR -t64 -s90 -dD -o2 -frandom -b64 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kR -t64 -s90 -dD -o4 -frandom -b64 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kR -t64 -s90 -dD -o8 -frandom -b64 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kR -t64 -s90 -dD -o16 -frandom -b64 -BH -LS Testfile.dat >>4KB_Cluster_Test.txt

Rem 8KB顺序写sqlio -kW -t8 -s90 -dD -o1 -fsequential -b8 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kW -t16 -s90 -dD -o1 -fsequential -b8 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kW -t32 -s90 -dD -o1 -fsequential -b8 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kW -t64 -s90 -dD -o1 -fsequential -b8 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kW -t64 -s90 -dD -o2 -fsequential -b8 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kW -t64 -s90 -dD -o4 -fsequential -b8 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kW -t64 -s90 -dD -o8 -fsequential -b8 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kW -t64 -s90 -dD -o16 -fsequential -b8 -BH -LS Testfile.dat >>4KB_Cluster_Test.txt

Rem 64KB顺序写sqlio -kW -t8 -s90 -dD -o1 -fsequential -b64 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kW -t16 -s90 -dD -o1 -fsequential -b64 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kW -t32 -s90 -dD -o1 -fsequential -b64 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kW -t64 -s90 -dD -o1 -fsequential -b64 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kW -t64 -s90 -dD -o2 -fsequential -b64 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kW -t64 -s90 -dD -o4 -fsequential -b64 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kW -t64 -s90 -dD -o8 -fsequential -b64 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kW -t64 -s90 -dD -o16 -fsequential -b64 -BH -LS Testfile.dat >>4KB_Cluster_Test.txt

Rem 8KB顺序读sqlio -kR -t8 -s90 -dD -o1 -fsequential -b8 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kR -t16 -s90 -dD -o1 -fsequential -b8 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kR -t32 -s90 -dD -o1 -fsequential -b8 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kR -t64 -s90 -dD -o1 -fsequential -b8 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kR -t64 -s90 -dD -o2 -fsequential -b8 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kR -t64 -s90 -dD -o4 -fsequential -b8 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kR -t64 -s90 -dD -o8 -fsequential -b8 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kR -t64 -s90 -dD -o16 -fsequential -b8 -BH -LS Testfile.dat >>4KB_Cluster_Test.txt

Rem 64KB顺序读sqlio -kR -t8 -s90 -dD -o1 -fsequential -b64 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kR -t16 -s90 -dD -o1 -fsequential -b64 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kR -t32 -s90 -dD -o1 -fsequential -b64 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kR -t64 -s90 -dD -o1 -fsequential -b64 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kR -t64 -s90 -dD -o2 -fsequential -b64 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kR -t64 -s90 -dD -o4 -fsequential -b64 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kR -t64 -s90 -dD -o8 -fsequential -b64 -BH -LS Testfile.dat >>4KB_Cluster_Test.txtsqlio -kR -t64 -s90 -dD -o16 -fsequential -b64 -BH -LS Testfile.dat >>4KB_Cluster_Test.txt

3、E盘测试脚本:

 

Rem 8KB随机写sqlio -kW -t8 -s90 -dE -o1 -frandom -b8 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kW -t16 -s90 -dE -o1 -frandom -b8 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kW -t32 -s90 -dE -o1 -frandom -b8 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kW -t64 -s90 -dE -o1 -frandom -b8 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kW -t64 -s90 -dE -o2 -frandom -b8 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kW -t64 -s90 -dE -o4 -frandom -b8 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kW -t64 -s90 -dE -o8 -frandom -b8 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kW -t64 -s90 -dE -o16 -frandom -b8 -BH -LS Testfile.dat >>64KB_Cluster_Test.txt

Rem 64KB随机写sqlio -kW -t8 -s90 -dE -o1 -frandom -b64 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kW -t16 -s90 -dE -o1 -frandom -b64 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kW -t32 -s90 -dE -o1 -frandom -b64 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kW -t64 -s90 -dE -o1 -frandom -b64 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kW -t64 -s90 -dE -o2 -frandom -b64 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kW -t64 -s90 -dE -o4 -frandom -b64 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kW -t64 -s90 -dE -o8 -frandom -b64 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kW -t64 -s90 -dE -o16 -frandom -b64 -BH -LS Testfile.dat >>64KB_Cluster_Test.txt

Rem 8KB随机读sqlio -kR -t8 -s90 -dE -o1 -frandom -b8 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kR -t16 -s90 -dE -o1 -frandom -b8 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kR -t32 -s90 -dE -o1 -frandom -b8 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kR -t64 -s90 -dE -o1 -frandom -b8 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kR -t64 -s90 -dE -o2 -frandom -b8 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kR -t64 -s90 -dE -o4 -frandom -b8 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kR -t64 -s90 -dE -o8 -frandom -b8 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kR -t64 -s90 -dE -o16 -frandom -b8 -BH -LS Testfile.dat >>64KB_Cluster_Test.txt

Rem 64KB随机读sqlio -kR -t8 -s90 -dE -o1 -frandom -b64 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kR -t16 -s90 -dE -o1 -frandom -b64 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kR -t32 -s90 -dE -o1 -frandom -b64 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kR -t64 -s90 -dE -o1 -frandom -b64 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kR -t64 -s90 -dE -o2 -frandom -b64 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kR -t64 -s90 -dE -o4 -frandom -b64 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kR -t64 -s90 -dE -o8 -frandom -b64 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kR -t64 -s90 -dE -o16 -frandom -b64 -BH -LS Testfile.dat >>64KB_Cluster_Test.txt

Rem 8KB顺序写sqlio -kW -t8 -s90 -dE -o1 -fsequential -b8 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kW -t16 -s90 -dE -o1 -fsequential -b8 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kW -t32 -s90 -dE -o1 -fsequential -b8 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kW -t64 -s90 -dE -o1 -fsequential -b8 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kW -t64 -s90 -dE -o2 -fsequential -b8 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kW -t64 -s90 -dE -o4 -fsequential -b8 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kW -t64 -s90 -dE -o8 -fsequential -b8 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kW -t64 -s90 -dE -o16 -fsequential -b8 -BH -LS Testfile.dat >>64KB_Cluster_Test.txt

Rem 64KB顺序写sqlio -kW -t8 -s90 -dE -o1 -fsequential -b64 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kW -t16 -s90 -dE -o1 -fsequential -b64 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kW -t32 -s90 -dE -o1 -fsequential -b64 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kW -t64 -s90 -dE -o1 -fsequential -b64 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kW -t64 -s90 -dE -o2 -fsequential -b64 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kW -t64 -s90 -dE -o4 -fsequential -b64 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kW -t64 -s90 -dE -o8 -fsequential -b64 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kW -t64 -s90 -dE -o16 -fsequential -b64 -BH -LS Testfile.dat >>64KB_Cluster_Test.txt

Rem 8KB顺序读sqlio -kR -t8 -s90 -dE -o1 -fsequential -b8 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kR -t16 -s90 -dE -o1 -fsequential -b8 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kR -t32 -s90 -dE -o1 -fsequential -b8 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kR -t64 -s90 -dE -o1 -fsequential -b8 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kR -t64 -s90 -dE -o2 -fsequential -b8 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kR -t64 -s90 -dE -o4 -fsequential -b8 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kR -t64 -s90 -dE -o8 -fsequential -b8 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kR -t64 -s90 -dE -o16 -fsequential -b8 -BH -LS Testfile.dat >>64KB_Cluster_Test.txt

Rem 64KB顺序读sqlio -kR -t8 -s90 -dE -o1 -fsequential -b64 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kR -t16 -s90 -dE -o1 -fsequential -b64 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kR -t32 -s90 -dE -o1 -fsequential -b64 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kR -t64 -s90 -dE -o1 -fsequential -b64 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kR -t64 -s90 -dE -o2 -fsequential -b64 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kR -t64 -s90 -dE -o4 -fsequential -b64 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kR -t64 -s90 -dE -o8 -fsequential -b64 -BH -LS Testfile.dat >>64KB_Cluster_Test.txtsqlio -kR -t64 -s90 -dE -o16 -fsequential -b64 -BH -LS Testfile.dat >>64KB_Cluster_Test.txt

Note:如果您对当前要测试的磁盘性能比较了解,您可以将每组测试行数控制在4-5行甚至更少,以此来节省测试时间,比如就将  -t 为8、16的测试行删除

 

待所有的测试跑完后,我们使用SqlioAnalyzer这个工具来导入测试结果4KB_Cluster_Test.txt和64KB_Cluster_Test.txt,下载地址:http://www.meauxsoft.com/SqlioAnalyzer.html

安装后,打开 File→Open,找到 txt路径,导入:

点击Export按钮,将数据导出为CSV文件
然后只留下每一组中测试值最高的行:

整理后得到:

 

前面提到过,对于随机IO读写操作,我们着重关注单位时间内的IO操作次数 IO/Sec;

对于顺序IO读写操作,我们着重关注单位时间内的吞吐量 MB/Sec

上图中已经把需要关注的内容用颜色加以区分,接下来为了使展示更易懂,我制作了直方图:

 

图中可以很直观的看出,除了sequential_Write_64KB时簇为64KB比8KB稍低外,其它情况下,64KB总是比默认值4KB要有优势。

 

由此也证明了正如SqlioAnalyzer中提示的那样:

当你格式化磁盘的时候,请指定簇大小为64KB!!

另外NTFS格式的单独的磁盘,对齐方式现在总是为1024KB了,即图中所示的StartingOffset

 

测试总结:

      实践是检验真理的唯一标准,您今后在为SQL
Server创建磁盘的时候,还使用默认的4KB卷簇大小吗?

       

时间: 2024-10-29 14:39:31

SQL Server 服务器磁盘测试之SQLIO篇的相关文章

SQL Server 2005性能测试之CPU篇(编译与重编译)

如果在没有额外复杂条件下突然出现CPU瓶颈,有可能是因为没有优化查询,错误的数据库配置,或者是数据库设计上的原因和硬件资源不足引起.在决定采用增加CPU数量或者使用更快速的CPU之前,应该先检查消耗CPU资源最多的操作是否能够被优化. 如果发现性能计数器Processor: % Processor Time的值很高,每一个CPU的% Processor Time都超过80%时,可视为出现CPU瓶颈.也可以通过视图sys.dm_os_schedulers监视SQL Server的进程调度(sche

SQL Server 服务器磁盘测试:SQLIO

数据库调优工作中,有一部分是需要排查IO问题的,例如IO的速度或者RAID级别无法响应高并发下的快速请求.最常见的就是查看磁盘每次读写的响应速度,通过性能计数器Avg.Disk sec/Read(Write)我们可以很直观的看到他们.不同的业务,繁忙程度也不同,需要什么样的IO做支撑?难道都用最高配的IO去配置硬件吗?能否通过一些经验和基线来判断当下磁盘环境是否能满足需求呢? 手上有4块 Inter SSD DC S3500 Series 600GB硬盘做成的RAID1两块,我们就拿它来练练手吧

SQL Server调优系列基础篇

原文:SQL Server调优系列基础篇 前言 关于SQL Server调优系列是一个庞大的内容体系,非一言两语能够分析清楚,本篇先就在SQL 调优中所最常用的查询计划进行解析,力图做好基础的掌握,夯实基本功!而后再谈谈整体的语句调优. 通过本篇了解如何阅读和理解查询计划.并且列举一系列最常用的查询执行运算符. 技术准备 基于SQL Server2008R2版本,利用微软的一个更简洁的案例库(Northwind)进行解析.  一.区别不同的运算符 在所有T-SQL语句在执行的时候,都会将语句分解

1. SQL Server服务器监控实现方法

原文:1. SQL Server服务器监控实现方法 对于服务器的监控,和对数据库的监控,很少有合二为一的工具,如果有的话,一般是付费软件,或者自行开发的工具.所以如果不想购买软件,也不想花精力去开发的话,可以结合一些免费/开源的工具.自定义脚本,来完成对数据库服务器的监控. 一. 第三方工具1. 开源工具比如:CACTI,Nagios,Zabbix等等,除了主机外,对于网络上的其他设备,比如路由器等也可以一并监控.以CACTI为例(CACTI可以在windows下安装),服务器监控的图示:(1)

SQL Server调优系列进阶篇(如何索引调优)

原文:SQL Server调优系列进阶篇(如何索引调优) 前言 上一篇我们分析了数据库中的统计信息的作用,我们已经了解了数据库如何通过统计信息来掌控数据库中各个表的内容分布.不清楚的童鞋可以点击参考. 作为调优系列的文章,数据库的索引肯定是不能少的了,所以本篇我们就开始分析这块内容,关于索引的基础知识就不打算深入分析了,网上一搜一片片的,本篇更侧重的是一些实战项内容展示,希望通过本篇文章各位看官能在真正的场景中找到合适的解决方法足以. 对于索引的使用,我希望的是遇到问题找到合适的解决方法就可以,

搞定C#中列举出局域网中的SQL SERVER服务器

server|服务器 用先添加SQLDMO对象的引用,SQLDMO是COM对象,不是.NET对象下面这个函数返回局域网中的SQL SERVER服务器的列表数组.private string[] Getallservers()        {            string[] servers;            SQLDMO.NameList num;            SQLDMO.ApplicationClass rs=new SQLDMO.ApplicationClass()

在非SQL客户端使用命令行方式定期连接SQL Server服务器

在非SQL客户端使用命令行方式定期连接SQL Server 服务器并模拟用户查询操作,同时输出信息内容 一个很长的标题,实现的功能就是尽量使用非人力的方式模拟人去做一件事情,为了便于记录,将他们输出成文件方便查阅. 图形界面方式,使用微软自己的ConnMaker.exe,或者Microsoft 数据连接(系统自带,建立一个后缀为.udl的文件即可体验),进行可视化的操作. Figure 1使用ConnMaker.exe创建的可视化连接查询实例 不过这次用户的需求是因为他们在尝试进行连接到SQL服

远程连接sql server服务器的方法

如果需要远程连接sql server 服务器,应该用什么方法呢?下面就将教您远程连接sql server服务器的解决方案,供您参考. 一 看ping 服务器IP能否ping通. 这个实际上是看和远程sql server 2000服务器的物理连接是否存在.如果不行,请检查网络,查看配置,当然得确保远程sql server 2000服务器的IP拼写正确. 二 在Dos或命令行下输入telnet 服务器IP 端口,看能否连通. 如telnet 202.114.100.100 1433 通常端口值是14

SQL Server调优系列基础篇(常用运算符总结)

原文:SQL Server调优系列基础篇(常用运算符总结) 前言 上一篇我们介绍了如何查看查询计划,本篇将介绍在我们查看的查询计划时的分析技巧,以及几种我们常用的运算符优化技巧,同样侧重基础知识的掌握. 通过本篇可以了解我们平常所写的T-SQL语句,在SQL Server数据库系统中是如何分解执行的,数据结果如何通过各个运算符组织形成的. 技术准备 基于SQL Server2008R2版本,利用微软的一个更简洁的案例库(Northwind)进行解析. 一.数据连接 数据连接是我们在写T-SQL语