达梦MPP集群状态查询及管理

前面学习了DM MPP集群的搭建,有兴趣的朋友可以查看另外一篇,MPP集群搭建,这节主要讲一下DM MPP集群的管理。
全局登录和本地登录
MPP 系统中数据分布在各个 EP 中,用户只需要登录到某个 EP,系统自动建立这个 EP与其余 EP 的连接,因此用户建立的实际上是与整个 MPP 系统的全局连接,用户对数据库的操作通过全局连接在 MPP 系统的所有 EP 进行。使用全局连接时,要求 MPP 系统的所有 EP都正常提供服务,否则无法建立连接。
通常在 MPP 系统正常运行时都使用全局连接,DM MPP 的快速装载和动态扩容使用到了本地连接,用户在某些时候如 MPP 系统中有 EP 故障时也可以使用本地连接。
DM 的各接口驱动程序都提供了连接属性用于设置全局连接(登录)或本地连接(登录),
缺省都为全局连接。DM 交互式工具 disql 也提供了登录参数MPP_TYPE 用来指定使用全局连接或本地连接,“GLOBAL”表示全局连接,“LOCAL”表示本地连接,默认为全局连接。
下图未指定MPP_TYPE参数,则默认为全局管理。
在这里插入图片描述
登录后查看到的各EP节点状态:

select * from v$mpp_cfg_item;

在这里插入图片描述
查看登录节点序号:

select sf_get_self_ep_seqno();

在这里插入图片描述
统计 MPP 环境下指定表在各个站点的数据行数,下图所示表数据均匀分布在3个节点上:
在这里插入图片描述
根据查询出的行数据的 ROWID 获取本条数据来自哪个 EP 站点,下面所示分别指定不同ID段的数据,看存储分布情况:

SQL> SELECT ID, NAME, SF_GET_EP_SEQNO(ROWID) AS "NODE" FROM TEST WHERE ID BETWEEN 20000 AND 20005;

LINEID     ID          NAME       NODE       
---------- ----------- ---------- -----------
1          20002       ceshi20002 0
2          20003       ceshi20003 0
3          20004       ceshi20004 0
4          20000       ceshi20000 2
5          20001       ceshi20001 2
6          20005       ceshi20005 2

6 rows got

used time: 16.113(ms). Execute id is 779115.
SQL> SELECT ID, NAME, SF_GET_EP_SEQNO(ROWID) AS "NODE" FROM TEST WHERE ID BETWEEN 2000 AND 2005;

LINEID     ID          NAME      NODE       
---------- ----------- --------- -----------
1          2001        ceshi2001 2
2          2002        ceshi2002 2
3          2000        ceshi2000 1
4          2003        ceshi2003 1
5          2004        ceshi2004 1
6          2005        ceshi2005 1

6 rows got

used time: 12.305(ms). Execute id is 779117.

DM MPP 也提供本地连接。当使用本地连接时,用户登录到某个 EP 后,这个 EP 不再建立与其余 EP 的连接,用户的所有数据库操作仅在这个 EP 上进行。如 SELECT 语句以及及UPDATE和DELETE语句中的WHERE条件中的子查询都仅仅查询本地EP的数据,而INSERT 语句如果插入的数据根据分布定义应分布在其余 EP 时系统会报错。
本地登录时,指定MPP_TYPE项为local,如下图:
在这里插入图片描述
在本地登录模式下,无法获取全局配置信息,如下图获取节点数则会报错。

SQL> CALL SP_GET_EP_COUNT('SYSDBA','TEST');
CALL SP_GET_EP_COUNT('SYSDBA','TEST');
[-5027]:[SP_GET_EP_COUNT] DDL operation is forbidden under mpp local mode.
used time: 5.423(ms). Execute id is 0.	

在本地登录模式下,查询表中数据,只能查到存储在本地节点的数据,其它节点的数据无法显示。
在这里插入图片描述
获取会话连接的 EP 的节点序号:
在这里插入图片描述

获取 EP 节点配置信息:

SELECT * FROM V$MPP_CFG_ITEM WHERE SF_GET_EP_SEQNO(ROWID) = SF_GET_SELF_EP_SEQNO();

在这里插入图片描述

获取当前会话连接的实例名 :

SELECT NAME FROM V$INSTANCE WHERE SF_GET_EP_SEQNO(ROWID) = SF_GET_SELF_EP_SEQNO(); 

在这里插入图片描述
获取指定节点的中的数据:

SELECT NAME FROM TEST WHERE SF_GET_EP_SEQNO(ROWID) = 0; 

在这里插入图片描述
获取表 TEST 在每个实例上的数据行数 :

CALL SP_GET_EP_COUNT('SYSDBA','TEST'); 

在这里插入图片描述
获取所接实例上的表 TEST 的使用空间 :

SELECT TABLE_USED_PAGES('SYSDBA','TEST'); 

在这里插入图片描述
获取每个实例上的表 TEST 使用空间 :

SELECT TABLE_USED_PAGES('SYSDBA','TEST'), NAME FROM V$INSTANCE; 

在这里插入图片描述
获取所有实例上表 TEST 的总使用空间 :

SELECT SUM(TOTAL_SIZE) FROM (SELECT TABLE_USED_PAGES('SYSDBA','TEST') TOTAL_SIZE, NAME FROM V$INSTANCE);

在这里插入图片描述
设置当前会话是否只查询本节点数据。如果不设置,表示可以查询全部节点数据。设置标记1 代表只查询本节点数据;0 代表查询全部节
点数据。

SP_SET_SESSION_MPP_SELECT_LOCAL(1);

查询 MPP 系统下当前会话是否只查询本节点数据,1代表只查询本节点数据,0 查询全部节点数据。

SELECT SF_GET_SESSION_MPP_SELECT_LOCAL();

MPP 下本地登录时,设置本会话上是否允许 DDL 操作。本地登录默认不允许DDL 操作。 DDL_FLAG为 1 时表示允许当前本地会话执行 DDL 操作,为 0 时则不允许。
MPP 下本地登录会话:

SP_SET_SESSION_LOCAL_TYPE (1); 
CREATE TABLE TEST(C1 INT); 
SP_SET_SESSION_LOCAL_TYPE (0);

根据查询出的行数据的 ROWID 获取本条数据来自哪个 EP 站点:

SELECT SF_GET_EP_SEQNO(ROWID) FROM V$INSTANCE;

增加 MPP 实例配置:

SF_MPP_INST_ADD(' SERVICE_NAME3', 'EP03');

删除 MPP 实例:

SF_MPP_INST_REMOVE('EP03');
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值