签到成功

知道了

CNDBA社区CNDBA社区

DM7 达梦数据库 大规模并行处理 MPP (3) -- 相关的系统过程和函数

2019-09-07 21:49 3012 0 原创 DM 达梦
作者: dave

在之前的博客看了MPP的概念和环境搭建,如下:

http://www.cndba.cn/cndba/dave/article/3660

DM7 达梦数据库 大规模并行处理 MPP (1) — 基本概念和原理
https://www.cndba.cn/dave/article/3657
DM7 达梦数据库 大规模并行处理 MPP (2) — 环境搭建和使用
https://www.cndba.cn/dave/article/3658http://www.cndba.cn/cndba/dave/article/3660

1 常用的 MPP 系统过程与函数

1.SP_SET_SESSION_MPP_SELECT_LOCAL
定义:
VOID
SP_SET_SESSION_MPP_SELECT_LOCAL(
local_flag int
)
功能说明:MPP 系统下设置当前会话是否只查询本节点数据。如果不设置,表示可以查询全部节点数据。
参数说明:local_flag: 设置标记,0:查询全部节点数据;1:只查询本节点数据。

例:
SP_SET_SESSION_MPP_SELECT_LOCAL(1);
2.SF_GET_SESSION_MPP_SELECT_LOCAL
定义:
INT
SF_GET_SESSION_MPP_SELECT_LOCAL()
功能说明:查询 MPP 系统下当前会话是否只查询本节点数据。
返回值:0 表示查询全部节点数据,1 表示只查询本节点数据。

例:
SELECT SF_GET_SESSION_MPP_SELECT_LOCAL();
3. SP_SET_SESSION_LOCAL_TYPE
定义:
VOID
SP_SET_SESSION_LOCAL_TYPE (
ddl_flag int
)

功能说明:MPP 下本地登录时,设置本会话上是否允许 DDL 操作。本地登录默认不允许 DDL 操作。
参数说明:ddl_flag:0 表示不允许当前本地会话执行 DDL 操作,1 表示允许。

例:
MPP 下本地登录会话。
SP_SET_SESSION_LOCAL_TYPE (1);
CREATE TABLE TEST(C1 INT);
SP_SET_SESSION_LOCAL_TYPE (0);
4. SF_GET_EP_SEQNO
定义:
INT
SF_GET_EP_SEQNO (
rowid bigint
)

功能说明:根据查询出的行数据的 ROWID 获取本条数据来自哪个 EP。
参数说明:rowid:行数据的 ROWID。
返回值:MPP 系统内 EP 的序号。

例:
SELECT SF_GET_EP_SEQNO(ROWID);
5. SF_GET_SELF_EP_SEQNO
定义:
INT
SF_GET_SELF_EP_SEQNO ()

功能说明:获取本会话连接的 EP 序号。
返回值:本会话连接的 EP 序号。

例:
SELECT SF_GET_SELF_EP_SEQNO();
6. SP_GET_EP_COUNT
定义:
INT
SP_GET_EP_COUNT (
SCH_NAME VARCHAR(128),
TAB_NAME VARCHAR(128)
)
功能说明:统计 MPP 环境下表在各个节点的数据行数。
参数说明:
SCH_NAME:表所在模式名
TAB_NAME:表名

例:
SP_GET_EP_COUNT('SYSDBA','T');

2 示例

1. 获取会话连接的 EP 的节点序号
SQL> conn cndba/"www.cndba.cn"

Server[LOCALHOST:5236]:mode is normal, state is open
login used time: 14.244(ms)
SQL> SELECT SF_GET_SELF_EP_SEQNO();

LINEID     SF_GET_SELF_EP_SEQNO()
---------- ----------------------
1          0

used time: 2.117(ms). Execute id is 230878.
SQL>
2.根据 ROWID 获取本行数据来自哪个 EP
SQL> SELECT SF_GET_EP_SEQNO(ROWID);

LINEID     SF_GET_EP_SEQNO(ROWID)
---------- ----------------------
1          1

used time: 1.467(ms). Execute id is 793206.
SQL> 

SQL> select rowid,c1 from t_hash limit 5;

LINEID     ROWID                C1         
---------- -------------------- -----------
1          288230376151711746   1
2          288230376151711747   3
3          288230376151711748   5
4          288230376151711749   7
5          288230376151711750   9

used time: 12.569(ms). Execute id is 230880.
SQL> 
SQL> SELECT SF_GET_EP_SEQNO(288230376151711750);

LINEID     SF_GET_EP_SEQNO(288230376151711750)
---------- -----------------------------------
1          1

used time: 1.471(ms). Execute id is 230882.
SQL>
3.获取 EP 节点配置信息
SQL> SELECT * FROM V$MPP_CFG_ITEM WHERE SF_GET_EP_SEQNO(ROWID) = SF_GET_SELF_EP_SEQNO();

LINEID     SERVICE_NAME  INST_NAME EP_SEQNO    STATE
---------- ------------- --------- ----------- -----
1          SERVICE_NAME1 DAVE01    0           OK
2          SERVICE_NAME2 DAVE02    1           OK

used time: 7.373(ms). Execute id is 793212.
SQL> 

SQL> SELECT * FROM V$MPP_CFG_ITEM WHERE EP_SEQNO = SF_GET_SELF_EP_SEQNO();

LINEID     SERVICE_NAME  INST_NAME EP_SEQNO    STATE
---------- ------------- --------- ----------- -----
1          SERVICE_NAME1 DAVE01    0           OK
2          SERVICE_NAME1 DAVE01    0           OK

used time: 8.654(ms). Execute id is 230890.
SQL>
4. 获取当前会话连接的实例名
SQL> SELECT NAME FROM V$INSTANCE WHERE SF_GET_EP_SEQNO(ROWID) = SF_GET_SELF_EP_SEQNO();

LINEID     NAME  
---------- ------
1          DAVE02

used time: 7.516(ms). Execute id is 793204.
SQL>
5. 获取 MPP 系统内所有 EP 的所有会话

SQL>SELECT * FROM V$SESSIONS;

http://www.cndba.cn/cndba/dave/article/3660
http://www.cndba.cn/cndba/dave/article/3660
http://www.cndba.cn/cndba/dave/article/3660

6. 获取当前连接的实例上的所有会话

SQL> SELECT * FROM V$SESSIONS WHERE SF_GET_EP_SEQNO(ROWID) = SF_GET_SELF_EP_SEQNO();http://www.cndba.cn/cndba/dave/article/3660

7. 获取实例 EP01 上的所有会话

SQL> SELECT * FROM V$SESSIONS WHERE SF_GET_EP_SEQNO(ROWID) = (SELECT DISTINCT EP_SEQNO FROM V$MPP_CFG_ITEM WHERE INST_NAME =’DAVE01’);http://www.cndba.cn/cndba/dave/article/3660http://www.cndba.cn/cndba/dave/article/3660http://www.cndba.cn/cndba/dave/article/3660

http://www.cndba.cn/cndba/dave/article/3660

8. 获取表 TEST 在每个实例上的数据行数
SQL> CALL SP_GET_EP_COUNT('CNDBA','T_HASH');

LINEID     SEQNO       N_ROWS              
---------- ----------- --------------------
1          0           5000
2          1           5000

used time: 43.327(ms). Execute id is 793222.
SQL>
9. 获取所接实例上的表 TEST 的使用空间
SQL> SELECT TABLE_USED_PAGES('CNDBA','T_HASH');

LINEID     TABLE_USED_PAGES('CNDBA','T_HASH')
---------- ----------------------------------
1          25

used time: 1.932(ms). Execute id is 793226.
SQL>
10. 获取每个实例上的表 TEST 使用空间
SQL> SELECT TABLE_USED_PAGES('CNDBA','T_HASH'), NAME FROM V$INSTANCE;

LINEID     TABLE_USED_PAGES('CNDBA','T_HASH') NAME  
---------- ---------------------------------- ------
1          25                                 DAVE02
2          25                                 DAVE01

used time: 7.305(ms). Execute id is 793228.
SQL>
11. 获取所有实例上表 TEST 的总使用空间
SQL> SELECT SUM(TOTAL_SIZE) FROM (SELECT TABLE_USED_PAGES('CNDBA','T_HASH') TOTAL_SIZE, NAME FROM V$INSTANCE);

LINEID     SUM(TOTAL_SIZE)     
---------- --------------------
1          50

used time: 7.583(ms). Execute id is 793230.
SQL>

版权声明:本文为博主原创文章,未经博主允许不得转载。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
dave

dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 2297
    原创
  • 3
    翻译
  • 680
    转载
  • 200
    评论
  • 访问:10144639次
  • 积分:4578
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ