如何定期清理数据库中的无效数据?

企业的数据库在运行相当长一段时间后,都会出现无效数据的堆积,这些数据包含了过时、重复、错误、缺失(空字段)的数据,长期占据着宝贵的数据库空间。而在上云热潮的推动下,绝大多数企业已经将他们的业务数据和服务迁移到了云端。这种转变为企业带来更大灵活性的同时,也带来了管理和维护无效数据的挑战。

拿笔者公司的数据库来说,通常数据库的空间使用率告警阈值设置为 85%,到达该阈值就会触发告警,然后就需要检查是否有无效数据可清理,如果没有,那就需要申请对数据库磁盘进行扩容。

公司的这个流程,其实也是很多企业的数据库空间管理流程,随着业务发展,存储空间告急,告警的频率必然越来越频繁,并且出于成本考虑,也无法持续无休止地购买存储空间。因此,检查和清理无效数据就成了提升数据库存储空间的有效手段,同时也可以避免因为无效数据的堆积引发的一系列数据库性能问题。

清理无效数据的有效方案

对于业务数据本身而言,它可能并不是长期有效的,我们需要把过期的历史数据从业务库中清理出来,保存到其他数据库实例进行长时间存储,同时在业务库中删除这部分数据以空出空间存储新的业务数据。

整体的方案有了,如何去执行呢?如果仅仅是通过人肉检查和清理,那将耗费大量的时间,并且可能会带来一些失误,导致误删重要数据。最重要的是,清理无效数据是一项周期性的任务,我们需要让这项任务每隔一段时间自动化地去执行,让存储空间源源不断地被空出来。

看上去复杂,实则一点也不简单,但是如果用 NineData 的数据归档功能就可以轻松搞定。

简单演示下配置方法

1. 首先,我们要确保需要归档的表中有时间字段。这一点很重要,系统需要基于这个时间字段来判断数据是否需要归档。建议每张表的设计中都添加如下两个字段,有利于数据归档和数据订正等场景,提高表的可维护性。

`created_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'

2. 创建归档任务,选择归档+清理作为归档策略,选择源和目标数据源(长时间存储用),频率选择周期执行,并选择自动执行任务的周期和启动时间。


3. 选择需要进行归档的表名和目标表名,目标表名为存放归档数据的表;时间字段是归档数据的判断依据,例如订单产生时间等;保留天数即选择需要归档多少天以前的数据,如果需要归档一年以前的数据,就在这里输入 365。


4. 该功能还支持设置过滤条件,只有符合过滤条件的数据才会被归档。单击映射与过滤,在数据过滤条件中输入运算表达式即可。在下图的场景下,只有 dept_no = 0 的行会被归档。


5. 单击创建任务后,就进入审批流程阶段,系统会先对任务进行预检查,审批通过后就可以执行归档任务了。


总结

根据上面的流程配置完成后,数据归档任务会基于配置的周期定期扫描数据库,找出满足归档条件的数据,并将其移动到归档存储中,然后再清理业务库中的已归档数据。这样,业务库中只保留活跃的、经常访问的数据,不仅提高了数据库的性能,还可以节省存储空间,降低存储成本。

对于性能影响方面的顾虑,笔者经过实际测试,发现 NineData 会根据主键索引和唯一索引自动分批执行任务,对于数据库的影响非常小。

仅需进行一次数据归档任务的配置,就可以实现数据库空间的自动化运维管理,再也无需手动干预,轻轻松松简化 DBA 的数据清理工作,同时还提高了数据库操作的合规性,帮助企业实现降本增效,何乐而不为呢?

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Ingress 基于URL路由多个服务

文章目录 前言一、基于请求地址转发不同应用的pod1.创建一个nginx的pod和一个apache的pod及其各自的service2.创建ingress实现一个地址两个path分别访问nginx和apache3.验证根据域名web2.study.com的两个路径/foo和/bar来访问到不同的pod4.分别在nginx和apache的pod里创建网站目…

张驰咨询为领益智造打造精益六西格玛管理体系,助力苹果全球供应链优化

近日,领益智造精益六西格玛项目在总部启动,作为领益智造精益六西格玛管理战略合作伙伴,张驰咨询精益六西格玛咨询顾问团队已进驻领益智造总部,指导学员项目选择。作为管理创新的重要举措,领益智造在中国各大区超过10个…

1.MongoDB的特点与应用场景

什么是 MongoDB ? MongoDB 是基于 C 开发的 NOSQL 开源文档数据库 ,是最像关系型数据库的 nosql,功能也是最丰富的 nosql,它具有所以的可伸缩性,灵活性,高性能,高扩展性的优势。 大致有如下特…

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:Refresh)

可以进行页面下拉操作并显示刷新动效的容器组件。 说明: 该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 子组件 支持单个子组件。 从API version 11开始,Refresh子组件会跟随手势下拉而下移…

适口性猫粮哪个牌子肉源好性价比高?主食冻干性价比排行前十分享

随着科学养猫知识的普及,主食冻干喂养越来越受到养猫人的青睐。主食冻干不仅符合猫咪的饮食天性,还能提供均衡的营养,有助于维护猫咪的口腔和消化系统健康。然而,许多猫主人在选择主食冻干产品时感到迷茫。本文将深入探讨如何为猫…

前端基础篇-快速了解 Vue 前端框架(Vue 指令)

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 Vue 概述 2.0 Vue 指令 2.1 指令 - v-bind 2.2 指令 - v-model 2.3 指令 - v-on 2.4 指令 - v-if、v-else-if、v-else 2.5 指令 - v-show 2.6 指令 - v-for 3.0 生…

软件测试工程师教你如何做好职业发展规划

今天将为大家带来一篇关于软件测试工程师职业生涯阶段发展方向分析的文章,准备做测试人员和正在做测试的小伙伴们,我们一起来看一看吧。由于新时代下国内软件测试行业目前的发展迅速、需求旺盛,在国内的软件测试职位晋升一般要比国外快&#…

2024最全电商API接口 高并发请求 实时数据 支持定制 电商数据 买家卖家数据

电商日常运营很容易理解,就是店铺商品维护,上下架,评价维护,库存数量,协助美工完成制作详情页。店铺DSR,好评率,提升客服服务等等,这些基础而且每天都必须做循环做的工作。借助电商A…

宝马发生数据泄露事件,涉及中国、欧洲和美国三地

据悉,汽车巨头宝马的云存储服务器发生配置错误,导致包含敏感信息的私钥和内部数据泄露。 研究人员 Can Yoleri 在例行扫描时发现,宝马在微软 Azure 上的开发环境存储服务器被错误配置为公共访问,本应设置为私有。该存储服务器包含…

移动性模拟助力现实世界实现更优交通决策

什么是移动性模拟? 每天,数以百万计的人在各个地区、城市和空间中流动。移动性模拟将真实世界的数据与模型相结合,揭示人们通常选择的路程,从而帮助了解这些流动。 移动性受小汽车和公共汽车、公路、火车、桥梁、隧道等资产影响…

Axure RP基础功能详解,让你一目了然!

当我们谈论交互设计和用户体验时,axurerp的名字不容忽视。本文将全面解释什么是axurerp,以及如何帮助设计师和开发人员创建高度互动的原型,作为一个强大的工具。 什么是Axure rp? axurerp是一种专业的快速原型设计工具&#xff…

尝试搭建谷粒商城 记录(三)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/weixin_44190665/article/details/121043585 ———————————————— 版权声明&#xff1…

最新WooCommerce教程指南-如何搭建B2C外贸独立站

WooCommerce是全球最受欢迎的开源电子商务平台之一。它基于WordPress建站,只需一键安装即可使用。该平台提供了丰富的功能,包括产品发布、库存管理、支付网关和运输发货等,可以帮助搭建各种类型的电子商务网站。相比其他竞争对手,…

【Spring整合QQ个人邮箱】

整合腾讯邮箱&#xff0c;首先需要在腾讯邮箱上开启服务&#xff0c;获取到授权码&#xff1b; 获取步骤如下&#xff1a; 进入设置 进入账号页 开启协议获取授权码 JavaMailSender配置 引入依赖 <!--邮件发送依赖--> <dependency><groupId>org.spring…

练习unittest+Fixture实现

练习01 创建⼀个⽬录 case, 作⽤就是⽤来存放⽤例脚本,在这个⽬录中创建 5 个⽤例代码⽂件 , test_case1.py使⽤ TestLoader 去执⾏⽤例 将来的代码 ⽤例都是单独的⽬录中存放的 test_项⽬_模块_功能.py test_case1.py # 1. 导包 unittest import unittest # 2. 定义测试类, 只…

Qt学习--QT Creator使用基本介绍

话不多说&#xff0c;直接开搞&#xff0c;笔者用的是5.12.9版本 双击打开QT Creator 显示这个界面 新建工程 然后出现这样的界面 点击运行 就弹出了一个这个&#xff0c;空的&#xff0c;因为我们啥也没写

集成学习 | 集成学习思想:Bagging思想

目录 一. Bagging思想1. Bagging 算法2. 随机森林(Random Forest)算法 在正文开始之前&#xff0c;我们先来聊一聊什么是集成学习&#xff1f; 集成学习是一种算法思想&#xff1a;将若干个弱学习器分组之后&#xff0c;产生一个新的学习器 弱学习器指预测误差在50%以下的学习器…

快速文字快闪pr模板视频制作素材

Premiere快速文字开场视频模板(pr快闪模板)下载。 项目特点&#xff1a;全高清分辨率&#xff0c;适用于任何字体&#xff0c;包含帮助文件&#xff0c;适用于Premiere Pro 2021及以上版本。 来自&#xff1a;pr模板网&#xff0c;免费下载地址&#xff1a;https://prmuban.com…

JavaScript进阶:js的一些学习笔记-原型

文章目录 js面向对象1. 原型2. constructor属性3. 对象原型4. 原型继承5. 原型链 js面向对象 构造函数 属性和方法 function Person(name,age){this.name name;this.age age;this.play ()>{console.log(玩&#xff01;);} } const a new Person(1,12),b new Person(2…