压测前的影子表预热

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载自夜明的孤行灯

本文链接地址: https://www.huangyunkun.com/2019/01/25/shadow-table-preheating/



影子表和buffer pool

影子表并不是一个数据库的特殊功能,简单来说只是和原表结构一致但是名字不一样的普通表而已。所以创建影子表并不需要特别的操作,根据数据库中间件的支持规则创建就行了。

buffer pool是一个缓存数据和索引信息到内存的存储区,简单理解就是一个热数据区,或者叫缓存。具体的配置和计算比较复杂,但是总体而言,buffer pool命中率越高,性能越好。

预热的价值

因为影子表的数据是冷数据,这一部分数据并不在buffer pool中,需要逐步加载到内存中,因此需要预热过程。如果没有预热,会出现性能问题,但是这一部分并不是我们期待的,因为线上buffer pool中是包含了真实数据的。

执行预热

执行预热就是低流量的压测,让影子表的数据被访问到,并加载到buffer pool中。

其次就是执行预热前,需要先dump出线上的buffer pool,然后在压测完成重新load之前导出的buffer pool。

其他要点

预热的时候要注意因为buffer pool的空间是公用的,要注意不要让影子表的数据影响线上数据了。业务高峰期很难成功,因为线上的流量大,真实数据占用buffer pool的量比较大,预热数据的buffer很快就被线上请求踢出。

预热时要密切观察慢查询的量,有问题就需要降速或者停止,严重的情况还需要在DB上kill查询,并重新加载buffer pool。



本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载自夜明的孤行灯

本文链接地址: https://www.huangyunkun.com/2019/01/25/shadow-table-preheating/

《压测前的影子表预热》有1条评论

发表评论