返回首页

gbase数据、南大通用产品文档:GBase8a使用约束

更新日期:2024年09月11日

审计日志用于记录所有的SQL 操作,对于包含结果集行数的统计操作,只涉及以
下4 种DML 操作:SELECT、DELETE、INSERT 和UPDATE。
清空audit_log 时,需要使用TRUNCATE SELF audit_log 语句,一般情况下,建议
每2-3 个月可以TRUNCATE 一次audit_log 表,用于清除陈旧日志信息,避免数据
过多,影响日后的分析。

IFX_LARGE_PAGES 环境变量指定数据库服务器是否可以在硬件和操作系统支持共享内
存大页面的平台上使用大页面。如果在服务器环境中启用该环境变量,那么 GBase 8s 可
以对物理内存中的非消息共享内存段使用大页面。
只有 AIX® 和 Solaris 操作系统支持 IFX_LARGE_PAGES 环境变量。如果操作系统
不支持大页面或系统上没有配置大页面,那么 IFX_LARGE_PAGES 的设置对 GBase 8s
没有影响。
只有 AIX、Solaris 和 Linux™ 操作系统支持 IFX_LARGE_PAGES 环境变量。如果
操作系统不支持大页面或系统上没有配置大页面,那么 IFX_LARGE_PAGES 的设置对
GBase 8s 没有影响。

GBase 8s SQL 指南:参考
南大通用数据技术股份有限公司 - 172 -
您可以指定 1 或 0 设置此环境变量。

0 已禁用大页面。这是 AIX 系统上的缺省值。
1 已启用大页面。这是 Solaris 系统上的缺省值。
已启用大页面。这是 Solaris 和 Linux 系统上的缺省值。
DBSA 必须使用操作系统命令来配置大页面。请参阅操作系统文档以获取配置过程。
如果足够的大页面已配置且可用,GBase 8s 可以对物理内存中锁定的非消息共享内
存段使用大页面。RESIDENT 配置参数控制在物理内存中共享内存段是否锁定,以使得
段无法交换。如果没有足够的大页面保存段,段可能包含大页面和常规页面的组合。
在 AIX 上,GBase 8s 使用的大页面的大小为 16 MB。
在 Linux x86_64 上,GBase 8s 使用的大页面由 /proc/meminfo 文件中的
Hugepagesize 条目定义。
GBase 8s 会自动对齐段地址并向上舍入到段大小。除了有关舍入的消息之外,服务
器还会在每次尝试使用大页面存储段时将参考消息写入到服务器日志文件。
启用 IFX_LARGE_PAGES 时,使用大页面可以显著提高大内存配置中的性能。

返回值

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

ROUND(X)返回参数X 四舍五入到最近的整数后的值;

ROUND(X,D)返回的X 值,
保留到小数点后D 位
(第D 位的保留方式为四舍五入)



如果D 值为负数,则保留的X 值为小数点左边的D 位数字。
示例
示例1
X 为“-1.23”,返回结果为-1。
gbase> SELECT ROUND(-1.23) FROM t;
+--------------+
| ROUND(-1.23) |
+--------------+
| -1 |
+--------------+
1 row in set
示例2
X 为“-1.58”,返回结果为-2。
gbase> SELECT ROUND(-1.58) FROM t;
+--------------+
| ROUND(-1.58) |
+--------------+
| -2 |
+--------------+
1 row in set
示例3
X 为“1.58”,返回结果为2。
gbase> SELECT ROUND(1.58) FROM t;
+-------------+
| ROUND(1.58) |
+-------------+
| 2 |
+-------------+
1 row in set
示例4
对“1.298”进行四舍五入,小数点后保留1 位数字。
gbase> SELECT ROUND(1.298, 1) FROM t;

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 469
+-----------------+
| ROUND(1.298, 1) |
+-----------------+
| 1.3 |
+-----------------+
1 row in set
示例5
对“1.298”进行四舍五入,小数点后保留0 位数字。
gbase> SELECT ROUND(1.298, 0) FROM t;
+-----------------+
| ROUND(1.298, 0) |
+-----------------+
| 1 |
+-----------------+
1 row in set
示例6
对“23.298”进行四舍五入,小数点后保留“-1”位数字,即个位数字。
gbase> SELECT ROUND(23.298, -1) FROM t;
+-------------------+
| ROUND(23.298, -1) |
+-------------------+
| 20 |
+-------------------+
1 row in set

说明

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

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

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

如果一个值的小数部分为.5 或比该值大,那么向上舍入为下一个整数(如1.5
四舍五入后为2),对于负数来说,向下舍入为下一个负数(如-1.5 四舍五入后
为-2)。

如果一个值的小数部分比.5 小,
那么向下舍入为上一个整数
(如1.4 四舍五入后
为1),对于负数来说,向上舍入为上一个负数(如-1.4 四舍五入后为-1)。

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

对于近似值数字,其结果根据C 库而定。在很多系统中,这意味着ROUND()的使用遵
循“舍入成最接近的偶数”的规则:

一个带有任何小数部分的值会被舍入成最接近的偶数整数。对于25E-1,它认为
20E-1 离它最近。
示例7
对于精确值和近似值舍入的不同之处。
gbase> SELECT ROUND(2.5), ROUND(25E-1) FROM t;
+------------+--------------+
| ROUND(2.5) | ROUND(25E-1) |
+------------+--------------+
| 3 | 2 |
+------------+--------------+
1 row in set
说明
浮点数时,不同引擎可能返回不同的值,例如在hive 和Oracle 引擎的返回值为:
gbase> select ROUND(2.5),ROUND(25E-1) from hive.t;
+------------+--------------+
| ROUND(2.5) | ROUND(25E-1) |
+------------+--------------+
| 3 | 3 |
示例8
将数值插入到DECIMAL 列,因为目标是精确值类型,所以舍入使用向上取原则,不
考虑插入值是精确值还是近似值。
gbase> DROP TABLE IF EXISTS t1;
Query OK, 0 rows affected

gbase> CREATE TABLE t1 (d DECIMAL(10,0));
Query OK, 0 rows affected

gbase> INSERT INTO t1 VALUES(2.5),(2.5E0);
Query OK, 2 rows affected, 2 warnings
Records: 2 Duplicates: 0 Warnings: 2

gbase> SELECT d FROM t1;
+------+
| d |

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 471
+------+
| 3 |
| 3 |
+------+
2 rows in set
示例9
对于DECIMAL 列和精确值的舍入使用向上舍入一半的原则。
数值小数部分为0.5 或
者更大时,则舍入到最近整数。
gbase> SELECT ROUND(2.5), ROUND(-2.5) FROM t;
+------------+-------------+
| ROUND(2.5) | ROUND(-2.5) |
+------------+-------------+
| 3 | -3 |
+------------+-------------+
1 row in set