背景:
一个数据库应用将数据库从阿里云rds迁移到北京aws之后,发现所有的查询都会慢
分析:
挑了几个有问题的查询语句,对比了执行语句,索引、执行计划,发现执行计划,索引,建库语句都是一样的
难道数据库版本,服务器参数,数据库参数有问题?
aws的数据库版本为MySQL5.7,阿里云为MySQL5.6,另外aws rds在CPU,内存配置上比阿里云的更高。对比数据库参数也无明显差异。
难道是IO有问题,创建测试RDS,对北京AWS,海外AWS,阿里云的RDS分别做压力测试,发现性能方面:北京aws>海外aws>阿里云aws,排除了IO问题,最终show processlist,定位到该数据库有个定时任务在做大表聚合查询操作,该表大概有100多G,有几个查询,居然查询了2个多小时,还没有查询完毕,该操作严重污染了Buffer Pool,造成其他的查询数据,很快被置换出了内存。
参考:http://www.orczhou.com/index.php/2010/05/innodb-plugin-make-buffer-cache-scan-resistant/