您的位置:首页 > 其它

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

2017-04-26 18:39 471 查看
数据迁移 可能会面临的问题就是数据清洗、合并。

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

说说我遇到的坑。

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

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

所以首先通过 用户表 (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的时候,网站基本上不能访问。这个对数据库的 性能消耗非常大。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  discuz 索引 数据迁移