关系数据库MySQL版

数据迁移后sql执行速度慢

2024-06-18 03:33:33

场景描述

数据迁移至MySQL实例后,sql语句执行明显慢于原数据库。

原因分析

数据迁移至MySQL实例后,第一次执行的sql比在原数据库执行的性能差, 是由MySQL的buffer_pool机制决定的:sql语句第一次执行时,由于执行计划和查询数据等信息未加载至buffer_pool中,需要生成执行计划,并从磁盘加载数据,磁盘IO读写性能明显差于内存buffer_pool的读写性能,因为第一次执行速度会慢很多;sql第一次执行完后,读取的数据会被存放于内存的buffer_pool中,当第二次执行相同语句时,数据直接从buffer_pool中读取,因此数据的访问速度明显快于第一次从磁盘访问数据速度。

该场景中,在原数据库中执行sql读取的数据一般来源于buffer_pool,访问速度极快。当数据迁移到云上MySQL时,第1次执行同样的sql语句,需要从磁盘读取,就会访问较慢,当再次执行相同sql会从内存读取,执行速度就会恢复正常。

解决方案

该场景属于正常现象,在同一个数据库中,第1次执行sql时很慢,但再次执行由于数据已经被加载到buffer_pool中,执行速度会明显提升。


kcqfanHGvmD1