什么是冷热数据
Hot(热数据)
被频繁查询或更新
对访问的响应时间要求很高,通常在10毫秒以内
Cold(冷数据)
不允许更新,偶尔被查询
对访问的响应时间要求不高,通常在1~10秒内都可以接受
通过合理的冷热分离设计,可以达到的好处:
降低单表数据量,提升单表性能;
大量业务冷数据转冷存,存储成本可以降低很多,至少 50%+。
什么情况下使用冷热分离?
从冷热分离的定义我们可以知道当业务需求涉及到冷热数据,表数据量增长速度快或数据量较大时, 我们就该考虑是否使用冷热分离解决方案了。比如:
1)数据走到终态后,只有读没有写的需求。
2)用户能够接受新旧数据分开实现业务,比如查询新旧数据的时候分开操作。
冷热分离解决方案的不足:
冷热分离确实可以在某种程度上解决写读写数据慢的问题,但是仍然存在诸多不足。具体表现有:
1)用户查询冷数据速度依旧很慢。
2)由于冷数据多到一定程度,业务就无法再修改冷数据,因为数据量太大系统承受不住。
三种方式触发冷热数据分离:
修改写操作的业务代码:
在代码中实现,当有对数据进行写操作时,触发冷热分离。
建议使用场景:业务代码比较简单,并且不按照时间区分冷热数据时使用。
监听数据库日志binlog变更:
监听数据库变更日志binlog的方式来触发。
建议使用场景:业务代码比较复杂,不敢随意变更,并且不按照时间区分冷热数据时使用。
定时扫描数据库:
通过定时扫描数据库的方式来触发。
建议使用场景:在按照时间区分冷热数据时使用。