当前位置: 首页 > news >正文

为什么不采用级联删除而选择软删除

在数据库设计中,如果涉及级联删除的问题,不要通过外键的方式来进行操作,需要使用事务的方式来进行操作,为什么不采用外键的方式主要有以下两点:

  1. 在数据库中,外键会关联主键,在主键进行删除的同时会导致相关的外键也会将数据进行删除,此时有一个很大的问题就是外键删除,外键删除会导致如果出现删除异常,会导致有错误数据,系统逻辑会有问题,所以在进行删除时必须要设计成放到一个事务中进行相关联的删除。
  2. 在使用外键删除时,删除主键会导致所有相关外键数据删除,此时会导致另一个严重问题是索引重建,这种是指级联删除时代价堪比索引重建,并非是重新构建表时的索引重建。

在数据库中,外键会关联主键,所以说在操作数据库的过程中,我们需要做到不要使用外键,因为越是大的系统对于性能的要求就更高,相应的如果数据库操作使用外键可能将磁盘io全部打满,导致系统性能下降,所以说在构建时不要使用外键这种情况,可以使用字段的方式进行删除。

级联删除的索引重建:

因为数据库存储是通过b+树来分页索引存储数据进行实现,每个索引页下面的空数据超过了50%,则会进行页合并,页合并会涉及后面整个子树结构的调整,其中在调整时为了保证不出错会出现数据库上锁,此时就不能进行数据库其他操作,就会显得数据库效能极差,用户体验感也差。而且在进行主键删除时会删除相关的数据,这些数据存在不同的页下面,就可能会让多个索引页进行调整。所以这种级联删除的操作成本非常高,而且不具备可控性。

所以我们在设计时就要采用软删除+定期清理的方式来处理这个问题!!!

数据库删除策略对比图:

为什么要采用软删除+定期清理呢?

  1. 软删除+定期清理的方式可控,在进行定期删除时可以根据脚本设定批量控制删除的数据量多少,这样能够防止一次性全部删除数据之后数据库的索引重构的代价。
  2. 定期清理的方式可以采用在业务不繁忙的时间段采用定时任务来进行实现,这样的话可以增强用户体验感,防止在高频使用时间段来进行删除导致进行索引调整后占用数据库资源。
  3. 减少锁的竞争,批量删除后可能会有部分索引重构,会有数据库操作锁的竞争,所以在定期清理的批量删除时,可以采用多批次删除,在每一次批量删除时进行sleep一小段时间,防止全流程占用,在单批量完成之后的sleep时间段可以进行其他数据库相关操作提高用户体验感。
  4. 软删除时需要放到事务中进行,因为这是一整个不可分割的完成的操作。
http://www.cnnetsun.cn/news/67569.html

相关文章:

  • 雷池 WAF vs React 高危漏洞:1 毫秒检测延迟,护住全栈业务安全
  • csp信奥赛C++标准模板库STL(3):list的使用详解
  • csp信奥赛C++标准模板库STL(2):deque的使用详解
  • LobeChat部署在Docker中遇到的问题及解决办法总结
  • AutoGPT在城市交通流量预测中的建模实验
  • AutoGPT镜像部署最佳实践:提升效率的关键一步
  • 5分钟快速验证:你的项目是否存在Gradle JVM风险
  • 快速验证航班暂停天数设置方案的原型工具
  • 电商后台系统如何用xm-select实现商品多选分类
  • Adaptive RAG实战:让大模型回答问题更准确的智能检索增强生成
  • AutoGPT打造自动视频剪辑师:素材选择+字幕生成
  • 5倍效率!AI秒解MyBatis参数异常
  • 传统调试vsAI辅助:解决pickle错误效率对比
  • MoE架构
  • C#内存加载dll和EXE是不是差不多,主要是EXE有入口点
  • DSP28335模型设计自动化代码生成与外设驱动库实战指南
  • 账号频繁被风控?一文教你做IP纯净度检测!
  • EVF8602-E-V009逆变器
  • 惠普M1005打印机驱动下载与安装指南:告别故障,高效办公不卡顿!
  • 戴西HPC高性能计算平台:为工业仿真打造的专业计算引擎
  • 上门家政小程序运营模式:3 个月用户破 5 万,复购率 75% 的赚钱逻辑
  • 18、深入解析域名服务(DNS):原理、架构与应用
  • 【李沐 | 动手实现深度学习】9-1 Pytorch神经网络基础
  • Miniconda安装后无法使用conda命令?原因与解决方法
  • LobeChat插件系统详解:如何扩展AI助手的无限可能?
  • 【中国科学报】深圳先进院揭示低剂量尼古丁延缓衰老机制
  • NIFA:基于噪声强度场感知网络的低剂量CT成像|文献速递-文献分享
  • 视频成品牌“通用语言”,集之互动推出AI创意视频服务助力营销内容升级
  • 从海报时代迈向短片时代,集之互动用AI品牌短片服务帮品牌讲更多“被看到的故事”
  • 全球视频广告支出突破1900亿美元,集之互动以AI广告大片服务瞄准“高可控”的品牌出片标准