暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GBase 8a MPP使用时 数据库基础问题之三

路易十四猪 2021-12-16
508

2.2.9HeapUsed(,,) 和 SystemUsed(,,) 代表什么
问题现象
HeapUsed(40316342048,97627136,8491566256) 和 SystemUsed(212425116840,0,0) 代
表什么?
处理方法
 HeapUsed(40316342048,97627136,8491566256) 表示各堆内使用了的内存大小,
相当于 show status 里的 heap used size ;
 SystemUsed(212425116840,0,0) 指各堆在系统里 malloc 的大小;
 顺序就是 cell( 或者 dc) 、 large 、 temp 。
gbase> show status like '%heap%';
+----------------------------------+-----------+
| Variable_name | Value |
+----------------------------------+-----------+
| Meminfo_dc_heap_availble_size | 536870912 |
| Meminfo_dc_heap_malloc_size | 0 |
| Meminfo_dc_heap_total_size | 536870912 |
| Meminfo_dc_heap_used_size | 0 |
| Meminfo_large_heap_availble_size | 268435456 |
| Meminfo_large_heap_malloc_size | 0 |
| Meminfo_large_heap_total_size | 268435456 |
| Meminfo_large_heap_used_size | 0 |
| Meminfo_temp_heap_availble_size | 268430464 |
| Meminfo_temp_heap_malloc_size | 0 |
| Meminfo_temp_heap_total_size | 268435456 |
| Meminfo_temp_heap_used_size | 4992 |
+----------------------------------+-----------+
12 rows in set (Elapsed: 00:00:00.01)
说明
HeapUsed 对应 show status 的 used_size , SystemUsed 对应 malloc_size ,而 total_size 受到
下面参数的控制。
#gbase_heap_data=512M
#gbase_heap_temp=256M
#gbase_heap_large=256M
2.2.10 设置 group_concat_max_len 参数后报错
问题现象
设置 group_concat_max_len 参数后,直接执行 SQL 导致执行报错:”source table
and destination table are not same”
drop table if exists td_calling_type_code_crm2qyzx2yzhy;
create table td_calling_type_code_crm2qyzx2yzhy(yn_vertical_type
varchar(20),crm_calling_type_name varchar(3000));
insert into td_calling_type_code_crm2qyzx2yzhy values('1',repeat('abcde',500));
set global group_concat_max_len=655360;
SELECT c.crm_calling_type_name_all
FROM td_calling_type_code_crm2qyzx2yzhy b
LEFT JOIN (
SELECT group_concat(crm_calling_type_name) crm_calling_type_name_all
,yn_vertical_type
FROM td_calling_type_code_crm2qyzx2yzhy
GROUP BY yn_vertical_type
,crm_calling_type_name
) c ON b.yn_vertical_type = c.yn_vertical_type;
解决方法:
set global group_concat_max_len 之后不退出直接执行 sql,不同 gn 层取到的值
不一样,导致创建临时表表结构不一致。修改全局配置项后需要退出当前会话,重
连生效。
2.3 权限
2.3.1 是否具备单独的 CREATE DATABASE 权限
问题现象
是否具备单独的 CREATE DATABASE 权限。
处理方法
没有单独的 CREATE DATABASE 权限,用户想要建库,需要被授予 db 级别权限
create on *.* 权限,在此权限下也可以建表。
2.3.2 unmask 权限使用说明
问题现象
脱敏功能下执行 sql 或存储过程报错,甚至 gcluster 宕机,需要检查 unmask 权限。
解决方法:
Unmask 是面向脱敏控制的权限,对于脱敏数据,拥有 unmask 权限的普通用户可以
看到原始数据,没有 unmask 权限的普通用户只能看到脱敏后的数据。权限是针对
普通用户的全局权限,不属于某一个 VC 或库表,在 gbase.user 表中 Unmask_priv
列可以查看用户的 unmask 权限。
Alter table tb alter col masked 修改脱敏属性,需要拥有 alter 和 unmask 权
限才可以执行。
新创建的数据库用户,赋予的 all 权限不包括 unmask 权限,unmask 权限需要单独
赋予。如:
gbase> create user unmaskuser;
Query OK, 0 rows affected (Elapsed: 00:00:00.88)
gbase> grant all on *.* to unmaskuser;
Query OK, 0 rows affected (Elapsed: 00:00:00.14)
gbase> select Unmask_priv,user from gbase.user where user='unmaskuser';
+-------------+--------------------------------------------------------
| Unmask_priv | user
+-------------+--------------------------------------------------------
| N
| unmaskuser
+-------------+--------------------------------------------------------
1 row in set (Elapsed: 00:00:00.12)
gbase> grant unmask on *.*.* to unmaskuser;
Query OK, 0 rows affected (Elapsed: 00:00:00.05)
gbase> select Unmask_priv,user from gbase.user where user='unmaskuser';
+-------------+--------------------------------------------------------
| Unmask_priv | user
+-------------+--------------------------------------------------------
| Y
| unmaskuser
+-------------+--------------------------------------------------------
1 row in set (Elapsed: 00:00:00.00)
————————————————
版权声明:本文为CSDN博主「m0_49291452」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_49291452/article/details/121979293

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论