使用NineData OnlineDML:轻松处理大规模数据变更

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 在线DML,无锁变更数据,保障业务运行。NineData助你解决大批量数据变更难题。

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

执行大批量数据变更操作

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

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

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

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

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

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

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

我做的

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

开启 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 功能为笔者轻松解决了清理千万行级别过期数据时的业务表锁定问题,下次分享一个让业务库自动实现周期性数据归档,以及数据清理的方法,敬请期待。

目录
相关文章
|
4月前
|
缓存 数据库 索引
实时数仓 Hologres产品使用合集之需要定期更新一张线上频繁查询的表,该如何操作
实时数仓Hologres是阿里云推出的一款高性能、实时分析的数据库服务,专为大数据分析和复杂查询场景设计。使用Hologres,企业能够打破传统数据仓库的延迟瓶颈,实现数据到决策的无缝衔接,加速业务创新和响应速度。以下是Hologres产品的一些典型使用场景合集。
|
6月前
|
存储 缓存 算法
OceanBase历史数据归档方案技术原理解读
OceanBase历史数据归档方案技术原理解读
|
7月前
|
存储 资源调度 分布式计算
在分布式数据库系统中处理大规模数据
【4月更文挑战第24天】在分布式数据库系统中处理大规模数据
94 3
|
7月前
|
存储 大数据 数据管理
数据仓库(09)数仓缓慢变化维度数据的处理
数据仓库的重要特点之一是反映历史变化,所以如何处理维度的变化是维度设计的重要工作之一。缓慢变化维的提出是因为在现实世界中,维度的属性并不是静态的,它会随着时间的流逝发生缓慢的变化,与数据增长较为快速的事实表相比,维度变化相对缓慢。阴齿这个就叫做缓慢变化维。
340 2
数据仓库(09)数仓缓慢变化维度数据的处理
|
7月前
|
存储 SQL 分布式计算
TiDB整体架构概览:构建高效分布式数据库的关键设计
【2月更文挑战第26天】本文旨在全面概述TiDB的整体架构,深入剖析其关键组件和功能,从而帮助读者理解TiDB如何构建高效、稳定的分布式数据库。我们将探讨TiDB的计算层、存储层以及其他核心组件,并解释这些组件是如何协同工作以实现卓越的性能和扩展性的。通过本文,读者将能够深入了解TiDB的整体架构,为后续的学习和实践奠定坚实基础。
|
canal SQL 弹性计算
实时数据及离线数据上云方案
本实验通过使用CANAL、DataHub、DataWorks、MaxCompute服务,实现数据上云,解决了数据孤岛问题,同时把数据迁移到云计算平台,对后续数据的计算和应用提供了第一步开山之路。
|
存储 数据采集 分布式计算
数据湖架构的优势与挑战:数据存储和分析策略
随着大数据时代的到来,数据湖架构逐渐成为许多企业进行数据存储和分析的首选方案。数据湖是一种用于存储大量原始和结构化数据的中心化存储库。在本文中,我们将深入探讨数据湖架构的优势和挑战,并介绍一些常见的数据存储和分析策略。
509 0
|
SQL 缓存 算法
实时即未来,车联网项目之将数据落地到文件系统和数据库【三】
批量写入需要使用的缓存对象 - BufferedMutator 写数据的原理将数据按批次写入到 BufferedMutator 对象中,按时间或者按大小写入。
243 0
实时即未来,车联网项目之将数据落地到文件系统和数据库【三】
|
数据采集 弹性计算 JSON
2.2离线同步能力介绍 | 学习笔记
快速学习2.2离线同步能力介绍
|
SQL 弹性计算 DataWorks
2.1实时同步能力介绍 | 学习笔记
快速学习2.1实时同步能力介绍
下一篇
DataWorks