V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
qwertyzzz
V2EX  ›  程序员

想问下 这种算投机取巧吗

  •  
  •   qwertyzzz · 90 天前 · 3835 次点击
    这是一个创建于 90 天前的主题,其中的信息可能已经有所发展或是发生改变。

    因为刚来这个公司 所以每做一个功能的时候基本都要看之前的代码,突然看到一个注释

    6b427c21389d7fb280f51bbde39daf1.png

    具体的就是更新那种关联关系的时候 比如 A 当前关联 1,2 ,3 后面更新后 A 关联 2,3,4 ;之前我还真像注释里说的一样 先删除 再添加,感觉除了自增键容易变大外 数据不大的情况下 感觉也没啥呀。。

    18 条回复    2021-09-09 13:34:11 +08:00
    leeshuai
        1
    leeshuai  
       90 天前
    创建时间,修改时间会变
    redeemer1001
        2
    redeemer1001  
       90 天前
    我也是在一个事务内先删除再添加…无并发的微小系统
    arvinsilm
        3
    arvinsilm  
       90 天前
    因为数据实际上没有发生变动。而这样操作会记录一次更新操作。对统计、监控、鉴权等等不友好。另外如 2L 所说,并发场景下可能会出现问题
    chenmobuys
        4
    chenmobuys  
       90 天前
    存在的就不删除
    coderluan
        5
    coderluan  
       90 天前
    感觉这哥们是没说服别人或者不敢说别人,然后跑注释里释放来了,这种行为本身就算投机取巧,要杜绝!
    Loku
        6
    Loku  
       90 天前
    先删后添,多了 IO 操作。
    angryfish
        7
    angryfish  
       90 天前
    个人觉得没啥
    NewYear
        8
    NewYear  
       90 天前
    先删后增,很多系统都是这样操作的,缺点嘛就是每次要传输所有数据和关联表的数据,可能还影响性能,但是比“对比差集”简单太多。
    2i2Re2PLMaDnghL
        9
    2i2Re2PLMaDnghL  
       90 天前
    git blame 一下看看是不是因为过去导致了问题
    littlewing
        10
    littlewing  
       90 天前
    1k 的 tps 无所谓,如果你有 1w,10w,100w 的 tps 那就不一样了
    zjsxwc
        11
    zjsxwc  
       90 天前
    “先无脑全删再重新添加”确实比“diff 出哪些要删哪些要加的”简单。
    前者容易实现,后者能做更多优化且节省资源。
    kisick
        12
    kisick  
       90 天前 via iPhone
    问题在于其他地方可能用到了这张表的 id,先删再增会导致其他地方保存的 id 失效
    Vegetable
        13
    Vegetable  
       90 天前
    @kisick 关系表的 ID 不应该被任何业务依赖,也不太可能出现被依赖的情况。

    看一下 Django ORM 的对多关系 Set 操作,可以选择是清空还是对比,同时提到了 race condition 的问题。
    应该说这是一种选择,而不是所谓投机取巧。

    https://docs.djangoproject.com/en/3.2/ref/models/relations/#django.db.models.fields.related.RelatedManager.set
    tonyli
        14
    tonyli  
       90 天前
    看了各位大佬的回答小弟不解..diff 不需要性能? 不需要 IO? 并发? 锁不住? 再不行乐观不住? 一定要删除? 晚上或者 IO 小的时候跑定时删除?
    sutra
        15
    sutra  
       90 天前
    // 3.

    在代码注释里写了个 3. 是什么意思?从什么 guideline 里复制来的?
    dwlovelife
        16
    dwlovelife  
       89 天前
    最主要的问题 你删除的数据事实上在数据库里是没有完全释放的 相当于无故添加了几行隐藏数据 然后页合并和页分裂的时候 也会受影响
    jamesye3980
        17
    jamesye3980  
       89 天前
    先按简单做,出问题再优化。
    mightofcode
        18
    mightofcode  
       88 天前
    没有 bug 就行
    不存在“最好的做法”
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1124 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 20:10 · PVG 04:10 · LAX 12:10 · JFK 15:10
    ♥ Do have faith in what you're doing.