返回首页

gbase数据、南大通用产品文档:GBase8sPDQPRIORITY 环境变量

更新日期:2024年09月11日

PDQPRIORITY 环境变量确定数据库服务器使用的并行度,并影响数据库服务器分配资
源(包括内存、处理器和磁盘读取)的方式。

resources 是范围从 0 至 100 的整数。值 1 相当于 LOW,而值 100 相当于
HIGH。小于 0 的值将设置为 0 (OFF),而大于 100 的值将设置为 100 (HIGH)。
值 0 相当于 OFF(仅适用于 GBase 8s)。
此处 HIGH、LOW 和 OFF 关键字具有下列作用:
HIGH 当数据库服务器在所有用户间分配资源时,它将给予该查询尽可能多的资
源。
LOW 以并行方式从分段表中访存数据值。
OFF 关闭了 PDQ 处理(仅适用于 GBase 8s)。
通常,数据库服务器使用的资源越多,它针对给定查询的性能也就越好。但是,如果
服务器使用的资源过多,那么资源争用可能夺取其他查询的资源,从而使得性能下降。有
关 PDQPRIORITY 的性能注意事项的更多信息,请参阅《GBase 8s 性能指南》。

GBase 8s SQL 指南:参考
南大通用数据技术股份有限公司 - 193 -
如 GBase 8s SQL 指南:语法 所述,当应用程序发出 SQL 语句 SET
PDQPRIORITY 时,会覆盖此环境变量的设置。
在 GBase 8s 中使用 PDQPRIORITY
资源值会指定查询优先级和数据库服务器用来处理该查询的资源量。
如果未设置 PDQPRIORITY,那么缺省值为 OFF。
当 PDQPRIORITY 设置为 HIGH 时,GBase 8s 根据几个标准确定用于
PDQPRIORITY 的适当值。这些标准包括可用处理器的数目、被查询的表的分段存储、该
查询的复杂性和其他因子。

COUNT(DISTINCT expr,[expr...])
函数说明
返回不同的非NULL 的值的总数目。
示例
示例1:返回lo_orderkey 列中不同的非NULL 的值的总数目。
gbase> SELECT COUNT(DISTINCT lo_orderkey) FROM ssbm.lineorder;
+-----------------------------+
| COUNT(DISTINCT lo_orderkey) |
+-----------------------------+
|
1500000 |
+-----------------------------+
1 row in set

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
858
说明
GBase 8a MPP Cluster 中,用户通过给定一个表达式列表而获取不包
含NULL 不同表达式组合的数目。

显式游标和游标变量具有相同的属性。
%ISOPEN:如果打开了游标则返回TRUE,否则返回FALSE。该属性用于:
l
在打开游标前用于检测显式游标是否打开。
l
在关闭游标前,检测是否已经打开。
CREATE OR REPLACE PROCEDURE P_6_11 AS
CURSOR c1 IS SELECT last_name, salary FROM employees WHERE ROWNUM < 11;
the_name employees.last_name%TYPE;
the_salary employees.salary%TYPE;
BEGIN
IF NOT c1%ISOPEN THEN
OPEN c1;
END IF;
FETCH c1 INTO the_name, the_salary;
IF c1%ISOPEN THEN
CLOSE c1;
END IF;
END;
%FOUND:用于判断是否有取回的行。返回值:
l
NULL 在打开显式游标之后,FETCH数据之前。
l
TRUE 最近一个FETCH获得了一条数据
l
FALSE 其他
CREATE OR REPLACE PROCEDURE P_6_12 AS
CURSOR c1 IS SELECT last_name, salary FROM employees
WHERE ROWNUM < 11 ORDER BY last_name;
my_ename employees.last_name%TYPE;
my_salary employees.salary%TYPE;
BEGIN
OPEN c1;
LOOP
FETCH c1 INTO my_ename, my_salary;

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

IF c1%FOUND THEN -- fetch succeeded
DBMS_OUTPUT.PUT_LINE('Name = ' || my_ename || ', salary = ' || my_salary);
ELSE -- fetch failed
EXIT;
END IF;
END LOOP;
END;

--Result:
--Name = Austin, salary = 4800
--Name = De Haan, salary = 17000
--Name = Ernst, salary = 6000
--Name = Faviet, salary = 9000
--Name = Greenberg, salary = 12008
--Name = Hunold, salary = 9000
--Name = King, salary = 24000
--Name = Kochhar, salary = 17000
--Name = Lorentz, salary = 4200
--Name = Pataballa, salary = 4800
%NOTFOUND:用于退出循环
l
NULL在打开显式游标之后,FETCH数据之前。
l
FLASE最近一个FETCH获得了一条数据
l
TRUE其他
CREATE OR REPLACE PROCEDURE P_6_13 AS
CURSOR c1 IS SELECT last_name, salary FROM employees
WHERE ROWNUM < 11 ORDER BY last_name;
my_ename employees.last_name%TYPE;
my_salary employees.salary%TYPE;
BEGIN
OPEN c1;
LOOP
FETCH c1 INTO my_ename, my_salary;
IF c1%NOTFOUND THEN -- fetch failed
EXIT;
ELSE -- fetch succeeded
DBMS_OUTPUT.PUT_LINE('Name = '|| my_ename || ', salary = ' || my_salary);
END IF;
END LOOP;
END;

--Result:

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

--Name = Austin, salary = 4800
--Name = De Haan, salary = 17000
--Name = Ernst, salary = 6000
--Name = Faviet, salary = 9000
--Name = Greenberg, salary = 12008
--Name = Hunold, salary = 9000
--Name = King, salary = 24000
--Name = Kochhar, salary = 17000
--Name = Lorentz, salary = 4200
--Name = Pataballa, salary = 4800
%ROWCOUNT:返回值
l
ZERO:在打开显式游标之后,FETCH数据之前
l
其他:FETCH获得了行数
CREATE OR REPLACE PROCEDURE P_6_14 AS
CURSOR c1 IS SELECT last_name FROM employees
WHERE ROWNUM < 11 ORDER BY last_name;
name employees.last_name%TYPE;
BEGIN
OPEN c1;
LOOP
FETCH c1 INTO name;
EXIT WHEN c1%NOTFOUND OR c1%NOTFOUND IS NULL;
DBMS_OUTPUT.PUT_LINE( name);
IF c1%ROWCOUNT = 5 THEN
DBMS_OUTPUT.PUT_LINE('--- Fetched 5th row ---');
END IF;
END LOOP;
CLOSE c1;
END;