侧边栏壁纸
博主昵称
WX

  • 累计撰写 13 篇文章
  • 累计收到 1 条评论

解决sql瓶颈思路

W●X
2021-09-04 / 0 评论 / 26 阅读 / 正在检测是否收录...

1、首先,我们在终端一执行 top 命令,分析系统的 CPU 使用情况:
2、 CPU 的嫌疑不大,那问题应该还是出在了 I/O 上。我们仍然在第一个终端,按下 Ctrl+C,停止 top 命令;然后,执行下面的 iostat 命令,看看有没有 I/O 性能问题:

# iostat -d -x 1

3、然后运行下面的 pidstat 命令,观察进程的 I/O 情况:

-d 选项表示展示进程的 I/O 情况

$ pidstat -d 1

4、接下来,还是在终端一中,执行 strace 命令,并且指定 mysqld 的进程号 27458。我们知道,MySQL是一个多线程的数据库应用,为了不漏掉这些线程的数据读取情况,你要记得在执行 stace命令时,加上 -f 参数:

# strace -f -p 27458

5、mysqld 的进程号是 27458,而 28014 只是它的一个线程。而且,如果你观察 一下 mysqld 进程的线程,你会发现,mysqld 其实还有很多正在运行的其他线程:

-t 表示显示线程,-a 表示显示命令行参数

$ pstree -t -a -p 27458
mysqld,27458 --log_bin=on --sync_binlog=1
...
  ├─{mysqld},27922
  ├─{mysqld},27923
  └─{mysqld},28014

6、lsof 把线程号换成进程号,继续执行 lsof 命令:

lsof -p 27458
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
​mysqld  27458      999   38u   REG    8,1 512440000 2601895 /var/lib/mysql/test/products.MYD
0

评论 (0)

取消