返回首页

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

更新日期:2024年09月11日

取值:[0|1]
默认值:1
说明:设置对单表进行count(*)时,不产生中间结果表,gcluster 直接计算结果值。
•0:按照产生中间表的方式执行;
•1:gcluster 直接计算count 值。
优化点:count(*) 时原来的策略是先在发起节点上的gnode 上创建一个临时的汇
总表,把各个节点的执行结果汇总到该临时的汇总表上,然后对该临时的汇总表
再做sum 的汇总,汇总完成后再删除临时的汇总表,当有高并发时,频繁的创建和

GBase 8a MPP Cluster 参数手册
文档版本2022-06-07
南大通用数据技术股份有限公司
25
删除临时的汇总表将降低性能,现在修改为不创建临时的汇总表,把各个节点的
执行结果收集到gcluster 上,由gcluster 直接计算,因此不需要创建和删除临时的
汇总表,从而提高性能。。
修改方式:
可使用set 语句修改值也可在配置文件中修改值。
适用于session、
global
范围均可。

gbase_character_set_name
 摘要
为当前连接返回默认的字符集。
 语法
const char * gbase_character_set_name(GBASE *gbase);
 返回值
 默认字符集。

语法格式
CREATE TABLE [IF NOT EXISTS] table_nam
(col_name type,...)
NOCOPIES;
参数说明
NOCOPIES:在创建表时,使用关键词NOCOPIES 可以创建一张不带副本的表。
功能
nocopies 表和分布表(随机分布表和哈希分布表)一样,数据分布存储,支持表的
DDL 语法和DML 语法;与分布表的区别是,不产生副本,所以无法提供数据的高
可用性。
nocopies 表支持使用gcdump 工具导出表结构。
nocopies 表支持使用SELECT INTO OUTFILE 和rmt: SELECT INTO OUTFILE 语句
导出数据。
GBase UP 支持nocopies 表到非nocopies 表的转换。
使用约束
nocopies 表不支持使用数据加载工具进行数据加载。
nocopies 表不支持数据同步、重分布、备份与恢复。

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 616
示例
示例1:从系统库的表中查看nocopies 表信息。
gbase> USE test;
Query OK, 0 rows affected
gbase> CREATE TABLE t_1 (a int) NOCOPIES;
Query OK, 0 rows affected
gbase> CREATE TABLE t_2 (a int) NOCOPIES;
Query OK, 0 rows affected
gbase> CREATE TABLE t_3 (a int) NOCOPIES;
Query OK, 0 rows affected
gbase> SELECT * FROM gbase.table_distribution WHERE is_nocopies='YES';
+------------+--------+--------+-------------+-------------+
| index_name | dbName | tbName | isReplicate | hash_column |
+------------+--------+--------+-------------+-------------+
| test.t_1 | test | t_1 | NO | NULL |
| test.t_2 | test | t_2 | NO | NULL |
| test.t_3 | test | t_3 | NO | NULL |
+------------+--------+--------+-------------+-------------+
+------------------+--------------------+-------------+
| lmt_storage_size | table_storage_size | is_nocopies |
+------------------+--------------------+-------------+
| NULL | NULL | YES |
| NULL | NULL | YES |
| NULL | NULL | YES |
+------------------+--------------------+-------------+
3 rows in set
示例2:创建nocopies 表。
gbase> CREATE TABLE t1 (a int) NOCOPIES;
Query OK, 0 rows affected
gbase> SHOW CREATE TABLE t1;
+-------+--------------------------------------------------+
| Table | Create Table |
+-------+--------------------------------------------------+
| t1 | CREATE TEMPORARY TABLE "t1" (
"a" int(11) DEFAULT NULL
)ENGINE=EXPRESS NOCOPIES DEFAULT CHARSET=utf8 TABLESPACE='sys_tablespace'
|+-------+--------------------------------------------------+
1 row in set
示例3:创建nocopies 表,使用DISTRIBUTED BY 关键字。

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 617
gbase> CREATE TABLE t1 (a int,b varchar(10)) DISTRIBUTED BY ('a') NOCOPIES;
Query OK, 0 rows affected
gbase> SHOW CREATE TABLE t1;
+-------+----------------------------------------------------------+
| Table | Create Table |
+-------+----------------------------------------------------------+
| t1 | CREATE TABLE "t1" (
"a" int(11) DEFAULT NULL,
"b" varchar(10) DEFAULT NULL
) ENGINE=EXPRESS DISTRIBUTED BY('a') NOCOPIES DEFAULT CHARSET=utf8
TABLESPACE='sys_tablespace' |
+-------+----------------------------------------------------------+
1 row in set
示例4:创建nocopies 表,使用TEMPORARY 关键字。
gbase> CREATE TABLE t1 (a int,b varchar(10)) DISTRIBUTED BY ('a') NOCOPIES;
Query OK, 0 rows affected
gbase> SHOW CREATE TABLE t1;
+-------+----------------------------------------------------------+
| Table | Create Table |
+-------+----------------------------------------------------------+
| t1 | CREATE TEMPORARY TABLE "t1" (
"a" int(11) DEFAULT NULL,
"b" varchar(10) DEFAULT NULL
) ENGINE=EXPRESS DISTRIBUTED BY('a') NOCOPIES DEFAULT CHARSET=utf8
TABLESPACE='sys_tablespace' |
+-------+----------------------------------------------------------+
1 row in set
示例5 :复制全表表结构及数据来创建nocopies 表。(CREAET TABLE
NOCOPIES…AS SELECT…)

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 618
gbase> CREATE TABLE t7(a INT, b DECIMAL, c FLOAT, d DATETIME);
Query OK, 0 rows affected
gbase> INSERT INTO t7 VALUES(1,2,3.345,'2011-11-11 11:11:11'),(3,5,5.678,'2011-11-11
22:22:22');
Query OK, 2 rows affected
Records: 2 Duplicates: 0 Warnings: 0
gbase> DROP TABLE IF EXISTS t8;
Query OK, 0 rows affected
gbase> CREATE TABLE t8 NOCOPIES AS SELECT * FROM t7;
Query OK, 2 rows affected
gbase> SELECT * FROM t8;
+------+------+-------+---------------------+
| a | b | c | d |
+------+------+-------+---------------------+
| 1 | 2 | 3.345 | 2011-11-11 11:11:11 |
| 3 | 5 | 5.678 | 2011-11-11 22:22:22 |
+------+------+-------+---------------------+
2 rows in set