首批通过分布式安全可靠测评,为关键业务系统打造
全局时间戳
更新时间:2024-08-27 23:00:00
全局时间戳服务(Global Timestamp Service,简称 GTS),OceanBase 数据库内部每个租户启动一个全局时间戳服务,事务提交时通过本租户的时间戳服务获取事务版本号,保证全局的事务顺序。
服务高可用
GTS 是集群的核心,需要保证高可用。
对于租户而言,OceanBase 数据库使用租户级别 1 号日志流的 Leader 作为 GTS 服务提供者,时间来源于该 Leader 的持久化的可分配区间。GTS 默认是三副本的,其高可用能力跟普通表的能力一样。
GTS Leader通过写下预分配区间日志来申请可分配区间,并依赖日志同步进行副本间信息同步,保证信息不会丢失。
时间戳正确性保证
GTS 维护了全局递增的时间戳服务,异常场景下依然能够保证正确性:
- 新 Leader 上任之前先回放原 Leader 写下的预分配区间日志,获取原可分配区间的最大值,作为自己时间戳授权的基准值。因此该场景下,GTS 提供的时间戳不会回退。
GTS 获取优化
语句快照获取优化
事务提交的时候都会更新其所在机器的 Global Committed Version,当一条语句可以明确其查询所在机器时,如果是一台机器,则直接使用该机器的 Global Committed Version 作为 Read Version,降低对于全局时间戳的请求压力。
事务提交版本号获取优化
多个事务可以合并获取全局时间戳,并且获取时间戳的请求可以提早发送,缩短事务提交时间。