kipway@outlook.com
2023.4.12
最近在测试对比几个常用的云服务商的云服务器时发现,在某迅云上半年前部署的一个测试服务器,只是不断写入仿真数据,没有数据使用者,使用索引扫描工具扫描标签历史数据时发现4K页面随机读取的IOPS只有50左右, 和广告宣称的SSD云盘3000IOPS相差太远,为此提交工单询问差异,无法得到满意回复(只是说一切正常,推荐某个的工具测试)。初步猜测是冷热数据的导致,特作以下实验来验证。
经过数据加热后,随机选择的标签历史扫描,IOPS都能达到3000的标称值,即使是24小时之前被被扫描过的数据也能保持热度。云服务器商的数据冷却策略无法查到资料,也许不同服务商之间还有差别。
估计云服务器商的云存储块设备为了节约成本,采用多级缓存,保证热数据IOPS,冷数据存储于最慢的机械硬盘存储阵列,如下示意图:
为历史数据保持热度,如果是关系库或者其他nosql数据库,无法从底层实现,只能从应用层实现(但会影响正常使用)。对于自己开发的实时数据库,完全可以在数据库层面实现数据的保温,还不影响应用层的使用。
在空闲时后台顺序读取扫描索引文件和数据文件,保持24小时内索引文件每个页面被读取一次,48小时或者72小时内历史数据页面被读取一遍。此功能预计在rdb2023.5版本中增加, 设置配置开关可开启关闭。