当数据库遇到分布式,你会怎么做?
发布时间:2020-03-08 22:13:53 所属栏目:建站 来源:站长网
导读:副标题#e# 数据库通常有着完善的事务支持,但是局限于单机的存储和性能,于是就出现了各种分布式解决方案。最近读了《Designing Data-Intensive Applications》这本书,所以做一个总结,供大家做个参考,有什么不对的请大家指正,一起讨论。 数据模型 数据
对于丢失更新和有数据交叉的写偏差,数据库可以结合快照隔,可以自动检测到丢失更新,中止相应的事务。但是MySQL/InnoDB的可重复读并不会检测丢失更新。有些作者认为,数据能防止丢失更新才能称得上快照隔离,所以这种定义下,MySQL并不提供快照隔离。 MySQL/InnoDB可重复读隔离级别下,可以使用 锁定读 (select for update)或者 比较并设置CAS 来避免丢失更新。 需要注意的是,如果数据库允许where字句从旧快照中读取,则此语句可能无法防止丢失更新,因为即使发生了另一个并发写入,where条件也可能是真的。 序列化 但对于写入数据无交叉的写偏差,只能通过序列化的隔离级别来避免,但是可以在应用层面通过 物化冲突的方式,人为的在数据库中引入一个锁对象。 序列化隔离级别有三种实现方式: 字面意义的串行顺序执行事务 (编辑:西安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |