查询非常慢,内存 cache与buffer 突然过大
查询十分慢,内存 cache与buffer 突然过大
场景
数据库压测人员发现统计查询十分慢。
进入服务 查看free,发现 cache/buffer 十分大。
执行
echo 3 > /proc/sys/vm/drop_caches
cache/buffer正常了。
但是查询还是慢
看到mysql的innodb_buffer_poll 的大小,小于 文件大小。造成了 大量的 文件被操作系统 cache。
提高 innodb_buffer_poll大小,ok了
随便说下 磁盘读写
公司给的 hdd盘,而且还是7200转,坑死了。
那么每秒的 iops是 7200/60=120.
innodb_page 大小是 16K
每秒随机读写是 120*16 = 1920K,最多也就2M。一小时也就7.2G
24G数据,需要读 3个多小时。
把24G数据加载到内存,只用了 573秒。
那么每秒循序读是 573秒
24*1024*/573 = 43M/S
这个速度还是无法接受。