返回首页

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

更新日期:2024年09月11日

+------------+-------------------------+
2 rows in set (Elapsed: 00:00:00.47)
注意
如果用户在GROUP BY 部分省略的列在分组中不是唯一的,请不要
使用这个特性,否则将得到不可预知的结果。
GROUP BY 优化
使用hint 优化GROUP BY:

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
868
create table users(u_id int,u_name char(10),birthday datetime,address
varchar(10));
create table products(p_id int,p_name char(10),price float,stocks int);
create table orders(o_id int,u_id int,p_id int,amount int);
insert into users values (0,'zhao','1990-12-29 12:00:00','中国.吉林.长春');
insert into users values (1,'qian','1990-12-29 12:00:00','中国.北京');
insert into users values (2,'sun','1990-12-29 12:00:00','中国.上海');
insert into users values (3,'li','1990-12-29 12:00:00','中国.天津');
insert into users values (4,'zhou','1990-12-29 12:00:00','中国.湖北.武汉');
insert into users values (5,'wu','1990-12-29 12:00:00','中国.湖南.长沙');
insert into users values (6,'zheng','1990-12-29 12:00:00','中国.河北.沧州');
insert into users values (7,'wang','1990-12-29 12:00:00','中国.辽宁.沈阳');
insert into users values (8,'zhao','1990-12-29 12:00:00','中国.云南.昆明');
insert into users values (9,'li','1990-12-29 12:00:00','中国.西藏.拉萨');
insert into orders values (600001,1,100010,2500);
insert into orders values (600002,3,100008,3500);
insert into orders values (600003,4,100009,500);
insert into orders values (600004,5,100007,5000);
insert into orders values (600005,9,100003,2510);
insert into orders values (600006,0,100004,10500);
insert into orders values (600007,3,100002,5500);
insert into orders values (600008,3,100001,6000);
insert into orders values (600009,4,100009,2100);
insert into orders values (600010,5,100001,1300);
insert into orders values (600011,6,100007,8900);
insert into orders values (600012,9,100008,2900);
insert into orders values (600013,2,100009,6900);
insert into orders values (600014,1,100002,3600);
insert into orders values (600015,1,100003,1500);
SELECT /*+ first_groupby */ distinct `users`.u_name , sum(orders.amount)
FROM
users,
orders
WHERE
users.u_id
=
orders.u_id
GROUP BY
`users`.u_name ORDER BY
`users`.u_name limit 3;
上面的sql 会先在orders 表上做group by 之后再去join users。

STATEMENT_WLMSTAT_COMPLEX_RUNTIME 视图显示和当前用户执行作业正在运
行时的负载管理相关信息。
名称
类型
描述

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
1035
名称
类型
描述
datid
oid
连接后端的数据库OID。
datname
name
连接后端的数据库名称。
threadid
bigint
后端线程ID。
processid
integer
后端线程的pid。
usesysid
oid
登录后端的用户OID。
appname
text
连接到后端的应用名。
usename
name
登录到该后端的用户名。
priority
bigint
语句所在Cgroups 的优先级。
attribute
text
语句的属性:
Ordinary:
语句发送到数据库后被解析前的默
认属性。
Simple:简单语句。
Complicated:复杂语句。
Internal:数据库内部语句。
block_time
bigint
语句当前为止的pending 的时间,单位s。
elapsed_time
bigint
语句当前为止的实际执行时间,单位s。
total_cpu_time
bigint
语句在上一时间周期内的数据库节点上CPU
使用的总时间,单位s。
cpu_skew_percent
integer
语句在上一时间周期内的数据库节点上CPU
使用的倾斜率。
statement_mem
integer
语句执行使用的statement_mem,预留字段。
active_points
integer
语句占用的资源池并发点数。
dop_value
integer
语句的从资源池中获取的dop 值。
control_group
text
该字段不支持。
status
text
该字段不支持。

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
1036
名称
类型
描述
enqueue
text
语句当前的排队情况,包括:
Global:在全局队列中排队。
Respool:在资源池队列中排队。
CentralQueue:在中心协调节点(CCN)中排
队。
Transaction:语句处于一个事务块中。
StoredProc:句处于一个存储过程中。
None:未在排队。
Forced None:事务块语句或存储过程语句由
于超出设定的等待时间而强制执行。
resource_pool
name
语句当前所在的资源池。
query
text
该后端的最新查询。如果state 状态是active
(活的),此字段显示当前正在执行的查询。
所有其他情况表示上一个查询。
is_plana
boolean
逻辑GBase 8c 模式下,
语句当前是否占用其
他逻辑GBase 8c 的资源执行。该值默认为f
(否)。
node_group
text
语句所属用户对应的逻辑GBase 8c。

示例中用到的表及数据:
DROP TABLE IF EXISTS cust;
CREATE TABLE cust(c_id INT, c_name VARCHAR(20), c_addr VARCHAR(100));
INSERT INTO cust VALUES (1, 'xiaoming', 'Tianjin');
INSERT INTO cust VALUES (3, 'qiaorui', 'Hebei');
INSERT INTO cust VALUES (4, 'tianfei', 'Anhui');
INSERT INTO cust VALUES (2, 'zhangling', 'Hunan');

gbase> rmt:SELECT * FROM cust INTO OUTFILE '/home/gbase/temp/cust.txt' FIELDS
TERMINATED BY ';' ENCLOSED BY '"';
Query OK, 4 rows affected
查看导出文件:
$ cat cust.txt
"1";"xiaoming";"Tianjin"
"3";"qiaorui";"Hebei"
"4";"tianfei";"Anhui"

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 253
"2";"zhangling";"Hunan"