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

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

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

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

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

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

        以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.xdnf.cn/news/16523.html

相关文章:

  • 计算机网络:(十二)传输层(上)运输层协议概述
  • 【测试报告】玄机抽奖系统(Java+Selenium+Jmeter自动化测试)
  • KNN 算法中的各种距离:从原理到应用
  • PandasAI连接LLM进行智能数据分析
  • Tkinter美化 - 告别土味Python GUI
  • 医疗AI语义潜空间分析研究:进展与应用
  • 2507C++,APC可以干的活
  • 第二阶段-第二章—8天Python从入门到精通【itheima】-138节(MySQL的综合案例)
  • 记录一次薛定谔bug
  • SpringAI入门及浅实践,实战 Spring‎ AI 调用大模型、提示词工程、对话记忆、Adv‎isor 的使用
  • goland编写go语言导入自定义包出现: package xxx is not in GOROOT (/xxx/xxx) 的解决方案
  • red靶机
  • zabbix-agent静默安装
  • AI编程自动化与算法优化实践指南
  • Oracle 19C RU 19.28 升级和安装
  • Spring Cloud 详解与搭建全攻略
  • MySQL的底层原理--InnoDB数据页结构
  • Java实现大根堆与小根堆详解
  • 53. 最大子数组和
  • 在 Windows 系统中实现 WinToGo 的 VHDX 文件切换使用的常见方法
  • 9.3 快速傅里叶变换
  • Cortex-M内核SysTick定时器介绍
  • [2025CVPR-图象合成、生成方向]ODA-GAN:由弱监督学习辅助的正交解耦比对GAN 虚拟免疫组织化学染色
  • 【Keepalived】高可用集群
  • 香港本地和国际金融科技应用
  • Javaweb————HTTP的九种请求方法介绍
  • RoPE:相对位置编码的旋转革命——原理、演进与大模型应用全景
  • 【micro:bit】从入门到放弃(六):示例蜂鸣器音乐、摇色子、光照强度、串口调试、麦克风
  • mac版SVN客户端
  • “Datawhale AI夏令营”「结构化数据的用户意图理解和知识问答挑战赛」1