1、,故障恢复 Failure Recovery,并发控制 Concurrency Control,持久性(Durability)为什么难?为计算机编制好面对一切情况的手 册,Atomicity,Durability,Isolation,Consistency,从批处理到在线服务的最大变化计算机资源利用率最大化是复杂性 的来源,故障恢复所有处理持久化状态的程序都必须面对的难题日常生活中故障也经常发生考试时写字的笔没水了超市付款时手机没电了 人可以轻松应对这些问题计算机需要编制好程序告诉它该怎么做。需要为它编制好面对一切情况的手 册把要做的工作做完整,故障恢复 数据库管理系统的实现实际系统中有两个得
2、以广泛运用的方法:Shadow PagingLogginRedo/Undo日志对每一次修改,产生日志同时记录旧值和新值在修改落盘之前,对应的日志记录必须先落盘事务commit时,所有的日志保证落盘重做:按照redo日志重做所有没有落盘的已提交事务修改回滚:按照undo日志回滚所有未提交事务的修改,并发控制,所有程序都会面对的挑战并发控制的目的是保证正确性 的同时让计算机资源利用率最 大化,资源利用效率由低到高:互斥锁读写锁细粒度锁写时拷贝,struct int a;int b;int c;互斥锁,读写锁,细粒度锁,写时拷贝,lock,struct rwlock int a;,int c;,st
3、ruct,int a;,struct struct,int a;,for writefor read,并发控制 数据库管理系统的实现,并发控制机制:从基于锁的机 制到多版本并发控制机制,多版本并发控制机制最好的并发能力读取操作不影响写入更适合并发越来越大的 分布式数据库,大量的数据库系统都采用多版 本并发控制机制,Repeatable Read,Fine-Grained Locking,DB2,Snapshot Isolation,MVCC,OceanBase OracleSQL Server Spanner,典型 隔离 级别,并发 控制 机制,并发能力低,并发能力高,效果,并发控制 数据库管
4、理系统的实现,Read View:记录快照点所有活跃事务列表取快照点非常耗时,不具备扩展性Read Version:快照版本号快照点是一个值,支持高并发获取,Snapshot:Read View,Snapshot:Read Version,No Commit Version,Have Commit Version,目录CONTENTS,数据库系统发展历史,12,事务处理的挑战,3,分布式场景的挑战,4,OceanBase解决之道,5,总结,分布式数据库的挑战分布式环境下的故障恢复同时修改多台机器的数据,原子性的保证更挑战分布式环境下的并发控制要协调多台机器的不同操作跨越多台机器的读取要有一致性
5、的快照,分布式数据库的挑战OceanBase的目标是让分布式数据库系统的使用体验和单机数据库系统一样自动的分布式提交保证跨机事务的原子性低延迟全局事务一致性高效全局一致性快照事务大小不限制,目录CONTENTS,数据库系统发展历史,12,事务处理的挑战,3,分布式场景的挑战,4,OceanBase解决之道,5,总结,故障恢复的解决方案,Client,Server1,Server2,Server3,Server4,Session,SQL1SQL2SQL3COMMIT,系统内部自动记录数据修改发 生的位置,事务提交时自动选择走一阶段 提交还是两阶段提交,故障恢复的解决方案,OceanBase分布式
6、事务协调者 无持久化状态OceanBase两阶段提交低延迟 1次日志延迟+1次RPC延迟,P0,P1,协调者,commit,prepare req,prepare ok,commit ok,commit req,commit ok,并发控制的解决方案,多版本并发控制机制,事务执行过程中产生的修改都 以未提交数据存储在系统中,读取根据快照版本选择系统中 的历史数据不会见到正在修改的数据只会见到版本一致的数据,A=A-50,读取到A=500 B=200,机器1 账户A,机器2 账户B,B=B+50,读取到A=500 B=200,读取到A=450 B=250,并发控制的解决方案,OceanBase使
7、用Merge-Dump引擎数据先写入内存中,待内存存储一定 量数据后持久化到硬盘中,事务执行中的修改也是先写到内存中 再持久化到硬盘里,MemTable,TransID,Data,SSTable,MemTable,SSTable,SSTable,Dump,并发控制的解决方案,INSERT INTO RES SELECT C1,C2,C3,C4 FROM A,B WHERE A.NO=B.NOAND B.TYPE!=XX,UPDATE ASET STATUS=1 WHERE A.EV_DATEBETWEENTO_DATE(2008-JUN-01,YYYY-MON-DD)ANDTO_DATE(2008-JUL-01,YYYY-MON-DD),不限制事务大小批量写入保证原子性,修改与读取隔离提交瞬间生效,总结OceanBase是原生分布式数据库,利用分布式集群给用户提供可扩展和高可 用的数据库系统服务OceanBase给用户透明的体验,像使用单机数据库一样使用分布式数据库,没有分库分表的烦恼,支持全局索引,不限制事务大小,26,谢谢!,
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1