Java项目常用数据归档方式

sql归档

insert into 归档表 select * from待归档表,

这种归档方式速度极快,原因有五

1.无网络往返,数据在服务端直接从源表读取写入目标表,不需要将数据传回客户端,避免网络io,

2.最小化日志,在某些数据库中可以使用批量日志模式,比逐行insert产生的redo/undo日志少的多,

3.无解析优化开销,解析和执行计划只做一次,而逐行insert都要解析,

4.批量io,数据库引擎以大块单位读写,属于顺序io,远快于随机io,

5.无索引维护逐行代价,目标表的索引更新可以批量合并,而非逐行维护

手动分区归档

1.主要步骤

创建分区表,一般按照时间范围,

create table order(

id integer,

order_time timestamp,

...

)partition by range (order_time)

创建月度分区

create table order_2026_01 partition of order for values from(2026-01-01)to (2026-02-01)

需要定期创建分区表

归档旧分区

方式一,betach分区后导出归档

alter table order betach partition order_2026_01;

导出为文件存入冷库存

copy order_2026_01 to "/archive/order_2026_01.csv"

删除已归档分区

delete table order_2026_01,

方式二

betach后保留为普通表(仍在线但不算分区)

alter table order betach partition order_2026_01

4.临时挂载回查

alter table order attach partition order_2026_01 for values from (2026-01-01)to (2026-02-01)

优势:

1.归档快,秒级完成,整个分区操作,

2.无锁表

3.主库可控,旧分区可直接drop

4.回查方便

5.分区裁剪自动跳过不相关分区

相关推荐
Decay__10 小时前
12_MySQL InnoDB 内存与锁调优 —— Buffer Pool、redo log、隔离级别与锁等待
运维·数据库·sql·mysql·架构
苏宸啊14 小时前
MySQL(一)
数据库·mysql
2603_9696948515 小时前
JDBC 基础学习笔记:API 核心原理解析与 CRUD 代码实操
数据库·笔记·mysql·学习方法·database·sql注入
这个DBA有点耶15 小时前
库内语义构建 vs 外挂向量库:业务语义缺失,才是RAG“胡说八道”的根源
数据库·mysql·aigc
kobe_OKOK_16 小时前
mysql 开启 binlog 日志
数据库·mysql
这个DBA有点耶17 小时前
MySQL 8.0直方图:统计信息升级了,执行计划为什么还是选错?
数据库·mysql·代码规范
aiks_yuan1 天前
MySQL 深分页 LIMIT 越翻越慢怎么办:300 万行实测 OFFSET、延迟关联和 keyset 的耗时差距(MySQL 8.2)
mysql
Decay__1 天前
14_MySQL 高可用与容灾架构 —— MGR / InnoDB Cluster / Keepalived+VIP / 双主 / 读写分离 / 两地三中心
运维·数据库·sql·mysql·架构
Thanks_ks1 天前
MySQL 的索引是什么?用图书馆的目录讲明白
数据库·sql·mysql·索引·联合索引·explain·慢查询优化
.痞老板.2 天前
mysql初阶--增删改查操作
数据库·mysql