数据库优化之数据冷热分离

数据冷热分离:根据数据的访问频率和业务重要性,将数据分为冷数据和热数据,冷数据存储在存储在低成本、低性能的介质中,热数据存在高性能存储介质中。

热数据:经常被访问和修改且需快速访问

冷数据:不经常访问,对当前项目价值较低,但需长期保存

冷热数据区分方法

时间区分按数据的创建时间、更新时间、过期时间,确定一定时间段,之内的数据为热数据,之外为冷数据。如订单系统 1 年前的订单数据为冷数据,1 年内的订单数据为热数据。适合数据访问频率和时间强相关。

访问频率区分高频访问为热数据,低频访问为冷数据。如内容系统浏览量低的文章为冷数据,浏览量高的文章为热数据。这种方法需记录数据的访问频率,成本较高,适合访问频率和数据本身强相关。

数据冷热分离的优缺点

优点:热数据查询性能得到优化(用户绝大部分操作体验会更好)、节约成本(冷热数据不同存储需求,选择对应的数据库类型和硬件配置,如将热数据放 SSD ,将冷数据放 HDD )

缺点:系统复杂性和风险增加(需要分离冷热数据,数据错误的风险增加)、统计效率低(统计的时候可能需要用到冷库的数据)

冷数据的迁移

业务层代码实现:对数据进行写操作时,触发冷热分离逻辑,判断数据是冷还是热,冷数据就入冷库,热数据就入热库。这种方案影响性能且冷热数据的判断逻辑不太好确定,还需修改业务层代码,一般不会使用。

任务调度:可以利用 xxl-job 或者其他分布式任务调度平台定时去扫描数据库,找出满足冷数据条件的数据,然后批量地将其复制到冷库中,并从热库中删除。这种方法修改的代码非常少,非常适合按照时间区分冷热数据的场景。

监听数据库的变更日志 binlog :将满足冷数据条件的数据从 binlog 中提取出来,然后复制到冷库中,并从热库中删除。这种方法可不用修改代码,但不适合按照时间维度区分冷热数据的场景

冷数据的存储

冷数据存储要求:容量大,成本低,可靠性高,访问速度可以适当牺牲。

冷数据存储方案:

  • 中小厂:直接使用 MySQL/PostgreSQL 即可(不改变数据库选型和项目当前使用的数据库保持一致),比如新增一张表来存储某个业务的冷数据或者使用单独的冷库来存放冷数据(涉及跨库查询,增加系统复杂性和维护难度)
  • 大厂:Hbase(常用)、RocksDB、Doris、Cassandra

如果预算充足,使用 TiDB 分布式关系型数据库,一步到位。TiDB 6.0 正式支持数据冷热存储分离,可降低 SSD 使用成本。使用 TiDB 6.0 数据放置功能,可在同一个集群实现海量数据的冷热存储,将新的热数据存入 SSD,历史冷数据存入 HDD。

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
电商数据库冷热分离是指将数据分为冷库和热库,冷库用于存放走到了终态的数据和不经常使用的数据,而热库用于存放还需要修改和经常使用的数据。这种分离的目的是为了提高数据库的查询性能和降低存储成本。 使用冷热分离的情况包括:1) 用户能接受新旧数据分开查询,比如某些电商默认只让查3个月以内的订单,要想查询3个月以外的,就得访问其他的页面;2) 不会出现同时查询冷、热数据的需求。 实现冷热分离的思路可以采用以下方法之一: 1) 使用同一种数据库,如MySQL,但将冷库和热库分开存放,可以使用不同的表或者不同的数据库实例。 2) 使用不同类型的数据库,如将冷库存放在关系型数据库中,而热库存放在内存数据库或者分布式数据库中。 在实施冷热分离时,需要考虑一些问题,例如数据迁移、数据同步、查询优化等。具体的实现方式和问题解决方案需要根据具体的业务需求和技术架构来设计和调整。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [数据库调优--冷热分离](https://blog.csdn.net/L170311/article/details/128426595)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值