返回首页

gbase数据、南大通用产品文档:GBase8c

更新日期:2024年09月11日

(1 row)

power(a double precision, b double precision)

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
170
描述:a 的b 次幂。
返回值类型:double precision
示例:
gbase=# SELECT power(9.0, 3.0);
power
----------------------

在该步骤中可以设置rebalance 任务的优先级。先设置参数
gcluster_rebalancing_concurrent_count=0 阻止rebalance 任务被执行。然后利用
rebalance instance 把当前集群下所有表加入到gclusterdb.rebalancing_status 中。调整
完每个表的rebalance 任务的优先级后再设置gcluster_rebalancing_concurrent_count
为需要的并发数,
开始执行数据重分布。
详细步骤参考章节调整rebalance 任务优先
级。
操作步骤
步骤1:初始化hashmap:

GBase 8a MPP Cluster 产品手册
4 管理员指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
246
$ gccli -uroot
GBase client 9.5.3.17.117651. Copyright (c) 2004-2020, GBase.
All Rights
Reserved.
gbase> use vc vc1;
Query OK, 0 rows affected (Elapsed: 00:00:00.00)
gbase> initnodedatamap;
Query OK, 0 rows affected, 5 warnings (Elapsed: 00:00:01.45)
步骤2:执行数据重分布:
gbase> show variables like '%rebalanc%';
+-------------------------------------------------------+-----------+
| Variable_name
| Value
|
+-------------------------------------------------------+-----------+
| _t_gcluster_rebalance_mirror_node
| 0
|
| gcluster_load_rebalance_seed
| 5
|
| gcluster_rebalancing_concurrent_count
| 5
|
| gcluster_rebalancing_ignore_mirror
| OFF
|
| gcluster_rebalancing_immediate_recover_internal_table | OFF
|
| gcluster_rebalancing_parallel_degree
| 4
|
| gcluster_rebalancing_random_table_quick_mode
| 1
|
| gcluster_rebalancing_step
| 100000000 |
| gcluster_rebalancing_update_status_on_drop_table
| ON
|
+-------------------------------------------------------+-----------+
9 rows in set (Elapsed: 00:00:00.24)
gbase> rebalance database demo;
Query OK, 2 rows affected (Elapsed: 00:00:01.45)
查看rebalance 状态:
gbase> select index_name, status, percentage
from gclusterdb.rebalancing_status;
+------------+-----------+------------+
| index_name | status
| percentage |
+------------+-----------+------------+
| demo.t
| COMPLETED |
100 |
| demo.tt
| COMPLETED |
100 |
+------------+-----------+------------+
2 rows in set (Elapsed: 00:00:00.04)
gbase> quit
Bye

GBase 8a MPP Cluster 产品手册
4 管理员指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
247

打开一个显式游标后,能够用FETCH获得结果集中的每条数据。
FETCH cursor_name INTO into_clause
其中INTO_clause可以是变量列表或者是单个记录变量。对于查询返回的每一列,变
量列表或记录变量必须有对应的兼容类型的变量。%TYPE和%TYPEROW对声明在FETHCH
语句中的变量或记录变量非常有用。
FETCH语句获得结果集的当前行,将当前行的值存到变量或记录变量中,然后将游标
下移到下一行。
通常在循环中使用FETCH语句,该循环当FETCH语句运行了所有的行后退出,为了检
测退出条件,可以使用%NOFOUND属性。FETCH语句没有返回值时,PL/SQL不会引起异
常。
CREATE OR REPLACE PROCEDURE P_6_8 AS

GBase 8s PL/SQL手册
南大通用数据技术股份有限公司
- 99 -

v_lastname employees.last_name%TYPE; -- variable for last_name
v_jobid employees.job_id%TYPE; -- variable for job_id
v_employees employees%ROWTYPE; -- record variable for row of table

CURSOR c1 IS
SELECT last_name, job_id FROM employees WHERE job_id='AD_PRES' ORDER BY last_name;
CURSOR c2 IS
SELECT * FROM employees WHERE job_id='AD_PRES' ORDER BY job_id;
BEGIN
OPEN c1;
LOOP -- Fetches 2 columns into variables
FETCH c1 INTO v_lastname, v_jobid;
EXIT WHEN c1%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(v_lastname);
END LOOP;
CLOSE c1;
DBMS_OUTPUT.PUT_LINE( '-------------------------------------' );

OPEN c2;
LOOP -- Fetches entire row into the v_employees record
FETCH c2 INTO v_employees;
EXIT WHEN c2%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(v_employees.last_name);
END LOOP;
CLOSE c2;
END;

--Atkinson ST_CLERK
--Bell SH_CLERK
--Bissot ST_CLERK
--PL/SQL procedure successfully completed.

CREATE OR REPLACE PROCEDURE P_6_9 AS
CURSOR c IS
SELECT e.job_id, j.job_title FROM employees e, jobs j
WHERE e.job_id = j.job_id AND e.manager_id = 100 ORDER BY last_name;
-- Record variables for rows of cursor result set:
job1 c%ROWTYPE;
job2 c%ROWTYPE;
job3 c%ROWTYPE;
job4 c%ROWTYPE;
job5 c%ROWTYPE;

GBase 8s PL/SQL手册
南大通用数据技术股份有限公司
- 100 -

BEGIN
OPEN c;
FETCH c INTO job1; -- fetches first row
FETCH c INTO job2; -- fetches second row
FETCH c INTO job3; -- fetches third row
FETCH c INTO job4; -- fetches fourth row
FETCH c INTO job5; -- fetches fifth row
CLOSE c;
DBMS_OUTPUT.PUT_LINE(job1.job_title || ' (' || job1.job_id || ')');
DBMS_OUTPUT.PUT_LINE(job2.job_title || ' (' || job2.job_id || ')');
DBMS_OUTPUT.PUT_LINE(job3.job_title || ' (' || job3.job_id || ')');
DBMS_OUTPUT.PUT_LINE(job4.job_title || ' (' || job4.job_id || ')');
DBMS_OUTPUT.PUT_LINE(job5.job_title || ' (' || job5.job_id || ')');
END;

--Result:
--Sales Manager (SA_MAN)
--Administration Vice President (AD_VP)
--Sales Manager (SA_MAN)
--Stock Manager (ST_MAN)
--Marketing Manager (MK_MAN)
--PL/SQL procedure successfully completed.