《专场1.1-事务一致性-李海翔.pdf》由会员分享,可在线阅读,更多相关《专场1.1-事务一致性-李海翔.pdf(23页珍藏版)》请在三个皮匠报告上搜索。
1、分布式数据库的分布式事务处理技术李海翔目录1 1分布式事务分布式事务型数据库的理念型数据库的理念与背景与背景1.1 数据库的三高一易:高可靠、高可用、高性能、易用性1.2 单机数据库的强一致+低性能1.3 分布式数据库因分布带来的变化2分布式事务处理技术2.1【一致性与隔离性】数据异常、隔离级别与一致性2.2【持久性与可靠性】分布式系统下的日志与可持久化2.3【原子性与一致性】分布式事务提交阶段:可串行化与2PC3第三代分布式数据库(强一致性强一致性+高性能高性能=鱼和熊掌兼得鱼和熊掌兼得)1:1:分布式事务分布式事务型数据库的理念型数据库的理念与背景与背景高可靠(high reliabili
2、ty)定义为一个服务连续无故障运行的时间,无故障运行的时间越长,可靠性就越高。99.999%高可用定义为在足够长的时间里,一个服务可用的时间,服务可用时间越长越好高性能低隔离别+高性能可串行化+低性能易用性例如:例如:1 MySQL可串行化,性能很差可串行化,性能很差2 MySQL是单机系统是单机系统推测:推测:分布式的可串行化,是不是性能更差?分布式的可串行化,是不是性能更差?用户:要求高性能开发者:用弱隔离级别用户:要求数据正确开发者:主动加锁数据库:性能降低SelectFor Update数据库使用怪圈数据库使用怪圈1.2 单机数据库的强一致+低性能灵魂问题:灵魂问题:Q1:我们能精准地
3、说出,什么情况下应该用For Update、什么情况下不用吗?现实问题现实问题:Q2:为什么我们需要精准地知道什么情况下应该用For Update、什么情况下不用?怪怪1:对一致性和性能的认知有误:对一致性和性能的认知有误1.2 单机数据库的强一致+低性能测试目的:验证用户主动加锁、不加锁的性能差异验证用户主动加锁、不加锁的性能差异背景:Percona Server 8.0.18-9:验证用户主动加锁、不加锁的性能差异:验证用户主动加锁、不加锁的性能差异背景:测试的recordcount设置为4000w,数据实际容量为90GB,稍大于buffer pool的大小,YCSB的读写4:1混合场景不
4、加锁用户加锁并发数opsops加锁影响32197377183284-7.14%64331071180651-45.43%12832427497402-69.96%256356958170988-52.10%512325337162320-50.11%1024283012151466-46.48%RC隔离级别下的性能数据不加锁主动加锁并发数opsops加锁影响32167611154499-7.82%64263614186389-29.29%12833691797356-71.10%256356980170766-52.16%512326180162960-50.04%10242830791512
5、36-46.57%RR隔离级别下的性能数据读写场景,用户加锁性能损失很大1.3 分布式数据库因分布带来的变化序值获取异常消除(执行阶段)异常消除(提交前冲突判定)日志(WAL)日志分散(分布式)原子提交/回滚(2PC)提交序值(可见性依据)全局全局读读一致性一致性C全局全局写写一致性一致性C+弱隔离级别弱隔离级别I全局全局写写一致性一致性C+可串行化可串行化I原子性原子性A恢复持久性持久性D与一致性与一致性C持久性持久性D与一致性与一致性C与原子性与原子性A全局全局读读一致性一致性C目录1 1分布式事务分布式事务型数据库的理念型数据库的理念与背景与背景1.1 数据库的三高一易:高可靠、高可用、
6、高性能、易用性1.2 单机数据库的强一致+低性能1.3 分布式数据库因分布带来的变化2 2分布式事务处理技术分布式事务处理技术2.1【一致性与隔离性】数据异常、隔离级别与一致性2.2【持久性与可靠性】分布式系统下的日志与可持久化2.3【原子性与一致性】分布式事务提交阶段:可串行化与2PC3第三代分布式数据库(强一致性强一致性+高性能高性能=鱼和熊掌兼得鱼和熊掌兼得)2:2:分布式事务分布式事务处理技术处理技术2.12.1一致性与隔离性一致性与隔离性https:/wikipedia.org/wiki/Consistencyhttps:/en.wikipedia.org/wiki/ACID#Con