分享改进 高性能通用分表归档存储过程

简介:

因高层突然变卦 要以存储过程来完成订单的拆分归档工作 所以虫子的同步工具先暂时搁置一段时间。


存储过程的方案刚完成,先晒下性能 测试环境 总共33张表 数据量如下

 

归档表初始化

先看批次500条的性能

看看运行时间

2.342秒 !!!!!

看看我们插入了的数据是否准确

OK源表的数据是500 或许大家对这组数据不以为然 但是你要明白 在33张特大表中进行的操作 并且之间层级关联 各种安全 容错处理

再清除一下 试试5000条

70秒 有木有 有木有 比预想的性能要差一些 因为5000条所涵盖的事务太大

数据还是很完美

总的来说 这样的性能对于这样的应用场景 应该没有多少老大会不满意了


 原理先简单阐述一下 源码里的注释非常详细

源表:一般是指同步 归档等的主表 demo中以订单头表为例

一级表:以源表为关联表的数据表

二级表:以一级表为关联表的数据表

...

异常表:容错处理 用来存放异常数据 如果当期批次出错 则将本次批次源表关联键信息入库 下一批次则过滤这些数据再执行

减少IO的操作次数 用游标循环源表来关联一级表 二级表等 是很错误的方案

理清层级关系 源表过滤数据副本化 如果一级表关联的操作次数比较多那么可以模仿源表操作 以临时表取代物理表 如果表关联的操作次数不多可以直接生成数据过滤池

源码下载:点击这里

开源相关:点击这里 

有问题可以留言或者右上角点击QQ

 

 



本文转自 熬夜的虫子  51CTO博客,原文链接:http://blog.51cto.com/dubing/712456


相关文章
|
4月前
|
存储 SQL 关系型数据库
PolarDB这个sql行存和列存性能差别好大 ,为什么?
PolarDB这个sql行存和列存性能差别好大 ,为什么?
109 0
|
2月前
|
关系型数据库 分布式数据库 数据库
PolarDB产品使用问题之底层是否会自动对数据库表进行分区分表
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
SQL 关系型数据库 数据库
一文熟悉PolarDB-PG 分区表核心特性
在 PolarDB-PG 数据库中,分区表 (Partitioned Table) 使您能够将非常大的表分解为更小且更易于管理的部分,这个部分称为分区 (Partition) 。 每个分区都是一个独立的对象,具有自己的名称和可选的存储特性。本文首先简单的介绍了分区表策略以及它的优势特点,然后介绍了PolarDB-PG 分区表支持的查询优化特性,最后介绍了分区表上的本地索引和全局索引,从而帮助用户对PolarDB-PG 分区表有一个全面的了解。
82754 11
|
4月前
|
缓存 数据库 开发者
构建高性能的数据库查询语句优化策略
数据库查询是开发过程中常见的性能瓶颈之一。本文将介绍构建高性能数据库查询语句的优化策略,包括索引的设计与使用、查询语句的编写技巧、连接的优化等方面,帮助开发者提升数据库查询的效率和响应速度。
|
4月前
|
存储 数据采集 缓存
TDengine 企业级功能:存储引擎对多表低频场景优化工作分享
在本文中,TDengine 的资深研发将对多表低频场景写入性能的大幅优化工作进行深入分析介绍,并从实践层面剖析本次功能升级的具体作用。
90 2
|
4月前
|
SQL 存储 缓存
如何通过优化SQL查询提升数据库性能
SQL查询是数据库的核心功能之一,对于大型数据量的应用程序来说,优化SQL查询可以显著提升数据库的性能。本文将介绍如何通过优化SQL查询语句来提升数据库的性能,包括索引优化、查询语句优化以及其他一些技巧。
|
4月前
|
SQL 缓存 中间件
数据库为什么都设计为单表
数据库为什么都设计为单表
55 0
|
JSON 关系型数据库 分布式数据库
|
存储 缓存 关系型数据库
高性能 MySQL(五):设计表结构时,如何选择数据类型会更高效?
MySQL 支持的数据类型有很多,在设计表结构时,选择正确的数据类型可以获得更高的性能。如果你还不知道如何选择,那么希望这篇文章能帮到你。
232 0
高性能 MySQL(五):设计表结构时,如何选择数据类型会更高效?
|
SQL 存储 NoSQL
基于 MySQL + Tablestore 分层存储架构的大规模订单系统实践-SQL 查询和分析
前言前面我们介绍了基于 MySQL + Tablestore 分层架构的订单系统。订单数据储存进入 Tablestore 后,用户可以使用 SDK 中的 API 访问数据,也可以继续使用 SQL 访问 Tablestore 中的数据。Tablestore 提供了多种 SQL 的接入方式,客户可以通过 DLA 访问 Tablestore,也可以利用 Tablestore 自身对 SQL 的支持能力,
933 0
基于 MySQL + Tablestore 分层存储架构的大规模订单系统实践-SQL 查询和分析