SQL优化前的检查

我们遇到SQL执行慢会本能地质疑SQL问题,但也有可能硬件或网络问题

window则通过资源监视器查看IO响应时间和网络状态

 

Linux则通过 iostat -d -x -k 1 10 #查看设备使用率(%util)、响应时间(await)

 

 rrqm/s:          每秒进行 merge 的读操作数目。即 delta(rmerge)/s

wrqm/s:         每秒进行 merge 的写操作数目。即 delta(wmerge)/s

r/s:            每秒完成的读 I/O 设备次数。即 delta(rio)/s
w/s:            每秒完成的写 I/O 设备次数。即 delta(wio)/s
rsec/s:         每秒读扇区数。即 delta(rsect)/s
wsec/s:         每秒写扇区数。即 delta(wsect)/s
rkB/s:          每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。(需要计算)
wkB/s:          每秒写K字节数。是 wsect/s 的一半。(需要计算)
avgrq-sz:       平均每次设备I/O操作的数据大小 (扇区)。delta(rsect+wsect)/delta(rio+wio)
avgqu-sz:       平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。
await:          平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
svctm:          平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio)
%util:          一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒)

如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈

最后就是索引重排减少索引碎片,即重新生成索引

 

posted @ 2021-11-30 19:33  oioele  阅读(38)  评论(0)    收藏  举报