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的时候,网站基本上不能访问。这个对数据库的 性能消耗非常大。
最终只留下你需要的数据。
说说我遇到的坑。
在文章和帖子 确认的过程中,发现了一批用户,恶意发了很多帖子,
不知道是通过什么途径跑进来的。
所以首先通过 用户表 (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的时候,网站基本上不能访问。这个对数据库的 性能消耗非常大。
相关文章推荐
- 折腾了几天的0构建LEMP-discuz论坛迁移+用户导入(php问题等各种问题)
- Discuz_X3.2_SC_UTF8---论坛迁移
- 折腾了几天的0构建LEMP-discuz论坛迁移+用户导入(php问题等各种问题) 推荐
- discuz x3.2论坛迁移方案
- 整合 phpwind discuz 论坛用户 思路及源码
- [公告]导入迁移时产生的数据
- discuz论坛 用户登录 后台程序代码
- discuz论坛 用户登录 后台程序
- 新手--Discuz!使用技巧如何防止用户在论坛恶意灌水?
- php下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
- discuz7.2 论坛动态的数据调用
- discuz论坛数据表结构
- 清理disuz垃圾用户信息SQL语句
- 清理Windows更新产生的垃圾
- 获取Discuz论坛登录用户名、用户组、用户ID等
- 网站与discuz的论坛进行整合,实现用户同步注册,单点登陆,同步删除用户,同步修改用户密码
- 在MDT2008的LTI模式中使用USMT迁移用户数据
- 由于mysql运行权限导致无法找到 Discuz! 论坛数据表! 的解决方法
- 动网:关于部分论坛用户发帖、回帖时报错“数据中含有非法字符。您的用户名并不存在,或者您的论坛密码错误,或者您的帐号已被管理员锁定。” 及“您没有发表新主题的权限”解决方法
- discuz论坛用sql语句批量插入测试数据(百万级别)