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)