
# 冷热数据问题导致SQL执行速度慢
#### 场景描述
从自建MySQL或友商MySQL迁移到云上RDS for MySQL实例，发现同一条sql语句执行性能远差于原数据库。
#### 原因分析
同一条sql语句在数据库中执行第1次和第2次可能会性能差异巨大，这是由数据库的buffer_pool机制决定的：
- 第1次执行时，数据在磁盘上，称之为冷数据，读取需要一定的耗时。
- 读取完，数据会被存放于内存的buffer_pool中，称为热数据，读取迅速；对于热数据的访问速度极大的超过冷数据，所以当数据是热数据时，sql语句的执行速度会远快于冷数据。
该场景中，源端数据库中常用的数据一般是热数据，所以访问时速度极快。当数据迁移到云上RDS for MySQL时，第1次执行同样的sql语句，很可能是冷数据，就会访问较慢，但再次访问速度就会得到提升。
#### 解决方案
该场景是正常现象，在同一个数据库中，我们经常会遇到第1次执行一条语句时很慢，但再次执行就很快，也是因为受到了buffer_pool的冷热数据原理的影响。
