SQL优化记录

测试环境慢SQL排查

9月30号,慢sql记录如下

image-20221011094145514

10月10号进行优化后,处理方式是使用EXPLAIN查看执行计划,然后进行分析,加上BTree索引,同时保证能命中索引,小表驱动大表,慢sql记录如下

image-20221011094640075

观察到当时数据库cpu占用接近100%,所以导致慢sql出现,

image-20221011094851868

探究cpu占用高原因

  • 当时数据库在进行备份

    cpu在上午10.10-10.50出现高占用,而备份的时间是在下午4点,所有排除

  • 数据库发生阻塞

    当时正在对表索引进行更新,并且从日志上看,打印的sql涉及到了加索引的表,同时刚好在进行大批量写入。

10月12号

观测不到慢sql,也没发现cpu异常占用,后面对数据添加一定量的数据后继续观察,统计日后数据量较大的表,然后插入100万条数据,中等数据量的表插入10万条。

10月13号

没有观测到慢SQL,CPU占用也在正常范围内,进一步准备jmeter压测,预计QPS在200-300

10月14号

使用aws的分布式压测平台,提交jmeter脚本进行压测,结果如下

image-20221102101914438

数据库的CPU和服务器的CPU使用率都在正常范围内,小于30%,瓶颈在服务器带宽。

image-20221102102329939

可以看到出网流量的峰值以及达到了服务器的上限,阿里云上可以根据并发的时间段动态设置服务器的带宽,以此来提高并发。