https://www.oceanbase.com/docs/enterprise/oceanbase-database-cn/V3.2.3/10000000000357914
NET_TIME 发送RPC到接收到请求的时间。
NET_WAIT_TIME 接收到请求到进入队列的时间。
queue_time 表示该sql执行内部排队的时间
GET_PLAN_TIME 开始执行到获得计划时间
问题:
1 什么是RPC请求?
2 上面说的意思是,用户发出一个SQL请求,该请求先要进入队列,然后在队列里排队等待,最后才开始执行?
3 用户的SQL请求和RPC之间有什么关系?
张雨齐
#3
-
RPC 是远程过程调用(Remote Procedure Call)的缩写形式
-
OB接收业务执行SQL,是通过TCP接入,这个过程是有IO多路复用,这个SQL接受会先在OB内队列存下来,然后内部多线程处理,有空闲线程就从队列取SQL,然后执行SQL
3.最简单的就广播查询SQL,也就是建立一张分区表,但是SQL语句不带分区键,用户执行SQL是发到了一台OB上,但是分区表的各个分区的主是在多台OB机器上的,就需要将OB接收SQL的请求拆分,调用各个分区主所在的ob,获取数据,然后再聚合后返回给用户。
1 个赞
阿福
#4
observer初始化占用两个端口,2881,2882,不知道您是否还有印象。其中2882是rpc端口,对外提供访问使用的是2881端口;observer之间沟通使用的是rpc 2882,我理解是这样的,ob是分布式数据库,集群内部执行大部分操作应该都是rpc操作,效率比较高。概念上,张总上面说的很详细了。