返回首页

gbase数据、南大通用产品文档:GBase8a使用游标操作数据库

更新日期:2024年09月11日

使用游标操作数据库资源,包括:执行SQL 语句、调用存储过程、执行事
务、获取结果集操作。

GBase Python 接口开发手册


- 6 -

南大通用数据技术股份有限公司

使用 DS_TOTAL_MEMORY 配置参数来指定 PDQ 查询可用的内存数量。此数量应小于计算机
物理内存,减去固定的开销,比如操作系统大小和缓冲池大小。
onconfig.std 值
未设置。
如未出现
如果设置 SHMTOTAL=0 和 DS_MAX_QUERIES,
则 DS_TOTAL_MEMORY
=
DS_MAX_QUERIES
*
128。

如果 SHMTOTAL=0 且未设置 DS_MAX_QUERIES,则 DS_TOTAL_MEMORY = num_cpu_vps * 2 *
128。

GBase 8s 管理员参考
南大通用数据技术股份有限公司 - 73 -

如果设置 DS_MAX_QUERIES,则最小值是 DS_MAX_QUERIES * 128。
如果未设置 DS_MAX_QUERIES,则最小值是 num_cpu_vps * 2 * 128。
没有最大值限制,除非在您机器上的软件有任何限制。
单位
KB
生效
编辑 onconfig 文件并重启数据库服务器之后。
当您通过运行 onmode -wf 在 onconfig 文件中动态地重置该值时。
当您通过运行 onmode -wm 重置内存中的该值时。
用法
不要将 DS_TOTAL_MEMORY 跟配置参数 SHMTOTAL 和 SHMVIRTSIZE 弄混。
SHMTOTAL 设置指
定数据库服务器的所有内存(内存的常驻、虚拟和消息部分的总和)。SHMVIRTSIZE 设置
指定虚拟部分的大小。DS_TOTAL_MEMORY 是 SHMVIRTSIZE 的一个逻辑子集。
对于 OLTP 应用程序,将 DS_TOTAL_MEMORY 设置在 20% 与 SHMTOTAL 值的 50% 之间的
KB 数。
对于涉及大的决策支持(DSS)查询的应用程序,将 DS_TOTAL_MEMORY 值增加到 50% 与
SHMTOTAL 的 80% 之间。如果您使用数据库服务器排他地进行 DSS 查询,则将此参数设置
在 90% 与 SHMTOTAL 的 100% 之间。
设置 DS_TOTAL_MEMORY 配置参数为不大于 (SHMVIRTSIZE - 10 MB)的任意值。
有关您的平台上最大可用内存的信息,请参阅 GBase 8s machine notes。
DS_TOTAL_MEMORY 的算法
当您未设置 DS_TOTAL_MEMORY 时,或您设置一个不合适的值,数据库服务器得出一个
DS_TOTAL_MEMORY 的值。要了解关于算法的信息,请参阅 GBase 8s 性能指南。

GROUP BY CUBE 函数
语法
GROUP BY CUBE( (…),(…),…)
功能
对CUBE 后面括号里的n 个字段或表达式组合做GROUP BY 操作,最后将结果
合并在一起,组合方式为n 个字段或表达式的全部子集。
详细解释
GROUP BY CUBE(A,B,C) (A、B、C 代表语法中的“(…)”)

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
885
首先会对(A、B、C)进行GROUP BY,然后依次是(A、B),(A、C),(A),(B、
C),
(B),
(C),
然后对全表进行GROUP BY 操作,
最后将所有结果合并在一起
(相
当于UNION ALL 操作),如果n 个字段或表达式中的一个或多个在某一分组中
不出现在GROUP BY 后面,用NULL 代替不出现的字段或表达式。
示例
示例中所用的表及数据:
DROP TABLE IF EXISTS t3;
CREATE TABLE t3 (color_type varchar(20),color_count int, in_date date);
INSERT INTO t3 (color_type,in_date,color_count)
VALUES('black','2010-09-11',18),
('black','2010-10-05',18),('black','2010-10-13',31),
('blue','2010-09-21',23),('blue','2010-09-30',15),
('blue','2010-10-11',62),('red','2010-09-12',41),
('red','2010-10-01',12),('red','2010-10-05',11);
示例1:GROUP BY CUBE(color_type,f_YearMonth)
gbase> SELECT color_type,in_date,color_count FROM t3 ORDER BY
color_type,in_date;
+------------+------------+-------------+
| color_type | in_date
| color_count |
+------------+------------+-------------+
| black
| 2010-09-11 |
18 |
| black
| 2010-10-05 |
18 |
| black
| 2010-10-13 |
31 |
| blue
| 2010-09-21 |
23 |
| blue
| 2010-09-30 |
15 |
| blue
| 2010-10-11 |
62 |
| red
| 2010-09-12 |
41 |
| red
| 2010-10-01 |
12 |
| red
| 2010-10-05 |
11 |
+------------+------------+-------------+
9 rows in set
gbase> SELECT NVL(color_type,'') as color_type_show,NVL(DECODE(co
lor_type,NULL,f_YearMonth || '合计',NVL(f_YearMonth,color_type || ' 小
计')),'总计') AS f_YearMonth_show,SUM(color_count) FROM (SELECT c
olor_type,DATE_FORMAT(in_date, '%Y-%m') as f_YearMonth,color_coun
t FROM t3) t GROUP BY CUBE(color_type,f_YearMonth) ORDER BY
color_type,f_YearMonth;
+-----------------+------------------+------------------+
| color_type_show | f_YearMonth_show | SUM(color_count) |

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
886
+-----------------+------------------+------------------+
| black
| 2010-09
|
18 |
| black
| 2010-10
|
49 |
| black
| black 小计
|
67 |
| blue
| 2010-09
|
38 |
| blue
| 2010-10
|
62 |
| blue
| blue 小计
|
100 |
| red
| 2010-09
|
41 |
| red
| 2010-10
|
23 |
| red
| red 小计
|
64 |
|
| 2010-09 合计
|
97 |
|
| 2010-10 合计
|
134 |
|
| 总计
|
231 |
+-----------------+------------------+------------------+
12 rows in set