清理线上系统的测试数据,使用 truncate 还是 delete

更新日期: 2025-03-10 阅读次数: 107 字数: 367 分类: MySQL

有个开发了一个多月的大赛报名系统终于要上线了。上线前有一项重要的任务就是清理 MySQL 数据库中的测试数据。

简单粗暴的所有表都 truncate 一遍是不行的。因为还有一些是配置项表,和数据字典表,清空了就白忙活了。所以,需要记录哪些表是可以清理的,哪些是不行。

😅 使用 truncate 还是 delete

清理前,还有一个重要的概念。就是究竟是用 truncate 还是 delete 来清理数据表。

印象中,好多年前遇到过这个问题,还被 truncate 坑过一次。因为如果部分表用 truncate,而关联表不用的话,会导致数据错乱。原因是 truncate 会导致主键自增 ID 重置,即重新变为 1。一旦其他关联关系表没有清理,就会导致数据混乱。所以,对于我的使用场景,用 delete 是合适的。

顺便咨询了一下豆包 AI,发现也支持深度搜索了,还能直接出对比表格,Nice,清晰又直观。

 truncate 对比 delete

📝 保留待清理表清单到项目文档中

存个档比较好,方便以后再次部署需要清理时使用。

微信关注我哦 👍

大象工具微信公众号

我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式