跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • mongodb 唯一索引重复数据问题请教
未分類
13 7 月 2020

mongodb 唯一索引重复数据问题请教

mongodb 唯一索引重复数据问题请教

資深大佬 : dtgxx 10

大佬们好,我用的 mongodb4.2,目前数据导入进去了,80 亿数据,导了很久。。然后在建联合唯一索引的时候,有数据重复,报错无法创建。。。

有没有什么好的方法可以建联合唯一索引,删了数据先建索引再重新导,实在太折腾太慢了。。。

大佬有話說 (9)

  • 資深大佬 : pupboss

    空表先创建索引,再想办法导入,唯一索引重复的就会报错了

  • 資深大佬 : tikazyq

    试一下把组合字段弄成一个组合键放在_id,直接插入就可以了,主键自动去重

  • 資深大佬 : Stypstive

    使用 MongoDB 的 Bulk Operation,每 5 万条插入一次很快的。不要用 save 或 insert 方法,太慢了。

  • 資深大佬 : holajamc

    借问一下 80 亿的数据查询效率如何呢?

  • 資深大佬 : aborigine

    建新表,加索引,旧表导入新表,删旧表

  • 資深大佬 : aborigine

    联合唯一不如把唯一索引的字段拼接以后取 hash 后单字段索引去重,有效降低索引大小及去重效率

  • 資深大佬 : Stypstive

    或者找出来重复的数据,删除了,再建索引。

    这是一个查找重复手机号的用户的数据的例子,你可以根据你业务改改。

    var p = [
    {
    $group: {
    _id: ‘$mobile’,
    count: {
    $sum: 1
    }
    }
    },
    {
    $match: {
    count: {
    $gt: 1
    }
    }
    }
    ]

    db.member_user.aggregate(p)

  • 主 資深大佬 : dtgxx

    谢谢大佬们
    @pupboss @aborigine 确实应该只能重新导了 mongo2.x 的版本还支持一个参数,目前那个参数废弃了
    @tikazyq @aborigine @Stypstive 直接从文件开了 50 个 import 进程导入的,大约 1 秒 40 万条,写代码自定义_id 方式试了一下,插入的性能实在太低了,所以就想建联合唯一索引了。
    @holajamc 目前插入 80 亿数据,因为每条数据字段比较少,占空间 700G 多,根据索引查询延迟在 50-80ms 还可以,就用的单台机器,没分片。

  • 資深大佬 : tikazyq

    @dtgxx 写代码插入肯定没有 native 快,用批量插入可能会快一些

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具