V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Sumzibuyu
V2EX  ›  问与答

mysql 千万级表如何相互排重复?

  •  1
     
  •   Sumzibuyu · 2020-03-14 03:12:16 +08:00 · 1289 次点击
    这是一个创建于 839 天前的主题,其中的信息可能已经有所发展或是发生改变。

    数据库 A 有 1000w 数据

    数据库 B 有 200W 数据,AB 数据库结构一样,都存在字段 C

    本地测试环境,mysql8,16G 内存,就我一个用户

    请问,如何优化,才能快速在 A 表中标记 AB 两表中 C 字段重复的数据

    我测试了下,运行时间太长,需要优化,麻烦懂的大佬指点下啊

    Sumzibuyu
        1
    Sumzibuyu  
    OP
       2020-03-14 03:15:20 +08:00
    只需要这一次整理完就行 ,并非正式环境也需要这样
    D0n9
        2
    D0n9  
       2020-03-14 03:15:23 +08:00   ❤️ 1
    发一下你的方法呀
    运行时间太长主要瓶颈在哪。。cpu ? 内存?
    Mohanson
        3
    Mohanson  
       2020-03-14 03:23:15 +08:00 via Android
    布隆过滤器,O(N), 不存在比它还快的算法了。以前都是 64m 内存玩的,16g 能给你做到 9 个 9.
    luckyrayyy
        4
    luckyrayyy  
       2020-03-14 03:25:17 +08:00 via iPhone
    大数据去重➕允许有错误,考虑布隆过滤器
    sujin190
        5
    sujin190  
       2020-03-14 09:48:03 +08:00   ❤️ 1
    如果一次性的话,直接小表读出来存到 dict 里,大表顺序读判断就是了啊,16g 内存绰绰有余了,才一千万,又不是一千亿,不用想那么多吧

    需要重复做的话,这是结构设计问题,应该在源头来解决吧
    micean
        6
    micean  
       2020-03-14 09:49:21 +08:00 via Android
    字段 c 有索引吧,先试试简单的,每次从 a 表读 50 万数据,去和 b 表比较,然后把结果保存。别想着一次性干完。
    wanguorui123
        7
    wanguorui123  
       2020-03-14 11:10:45 +08:00 via iPhone
    Redis 哈希去重复
    Sumzibuyu
        8
    Sumzibuyu  
    OP
       2020-03-14 15:31:09 +08:00
    我对数据库不太懂,也是一次性任务,就想把这一次过去,目前我感觉 mysqld 的内存占用只有 200M+ cpu 20%
    Sumzibuyu
        9
    Sumzibuyu  
    OP
       2020-03-14 15:31:46 +08:00
    @Sumzibuyu 使用的语句也就是 update set in 很慢 很慢
    Sumzibuyu
        10
    Sumzibuyu  
    OP
       2020-03-14 15:50:21 +08:00
    mysql8 MyISAM
    sujin190
        11
    sujin190  
       2020-03-14 16:16:03 +08:00   ❤️ 1
    @Sumzibuyu #9 如果重复很多,估计还不如重新插入到个新表,然后删掉老表改表名称来的更快的吧,或许你可以生成好 sql,然后用数据导入 loaddata 试试看或许会快一点
    Sumzibuyu
        12
    Sumzibuyu  
    OP
       2020-03-14 16:42:37 +08:00
    @sujin190 我需要标记出重复的
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1151 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 19:47 · PVG 03:47 · LAX 12:47 · JFK 15:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.