OB行者
#1
【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】obproxy
【 使用版本 】v4.3.1;v4.3.6
【问题描述】
ODP参数enable_cached_server中的“表项”是啥
enable_cached_server 用于控制是否在没有表项时使用缓存的服务器会话。
1.这里说的“表项”是啥?
2.“服务器会话”的会话指的是谁连谁的会话,是指ODP的OBSERVER之间会话?
3.“用于控制是否在没有表项时使用缓存的服务器会话”字面意思明白,但好像缺少主语,无法理解这个参数的真实用途,是ODP的具体哪一个功能,哪一个模块在使用enable_cached_server参数?
https://www.oceanbase.com/docs/common-odp-doc-cn-1000000005053944
2 个赞
ODP参数enable_cached_server中的“表项”指的是 ODP 内部维护的、用于记录客户端会话与后端 OBServer 节点映射关系的缓存条目。 “它的的具体含义当 enable_cached_server 设置为 true 时,ODP 会在内存中为每个客户端连接(Client Session)维护一个路由缓存表项。它的作用:当下一个 SQL 请求到达时,ODP 会查询这个“表项”,直接将请求路由到同一个 OBServer 节点,而不是重新进行负载均衡选择。这被称为“复用上一次的会话路由”。
2 个赞
可以理解为开启缓存,是吧,或者可以理解为SQL解析中的软解析,避免硬解析,是这意思吧
OB行者
#6
看起来您说的很合理,有官方文档支撑您的说法没,有的话麻烦发一下,谢谢。
论坛小助手
#8
根据文档库中的信息,enable_cached_server 参数的描述确实可能让人感到困惑。基于提供的文档片段和您给出的官方链接,我将尝试解释这个参数的含义及其相关概念。
-
“表项”是什么?
- 在
enable_cached_server 的上下文中,“表项”指的是 ODP 为了管理和路由请求而维护的内部数据结构中的一个条目。这里的“表”可以理解为某种映射或索引,用于快速查找特定会话或其他连接相关信息。“表项”则代表了这种映射中的单个元素。例如,在ODP中可能会有一个表(即一种数据结构)来存储所有活跃会话的信息,以便快速地进行查找和管理,那么这里提到的“没有表项”意味着在这种情况下找不到相关的会话记录。
-
“服务器会话”的定义
- “服务器会话”通常指客户端与OBProxy之间建立的一个连接关系。当客户端发起请求至OceanBase数据库时,通过OBProxy进行转发,期间就会形成这样的会话。这里的“服务器”更准确地说是OBProxy自身作为代理服务的角色,它与客户端建立了会话。
-
该参数的实际用途
-
enable_cached_server 参数决定在ODP(即OBProxy)未能找到特定会话记录的情况下,是否应该使用先前缓存下来的服务器端配置来进行响应。换句话说,如果因为某些原因导致正常流程下无法找到某个会话的相关信息(如“表项”),则依据此参数设置决定是否利用已有的缓存信息来继续处理请求,而不是直接拒绝或者返回错误。
- 从您的描述来看,
enable_cached_server 属于OBProxy (ODP) 的配置选项之一,其主要应用于OBProxy如何处理客户端请求以及如何管理这些请求背后的会话状态。具体来说,这涉及到OBProxy在面对暂时缺失部分会话信息场景下的应对策略。
综上所述,enable_cached_server 主要影响的是OBProxy在处理客户端请求时的行为逻辑,特别是在遇到会话信息不完整或丢失时,如何更加灵活高效地做出响应。希望以上解释能够帮助您更好地理解这个配置项的作用。如果有更多关于ODP配置方面的问题,请随时提问!
参考资料:
详情请参考:
- enable_cached_server
- enable_report_session_stats
- enable_server_ssl
- enable_ob_protocol_v2_with_client
- 查看租户会话
- 命令说明
- enable_standby
- OceanBase 数据库代理(ODP)
- 配置项总览
- enable_ob_protocol_v2
OB行者
#10
-
我怎么提高 “表项”缓存的命中率,让他尽可能有缓存。
-
我怎么知道这个命中率是多少?
3.看起这个缓存只是路由信息,应该占用不了多少内存,能不能直接控制让他预加载全量表分区信息。彻底解决这个问题。
- 是否有专门的参数,控制这个“表项”缓存大小。