discuz x3.2 论坛数据迁移 之 清理垃圾用户产生的数据

时间:2022-06-01 20:27:14

数据迁移 可能会面临的问题就是数据清洗、合并。

最终只留下你需要的数据。


说说我遇到的坑。


在文章和帖子 确认的过程中,发现了一批用户,恶意发了很多帖子,

不知道是通过什么途径跑进来的。

所以首先通过 用户表 (pre_common_member or pre_ucenter_members)过滤出这些用户来。

再从 文章 或者 主题 中 找出一批垃圾用户。


确定这些用户后,创建一个临时表,把这些用户都放进临时表(usernames),这里要注意了, 我只放了用户名,

应该把userid也放进去,因为很多表里面username字段是没有做索引的,根据username操作起来非常慢。


举个栗子:

我的 帖子表:pre_forum_post 是33w条记录,主题表是pre_forum_thread16w条记录。

SELECT * FROM pre_forum_post t1  WHERE   author  = 'xxx'; 

就这个sql,执行了56秒。


我的流程是:

1,根据 划定的用户范围 临时表 username ,清理 用户表 (pre_common_member or pre_ucenter_members) 数据。

2,根据 临时表 清理 主题表,再清理 帖子表。


由于 先清理了用户表,又没有存 userid,后面就惨了 ,122条删除的 sql 语句,每个delete 执行时间是 48 - 60秒;

耗费了将近2个小时。


so,数据量大的时候 一定要先 查看 是否 有索引,不要 觉得简单就开始 搞。


执行这些sql的时候,网站基本上不能访问。这个对数据库的 性能消耗非常大。