GTS全局时间戳服务,这个服务是集成在observer的程序上的吗
如果我单机部署observer 依赖GTS服务吗
,OceanBase的GTS(Global Timestamp Service,全局时间戳服务)具有以下特点:
-
GTS是一个用于在租户内产生连续增长的时间戳的服务,其通过多副本保证可用性,底层机制与复制层的日志流副本同步机制一致。每个事务在提交时会从GTS获取一个时间戳作为事务的提交版本号并持久化在日志流的write-ahead log中,事务内所有修改的数据都以此提交版本号标记。(来源:GTS服务描述)
-
在V4.x版本中,系统统一使用GTS,不需要再指定全局时间戳服务,该变量从V4.0.0版本开始删除。ob_timestamp_service参数默认值为GTS,表示事务执行过程中从GTS服务获取全局时间戳作为事务的快照以及事务的提交版本号,使用上没有限制。(来源:参数配置说明)
-
异常场景下GTS依然能够保证正确性,新Leader上任之前先回放原Leader写下的预分配区间日志,获取原可分配区间的最大值,作为自己时间戳授权的基准值。因此该场景下,GTS提供的时间戳不会回退。(来源:高可用性保障)
-
每个语句开始(对于Read Committed隔离级别)或者每个事务开始(对于Repeatable Read和Serializable隔离级别)时,都会从GTS获取一个时间戳作为语句或事务的读取版本号。在读取数据时,会跳过事务版本号选择比读取版本号大的数据,通过这种方式为读取操作提供了统一的全局数据快照。(来源:读一致性实现)
综上所述,GTS是OceanBase数据库为了确保分布式环境下事务的一致性和顺序性而设计的重要组件,它不仅为每个事务提供唯一的全局时间戳,还支持了跨节点读写、因果序等高级特性,并且具备良好的容错能力和性能表现。
详情请参考:
真的太棒了 +++++1