当前位置: 首页 > news >正文

电商项目_核心业务_数据归档

无论采用哪种存储系统,数据查询的耗时取决于两个因素

  • 查找的时间复杂度
  • 数据总量

查找的时间复杂度又取决于

  • 查找算法
  • 数据存储结构

        以Mysql存储的订单数据为例,随着业务的发展,数据量越来越大,对一些历史归档数据的查询,如果直接从DB查询就不太合适,比如"2021年订单"等等。这是就适合对数据进行归档。

数据要归档到哪里呢?

根据业务的需要,可以归档到另外的Mysql数据库,也可以归档到另外的存储系统。比如MongoDB、ES、HBase、ClickHousse

归档步骤:

1. 从Mysql中查询需要归档的数据

2. 将数据写入新的存储系统

3. 删除原Mysql数据

归档过程需要关注的问题:

1. 能够随时暂停归档任务,随时开始归档任务

2. 能够记录归档任务的执行状态

3. 归档任务不能影响正常的业务系统, 注意避免内存溢出

3. 要保证归档后的数据与原数据的一致性

归档具体实现(以迁移到MongoDB为例):

1. 从mysql分页查询数据, 查询条件有 id > ${maxOrderId}, 对应MongoDB记录的已迁移的最大orderId.

select * from ${orderTableName} o 
left join ${orderItemTableName} ot 
on o.id = ot.order_id
where o.id >= #{maxOrderId} and o.gmt_create< #{gmtCreate} 
order by id limit #{limit}

2. 数据写入MongoDB, 另外,MongoDB记录写入的最大orderId(orderId增序), 两个操作在一个事务中。

3. 删除mysql迁移的这批数据

<delete id="deleteMigrateOrders">delete from ${orderTableName} oWHERE o.order_id >= #{minOrderId} and o.order_id <= #{maxOrderId}order by id</delete>
  • 所以使用orderId作为条件,因为orderid是主键,查询更快.
  • 为什么要增加排序呢? 因为按照ID排序后, 每批删除的记录基本上都是ID连续的一批记录,

    由于B+树的有序性,这些ID相近的记录,在磁盘的物理⽂件上,⼤致也是存放在⼀起的,这样删除效率会⽐较⾼,也便于MySQL回收⻚。

4. ⼤批量删除数据,还要注意下,执⾏删除语句后,最好能停顿⼀⼩会,因为删除后肯定会牵涉到⼤量的B+树⻚⾯分裂和合并,这个时候MySQL的本身的负载就不⼩了,停顿⼀⼩会,可以让MySQL的负载更加均衡。

http://www.dtcms.com/a/301213.html

相关文章:

  • esp32-使用虚拟机开发-部署esp32的linux的环境
  • 如何关闭浏览器的迅雷图标 - 去掉浏览器左下角的迅雷图标 - chrome - 关闭迅雷检测
  • C/C++核心知识点详解
  • 剑指offer——搜索算法:数字序列中某一位的数字
  • Python操作Excel文件完整指南
  • 深度强化学习走向多智能体:从AlphaGo到智能车队
  • AtCoder Beginner Contest 416(A~D)
  • Leetcode 3629. Minimum Jumps to Reach End via Prime Teleportation
  • 由于主库切换归档路径导致的 Oracle DG 无法同步问题的解决过程
  • Java异常处理
  • 使用Python,OpenCV计算跑图的图像彩色度
  • 移植pbrt中的并行化到ray trace in weeks中
  • JVM内存结构
  • 零基础学习性能测试第五章:JVM性能分析与调优-JVM运行时内存区域介绍
  • 企业级数据架构构建之道
  • Unity FXAA
  • SQL注入SQLi-LABS 靶场less21-25详细通关攻略
  • Ubuntu普通用户环境异常问题
  • Linux->自定义shell
  • Acrobat 文件夹级脚本扩展表单功能
  • 【奔跑吧!Linux 内核(第二版)】第4章:内核编译和调试
  • 物联网安装调试-物联网网关
  • Python数据分析基础(二)
  • 两个函数的卷积
  • Kafka——消费者组消费进度监控都怎么实现?
  • 数字签名与数字证书
  • [leetcode] 图论算法(DFS和BFS)
  • Java“class file contains wrong class”解决
  • NX868NX872美光固态闪存NX873NX876
  • 疯狂星期四文案网第21天运营日记