哪些情况会导致日志流的分裂和合并?
OceanBase 数据库中,日志流的分裂和合并主要发生在以下几种情况:
负载均衡需求:当租户的属性发生变更、新增了机器资源,或者经过长时间使用后,Tablet 在各台机器上不再均衡时,系统会通过日志流的分裂和合并操作,并配合日志流副本的移动,使数据和服务在多个服务器之间达到新的均衡状态。
表的创建与删除:随着用户持续地创建或删除表,尤其是删除一批表后,原本聚集在某些机器上的 Tablet 可能减少,这时均衡层会定期生成均衡计划,将 Tablet 从 Tablet 较多的服务器迁移到 Tablet 较少的服务器上,从而触发日志流的分裂与合并。
系统扩容:当进行租户扩容后,分区会以 Tablet 为单位迁移到新加入的 Observer 节点中,日志流会从原来的 Observer 迁移到扩容后的 Observer 的 Unit 单元内,这个过程也涉及日志流的分裂。
数据均衡策略:在均衡层的管理下,当需要对 Tablet 进行重新分布时,会通过分裂出临时日志流并迁移 Tablet,再与目标服务器上的日志流合并来实现均衡。
手动或自动合并:当系统检测到合并效率低下或写入放大过大的情况时,可能会调整合并策略,例如通过设置 minor_freeze_times 来更频繁地触发合并,或者通过调整 merge_thread_count 来缓解写入放大问题。
最简单的就是调整primary zone的时候
学习下
能否详细解释下minor_freeze_times和merge_thread_count参数的使用
- primary_zone的改变 从z1;z2;z3 该变成z1,z2,z3或其他形式
- unit_num的改变, 已经分配给租户的resource pool的unit_num改变, 增加或者减少
- locality 副本属性的改变, 比如 3个变成 2个
- 负载均衡参数的影响enable_transfer . 会影响到 日志流的分裂和合并
- Observer的宕机 unit的迁移 ,应为副本的迁移或者重新生成新unit需要增加unit 。 zone的增加或者减少 也有日志流的增加或者减少
希望对您有用
同问,这个概念没有注意到过呢
这个回答的比较到位了,学习了。
详细。zone增减是不是也会出发呢?
总结的比较到位
BD
日志流的分裂和合并情况:
- 分裂:为了实现数据的水平扩展和均衡,可能需要增加新的日志流来分散数据负载。
- 合并:为了优化存储和提高查询效率,可能会将多个日志流合并成一个或几个日志流,减少管理复杂度。
minor_freeze_times 参数:
- 用于触发 Major Freeze 的配置项。
- 在 V4.x 版本中,此配置项已经被删除,因为 V4.x 版本从底层解决了大事务能力的支持,事务不再受冻结操作的影响。
merge_thread_count 参数:
- 用于设置每日合并工作的线程数。
- 通过调整线程数,可以控制合并任务的并发度,从而影响合并任务的执行速度和系统资源的占用。
检索到的文档如下:
期待
学习了/
写得很详细
混个积分!
学习了3
混个回复!
期待