数据迁移 可能会面临的问题就是数据清洗、合并。
最终只留下你需要的数据。
说说我遇到的坑。
在文章和帖子 确认的过程中,发现了一批用户,恶意发了很多帖子,
不知道是通过什么途径跑进来的。
所以首先通过 用户表 (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的时候,网站基本上不能访问。这个对数据库的 性能消耗非常大。