淇铭
#16
我找了研发 connection_id 和show proxysession 的 id列值一样 这个正常
如果通过obproxy,业务拿到的connection id 就是这个cs_id,业务需要根据id终止请求:kill query / kill connection 都是 proxy 提供的这个cs_id, 这个id 就是32位唯一的整数。
官方文档:
“cs_id 为 ODP 内部标记的每个 Client 的 id 号,connection_id 为整个 OceanBase 数据库标记的每个 Client 的 id 号。connection_id 通过 SELECT CONNECTION_ID(); 语句获取。”
官网的文档解释:
ODP作为反向代理,业务看到的ODP就是一个整体OceanBase 数据库。 ODP分配的connection_id,就是数据库client id。
Giant
#17
那样的话。 show proxysession id 看到的 server_sessid 还会是 show processlist看到的数据库的id不??
淇铭
#18
文档解释的应该是observer 节点会话id * ID
:进程的 ID,即当前会话的 Client Session ID,该 ID 是会话在客户端中的唯一标识。
Giant
#19
如果是 observer的会话id ,那么是不是 应该使用 gv$ob_processlist 查询到才对呢 ???您试下能查询到不,我这查询不到
淇铭
#25
我重新给你说一下 示例的步骤
1、通过odp连接
2、在重新打开一个窗口直连 通过视图或者show processlist查询
以上就可以测试 你是这样操作的么?
Giant
#26
对的,就是你这样操作的。
你看我就三个节点 ,都是2881端口。 能看到servr_sessid的是 2883端口 。 还都是 sys 租户
淇铭
#27
正常情况下 这个端口应该是2881 你说的是截图的这个server_port端口么?
淇铭
#29
应该也是正常的 ODP 和 后端 server的每一个session 都会建立一个连接 建链后的那个session 连接 可能已经关闭了 所以测试的时候 测试不到 也属于正常
1 个赞
Giant
#30
但是 为啥 不用 server_sessid 查询使用 cs_id 就能查询到呢 ?
淇铭
#31
设计的时候 应该都可以查 只是建链后的那个session 连接 可能已经关闭了 没有办法查了
Giant
#32
1 个赞