如何在不影响业务的前提下执行大批量数据变更操作?

相信很多 DBA 同学都碰到过这个问题:用一条 DML SQL 语句执行大批量数据更新或删除操作时(例如:定期删除过期的数据或清理无效的数据记录),如果不具备适当的索引,一旦单条 SQL 影响的行数过多,正常业务的写入操作被阻塞,可能引起业务波动,严重时可能导致业务不可用。

而正常情况下又不会因为这样的一次性操作去建立索引,为了避免对系统性能造成过大影响,我们通常采用存储过程或编写临时代码等方式,以分批处理这些庞大的数据集。

然而,由于单个的存储过程或代码只能对应一个需求,无法复用于其他新需求,因此,每次都需要临时修改或编写,同时还可能引入不确定性风险,所以在应对不同类型的数据更新需求时,我们需要更具弹性以及通用的方法。

介绍一下我们今天的备选方案,即通过“无锁”的方式实现数据变更,以允许其他并发的 DML,提升系统的并发性能。由于无锁结构变更叫 OnlineDDL,那我们姑且把它叫做 OnlineDML。

避免数据表阻塞,保障业务正常运行​

既然目的是防止一个大事务的 DML 操作导致的表阻塞,那么 OnlineDML 的核心需求就是将该大 DML 拆分成多个小批量变更的 DML 分批执行,确保在线业务的正常访问不受影响。这一点对于在线系统,尤其是在紧急情况下,是一项至关重要的保障。

说说笔者公司的大批量 DML 变更场景,我们需要清理订单表中 3 年前的历史数据,这个变更涉及千万行级别的删除操作,只用一条 DML 的情况下会对业务库造成较大影响,因此需要用到 NineData 的 OnlineDML 功能来实现无锁数据变更。

由于操作非常简单,他们也有较为详细的文档,我大致列一个操作流程:

我做的:​

1. 为目标需要进行大批量 DML 变更的数据源开启 OnlineDML 功能。

2. 通过 NineData 的 SQL 任务功能对数据源发起变更申请。

提示

这个工具有一个定时执行的功能,相当惊喜,可省了我不少事,把时间定在业务低峰期的半夜 3 点,晚上不用熬夜了。

NineData 做的:​

其实只要做这两个操作就完事了,剩下的就交给 NineData 搞定,大体上它会帮我做如下一系列的动作:

  1. 检测该 DML 语句需要扫描的数据行数。

  2. 发现扫描的数据行数超过预设的阈值,为该 DML 语句进行适当的拆分。

  3. 分批执行拆分后的 DML 语句,每个批次的变更行数基于我预先配置的值。

  4. 执行过程中同步分析数据库的压力,当检测到数据库压力过大,自动等待一段时间,以保障数据库性能。

体验感受​

一番操作下来,首先感受到的是 NineData OnlineDML 的界面简单明了。在 NineData 控制台中,通过几个简单的步骤配置 OnlineDML 相关规则,从设置 DML 语句扫描行数阈值到开启 OnlineDML 功能,再到配置分批大小和等待时间,一切都很丝滑。

而最重要的是使用效果,在清理将近 1000 万行数据的过程中,业务库没有任何明显的波动,毫无疑问,NineData OnlineDML 方案不费吹灰之力解决了大批量数据变更的痛点问题,为各类在线系统提供了更为灵活和通用的解决方案。

总结​

本次通过 NineData OnlineDML 功能为笔者轻松解决了清理千万行级别过期数据时的业务表锁定问题,下次分享一个让业务库自动实现周期性数据归档,以及数据清理的方法,敬请期待。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/421631.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从心理学角度看海外网红营销:品牌与消费者的心理互动

近年来,随着社交媒体的蓬勃发展,海外网红营销成为品牌推广的一种独特而有效的手段。这种新型营销方式不仅仅依赖于产品本身的特性,更加注重通过网红与消费者之间的心理互动来建立品牌形象,激发购买欲望。本文Nox聚星将和大家从心理…

SpringCloudConfig+SpringCloudBus+Actuator+Git实现Eureka关键配置属性热更新(全程不重启服务)

文章目录 前言1.痛点2.解决方案3.具体实现3.1搭建热配置服务3.2编写配置文件3.3搭建版本控制仓库3.4Eureka-Client引入以下依赖3.5Eureka-Client微服务编写以下配置bootstrap.yml提前加载3.6分别编写测试Controller3.7测试效果3.8下线场景压测 4.SpringCloudBus优化 前言 在上…

【数据库原理】(38)数据仓库

数据仓库(Data Warehouse, DW)是为了满足企业决策分析需求而设计的数据环境,它与传统数据库有明显的不同。 一.数据库仓库概述 定义: 数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持企业管理和…

网络通信(Socket/TCP/UDP)

一、Socket 1.概念: Socket(又叫套接字)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接协议,客户端的IP地址,客户端的端口,服务器的IP地址,服务器的端口。 一个Socket是一对IP地址…

第十回 朱贵水亭施号箭 林冲雪夜上梁山-FreeBSD/Linux 控制台基础操作

林冲被众庄客捉住,吊在门楼下,正被打时,柴进来了,赶快把林冲救下来。原来这是柴进打猎用的小庄子, 林冲就把火烧草料场一事跟柴进详细的说了。柴进说兄弟真是命运多磨难啊。林冲住了几日,恐怕连累柴进&…

Windows主机Navicat远程连接到Ubuntu18.04虚拟机MySQL

1. 在虚拟机上安装MySQL sudo apt-get install mysql-server sudo apt-get install libmysqlclient-dev 2. 检查安装 sudo netstat -tap | grep mysql 3. 查看默认密码 sudo cat /etc/mysql/debian.cnf 4. 用查看到的密码登录MySQL server,修改root用户的密码 …

Win11桌面路径改为其他盘的简单教程

Win11桌面路径改为其他盘的简单教程 ​ 在使用电脑的过程中,桌面文件夹是我们经常会使用到的地方,而默认情况下,桌面文件夹都会存放在系统安装盘的C盘上。随着时间的推移和文件的增多,C盘的磁盘空间可能会越来越紧张,…

短信平台搭建注意什么|网页版短信系统开发源码

短信平台搭建注意什么|网页版短信系统开发源码 短信平台是企业进行市场营销、客户关系管理和即时通讯的重要工具。为了确保短信平台的稳定运行和高效利用,以下是在搭建短信平台时需要注意的几个重要方面。 1. 需求分析:在搭建短信平台之前,需…

变分自编码器VAE模型与应用

变分自编码器(VAE,Variational Autoencoder)是一种深度学习模型,用于数据生成和特征学习。它结合了自编码器(autoencoders)和贝叶斯推断。 下面是VAE的详细解释: 自编码器(Autoenco…

wayland(wl_shell) + egl + opengles 最简实例

文章目录 前言一、ubuntu 上相关环境准备1. ubuntu 上安装 weston2. 确定ubuntu 上安装的opengles 版本3. 确定安装的 weston 是否支持 wl_shell 接口二、窗口管理器接口 wl_shell 介绍二、代码实例1.egl_wayland_demo.c2. 编译和运行2.1 编译2.2 运行总结参考资料前言 本文主…

[学习笔记]刘知远团队大模型技术与交叉应用L3-Transformer_and_PLMs

RNN存在信息瓶颈的问题。 注意力机制的核心就是在decoder的每一步,都把encoder的所有向量提供给decoder模型。 具体的例子 先获得encoder隐向量的一个注意力分数。 注意力机制的各种变体 一:直接点积 二:中间乘以一个矩阵 三:…

mybatisPlus注解将List集合插入到数据库

1.maven引入依赖&#xff08;特别注意版本&#xff0c;3.1以下不支持&#xff09; <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.3.1</version></dependency&g…