返回首页

gbase数据、南大通用产品文档:GBase8aupdate 更新操作

更新日期:2024年09月11日

修改多条update 为关联update 时,注意将非更新表放在update 的后面。
UPDATE t1, t2 SET t2.col = 1 WHERE t1.id = t2.id;
如上语句,t1 是关联表,t2 是更新表,update 后的JOIN 列表中,要将关联表t1
写在更新表t2 的前面,有助于GCluster 层减少拉表动作。
注意
不要写成下面的形式:
update t2, t1 set t2.col = 10 where t1.id = t2.id;
update 分析器没有优化,会默认拉左表,如果把更新表写在前面的话,会
默认拉出来更新后再放回去,多出一步。

+-----------------+
1 row in set
示例5:对“1.298”进行四舍五入,小数点后保留0 位数字。
gbase> SELECT ROUND(1.298, 0) FROM dual;
+-----------------+
| ROUND(1.298, 0) |
+-----------------+
|
1 |
+-----------------+
1 row in set
示例6:对“23.298”进行四舍五入,小数点后保留“-1”位数字,即个位数字。
gbase> SELECT ROUND(23.298, -1) FROM dual;
+-------------------+
| ROUND(23.298, -1) |
+-------------------+
|
20 |
+-------------------+
1 row in set

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
766
说明

返回值类型和第一个参数的类型相同。

当第一个参数是DECIMAL 时,ROUND()为了精确计算使用精确计算库。

对于精确值数字,ROUND()使用“四舍五入”或“舍入成最接近的数”的
规则。

如果一个值的小数部分为.5 或比该值大,那么向上舍入为下一个整数(如

开启方法
方法一:可通过如下命令行开启事件调度器。
SET GLOBAL event_scheduler = ON;
SET @@global.event_scheduler = ON;
SET GLOBAL event_scheduler = 1;
SET @@global.event_scheduler = 1;
方法二:通过配置文件gbase_8a_gcluster.cnf 开启事件调度器。
……
[gbased]
……
event_scheduler= 1 #或者ON
……
查看调度器线程
gbase> show processlist\G
*************************** 1. row ***************************
Id: 1
User: event_scheduler
Host: localhost
vc: NULL
db: NULL
Command: Daemon
Time: 1034068
State: Waiting for event lock
Info: NULL
*************************** 2. row ***************************
Id: 621
User: root

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1447
Host: localhost
vc: vc1
db: NULL
Command: Sleep
Time: 376038
State:
Info: NULL
2 rows in set (Elapsed: 00:00:00.00)