请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师 您好 我现在遇到删除大量数据的场景

老师 您好 我现在的场景是 想定时删除一个月之前的数据
数据库大概有七八个集合
每次都要删除将近3个G左右的数据
想问老师 这么大的数据量 有什么高效的方式吗
因为我现在每次删除都非常耗时

正在回答 回答被采纳积分+3

1回答

NavCat 2018-12-16 22:38:27

你现在是怎么删除的呀?大概用时多久?有没有实例代码以及数据结构,提供一下

0 回复 有任何疑惑可以回复我~
  • 提问者 码农小杨 #1
    数据结构  
    {
    	"_id" : ObjectId("5bcada2937edb352e5705b4f"),
    	"DBID" : NumberLong("3752641350"),
    	"IPADDR" : "114.115.135.118",
    	"DB_SID" : "ora12c01",
    	"USERNAME" : "APPUSER1",
    	"ETL_DATE" : "2018-10-20 15:32:54",
    	"record_id" : "136242##APPUSER1",
    	"SQL_ID" : "6v7qak8mabkwb",
    	"SQL_TEXT" : "select  /*+ ordered  full(a) full(b) use",
    	"SQL_TEXT_DETAIL" : "select  /*+ ordered  full(a) full(b) use_nl(a b)   */ count(*) count2 from  appuser1.objectname1_s a, appuser1.objectname1_s b\n where a.owner=b.owner and a.object_name=b.object_name  and a.object_type=b.object_type  "
    }
    
    
    现在我就是直接查找到就删除了 
    MongoHelper.remove(collection, {"ETL_DATE": {"$gte": day_start, "$lt": day_end}})
    
    其中MongoHelper为我自己写的封装的mongoclient 
    
    按照时间查找到 直接删除  现在跑一次全库要十几分钟
    回复 有任何疑惑可以回复我~ 2018-12-16 22:51:05
  • NavCat 回复 提问者 码农小杨 #2
    你自己封装的MongoHelper中的删除方法用的是哪个?deleteMany?remove?还是其他的方式?
    
    对于大量的删除操作,把你想要保留的文档复制到一个新的集合然后使用 db.collection.drop() 方法删除原集合或许会更高效。
    回复 有任何疑惑可以回复我~ 2018-12-16 23:14:49
  • 提问者 码农小杨 回复 NavCat #3
    我用的是 remove  
    感觉老是的思路是很好的 不过 我的集合是有实时写入的需求的 写入新的集合 就需要改集合名字  这样会影响写入。。
    回复 有任何疑惑可以回复我~ 2018-12-17 19:37:50
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号