昆仑弟子_面霸
08-11·后端开发·10年+
面试吊打面试官
面试官:数据库删除数据时,是物理删好,还是逻辑删好?我:这要看业务。核心业务逻辑删,加个is_deleted字段做软标记。临时数据、日志、缓存这类不需要恢复的场景,一般物理删面试官:逻辑删有什么好处?我:可恢复、留痕、避免级联查询查不到的问题面试官:如果一条业务数据,逻辑删后,又重新添加,唯一索引冲突了,要怎么解决?我:加个is_deleted字段,存时间戳,未删除为 0,删除时写入删除时间。然后唯一索引建在业务字段加is_deleted上面试官:查询总忘加is_deleted=0怎么办?我:在ORM层做统一拦截面试官:什么情况下选择物理删呢?我:合规要求,像GDPR用户注销后必须彻底清除个人数据。还有敏感信息,比如明文身份证号,与其留着脱敏不如直接物理删。临时表、清洗中间数据这些没有审计需求的等等面试官:大表物理删时,会有什么问题?我:一次性删几百万行,行锁持有时间长,可能阻塞业务请求,还会产生大量binlog导致主从延迟。面试官:那怎么办?我:分批删,业务低峰期删,每批几百到几千行,中间 sleep。或者用分区表直接 drop 分区,几乎瞬间完成,没有锁问题
发布于 广东
3
3
9
未登录
友善发言
评论
加载中
下载脉脉APP,成就职业梦想
违法不良信息&未成年人有害信息举报电话/客服电话:400 065 0808
违法不良信息&未成年人有害信息举报邮箱/客服邮箱:maimai@taou.com
清朗系列专项行动相关违规信息举报电话:400 065 0808,举报邮箱:maimai@taou.com
个人/企业等被诽谤侮辱、人身权或知识产权等被侵犯、网络谣言的举报地址:maimai.cn/tousu | 涉企虚假不实信息举报投诉专区
京ICP备12005786号-1copyright©maimai.cn