首页 > 其他分享 >【冷热分离】

【冷热分离】

时间:2024-03-10 11:13:17浏览次数:29  
标签:方案 冷热 分离 线程 数据量 数据

参考:

冷热分离--表数据量大读写缓慢优化

https://www.bilibili.com/video/BV19j41137Wp?p=2&vd_source=898d5514be58985430a49b46d5500c13

 

 

一、什么场景使用冷热分离

 表数据量大读写缓慢,需优化,如果满足如下条件

1、数据走到终态后,只有读没有写的需求,比如订单完结状态
2、用户能接受新旧数据分开查询,比如默认只查3个月内订单,查询3个月前需访问单独页面

 

二、整体方案

 

  

三、冷热分离实现思路

1、如何区分冷热数据
  基于时间维度:比如3个月前,是冷数据
  基于状态维度:比如数据到了终态
  组合字段:下单时间小于3个月且订单状态已完结为冷数据,其他为热数据
  // 如果一个数据被标识为冷数据,业务代码不会对它写操作;不会同时存在读冷/热数据的需求

2、如何触发冷热数据分离

  方案1:直接修改业务代码  

  

  方案2:监听数据库变更日志

  

  方案3:定时扫描数据库

   

    方案对比:

   

 

4、如何实现冷热数据分离

 

需要考虑
1、一致性:同时修改多个数据库,如何保证数据的一致性   关注操作幂等性 

  

 2、数据量大,一次处理不完,需进行批量处理

  

 3、并发性

  假如数据量大到需要分到多个地方并行处理,

  在定时搬运冷如数据的场景,大到单线程批量处理都来不及

  多线程并发分离逻辑:

  1、如何启动多线程:

    方法1:启动多个定时器(定时器间隔较短)

    启动2:线程池

 

  

 

  2、某线程宣布某个数据正在操作,其他线程不要动

  

   3、某线程失败退出,结果锁没释放怎么办?

  

 

历史数据如何迁移

给所有历史数据加上标识 ColdFlag=WaitingForMove ,程序就会自动迁移

 

冷热分离方案的不足

 1、用户查询冷数据速度依旧很慢:假如查询冷数据用户只有1%,则没问题

 2、业务无法再修改冷数据:因为冷数据多到一定程度,系统承受不住,则冷数据可能还需要再分库

 

标签:方案,冷热,分离,线程,数据量,数据
From: https://www.cnblogs.com/clarino/p/18063868

相关文章

  • 读写分离 & 分库分表 & 深度分页
    什么是读写分离?见名思意,根据读写分离的名字,我们就可以知道:读写分离主要是为了将对数据库的读写操作分散到不同的数据库节点上。 这样的话,就能够小幅提升写性能,大幅提升读性能。一般情况下,我们都会选择一主多从,也就是一台主数据库负责写,其他的从数据库负责读。主库和从库之间会......
  • 6-12 奇偶分离排序(关注输出的空格处理)
    6-12奇偶分离排序(关注输出的空格处理)分数10作者王秀单位福州大学输入10个整数,完成一个函数使数据重新排序以后输出(也按空格分隔),要求:输出奇数在前偶数在后函数接口定义:voidsort_tarray(int*a);裁判测试程序样例:#include<cstdio>#include<iostream>#inclu......
  • 若依集成CIM(即时推送系统)实现将服务端修改为SpringBoot+Vue前后端分离版(文末见代码
    ​ 场景若依前后端分离版本地搭建开发环境并运行项目的教程:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/108465662 CIMGitee地址:https://gitee.com/farsunset/cimCIM项目是基于mina或者netty框架下的推送系统,我们平常使用第三方的推送SDK,如极光推送,百度......
  • Redis(主从复制、读写分离、主从切换)架构
    Redis的集群方案大致有三种:1)rediscluster集群方案;2)master/slave主从方案;3)哨兵模式来进行主从替换以及故障恢复。一、sentinel哨兵模式介绍Sentinel(哨兵)是用于监控redis集群中Master状态的工具,是Redis的高可用性解决方案,sentinel哨兵模式已经被集成在redis2.4之后的版本......
  • 合并与分离及分离借形
    合并ctrl+j(join)其中,当选择多个物体时,-Selected选中项,是橙红色-Active活动项,橙黄色合并的方向为:Selected->Active分离选中一部分顶点分离编辑模式下,Ctrl+L(Link)选中相连项。拆分选中一部分顶点拆分,但仍属于同一物体。分离借形一种常见的手法S......
  • 基于Vue(提供Vue2/Vue3版本)和.Net Core前后端分离、强大、跨平台的快速开发框架
    前言今天大姚给大家推荐一款基于Vue(提供Vue2/Vue3版本)和.NetCore前后端分离、开源免费(MITLicense)、强大、跨平台的快速开发框架,并且框架内置代码生成器(解决重复性工作,提高开发效率),支持移动端(iOS/Android/H5/微信小程序):Vue.NetCore。提高开发生产效率、避免996可以考虑试试这......
  • 前后端分离实践
    背景介绍原本前后端代码是分别独立的,在代码仓库里是两个仓库,但不知之前的开发人员出于何种考虑,在项目部署时,又将前端代码合并到了后端 前后端分离步骤总体思想前端打包后上传至Nginx服务器,后端打包后使用Docker容器部署安装Nginx容器目录结构docker-compose.yml文件v......
  • Linux离线部署SpringBoot前后端分离项目
    本文介绍了在内网下的纯离线环境中部署SpringBoot前后端分离项目,由于是个前端仔,并未接触过linux,在经历诸多错误和踩坑之后,终于部署成功(大哭),在此记录一下。工具选择选择合适的工具进行远程连接,如Xshell、Xftp、putty、Terminus等Xshell:连接远程服务器的命令终端Xftp:连接远......
  • 六、多文件分离式编译
    六、多文件分离式编译分离式编译意味着将项目程序分离到几个文件当中,每个文件独立编译,通常用于C++项目当中。1.文件组织结构下面以一个阶乘示例来说明,一个文件夹下面共有3个文件,分别是主文件,被调用的函数所在文件和头文件:fact.cpp是被调用的子函数所在文件:#include"Chapter......
  • 若依前后端分离版如何集成的mybatis以及修改集成mybatisplus实现Mybatis增强
    场景若依前后端分离版手把手教你本地搭建环境并运行项目:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/108465662SpringBoot中使用PageHelper插件实现Mybatis分页:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/136189442在上面搭建若依前后端分......