返回首页

gbase数据、南大通用产品文档:GBase8sindex estimate_compression 参数:估计索

更新日期:2024年09月11日

引压缩(SQL 管理 API)

GBase 8s 管理员参考
南大通用数据技术股份有限公司 - 754 -
随同 admin() 或 task() 函数,使用 index
estimate_compression 参数来估计您是否可
通过压缩 B-tree 索引节省磁盘空间。
语法:index estimate_compression 命令参数

命令元素
下表显示您可用来估计索引压缩的元素。
元素
描述
关键考虑
index_name
您想要估算压缩成效的
那个索引的名称。
要求的。
您必须使用与系统目录表中相同的大写或小
写字母。
database_name
包含该索引的数据库名。
可选的。
如果您未指定数据库,
则数据库服务器使用当
前的数据库。
如果您输入数据库名称,
则必须使用与系统目
录表中相同的大写或小写字母。
owner
包含该索引的数据库的
所有者名称。
对于索引可选的。
如果您未指定所有者,
则数据库服务器使用当
前的所有者。
如果您输入所有者名称,
则必须使用与系统目
录表中相同的大写或小写字母。

用法
您可仅对分片的或未分片的表上分离的 B-tree 索引估计压缩。
估计压缩操作显示索引名、可被归档的估计的压缩比率、当前的压缩比率和百分率损益的
估计。如果索引未压缩,则当前的比率为 0.0。

GBase 8s 管理员参考
南大通用数据技术股份有限公司 - 755 -
示例
下列命令估计 customer 数据库中名为 ind4 的索引压缩成效,数据库所有者是 anjul。
EXECUTE FUNCTION task("index estimate_compression","ind4",
"customer","anjul");

在本例中,echo是一个块和一个子程序的名称。块和子程序都声明一个名为x的变
量。在子程序中,echo.x是指局部变量x,而不是全局变量x。
<>
DECLARE
x NUMBER := 5;
PROCEDURE echo AS
x NUMBER := 0;
BEGIN
DBMS_OUTPUT.PUT_LINE('x = ' || x);
DBMS_OUTPUT.PUT_LINE('echo.x = ' || echo.x);
END;
BEGIN
echo;
END;

--Result:
--x = 0
--echo.x = 0

函数说明
ROWID 为行号函数,返回某行数据在data 节点上的行号信息。
功能描述
ROWID 功能与主键类似,由server 自动维护,不实际存储。
使用说明
实现了两种语法:伪列形式和函数形式(两种写法完全等价,不区分大小写)。
其中,函数形式为ROWID(表名)。
示例:
SELECT *, ROWID, ROWID(t1) FROM t1;
SELECT * FROM t1 WHERE ROWID = 1;
功能说明

ROWID 返回类型为BIGINT,从0 开始排号;

ROWID 相当于server 给表自动添加的伪列,可以查询及使用,由server 自
动维护,
不实际存储,
不需要也不允许用户进行管理
(如修改或创建索引等)


ROWID 作为保留字使用,
不允许使用ROWID 作为任何数据对象的名称
(不
论大小写及是否有单撇);

DML 不会影响原有数据的ROWID;

性能方面,ROWID 与常量的简单比较,如...WHERE ROWID = 1,可以使用
智能索引对dc 进行过滤,支持的比较类型包括:>,>=,<,<=,=,<>,IS
NULL,IS NOT NULL,BETWEEN,NOT BETWEEN;

仅Express 引擎支持ROWID,其他引擎执行时(如含有ROWID)会报错。
示例

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
909
示例1:ROWID,ROWID(t1)。
gbase> DROP TABLE IF EXISTS t1;
Query OK, 0 rows affected
gbase> CREATE TABLE t1(i int, j int);
Query OK, 0 rows affected
gbase> INSERT INTO t1 VALUES(2,1),(2,3),(2,3),(2,5),(3,2),(3,2),(3,2),(3,4),
(3,1),(3,5);
Query OK, 10 rows affected
Records: 10
Duplicates: 0
Warnings: 0
gbase> SELECT *, ROWID, ROWID(t1) FROM t1;
+------+------+-------+-------+
| i
| j
| ROWID | rowid |
+------+------+-------+-------+
|
2 |
1 |
0 |
0 |
|
2 |
3 |
1 |
1 |
|
2 |
3 |
2 |
2 |
|
2 |
5 |
3 |
3 |
|
3 |
2 |
4 |
4 |
|
3 |
2 |
5 |
5 |
|
3 |
2 |
6 |
6 |
|
3 |
4 |
7 |
7 |
|
3 |
1 |
8 |
8 |
|
3 |
5 |
9 |
9 |
+------+------+-------+-------+
10 rows in set
示例2:ROWID = 1
gbase> DROP TABLE IF EXISTS t1;
Query OK, 0 rows affected
gbase> CREATE TABLE t1(i int, j int);
Query OK, 0 rows affected
gbase> INSERT INTO t1 VALUES(2,1),(2,3),(2,3),(2,5),(3,2),(3,2),(3,2),(3,4),
(3,1),(3,5);
Query OK, 10 rows affected
Records: 10
Duplicates: 0
Warnings: 0
gbase> SELECT * FROM t1 WHERE ROWID = 1;
+------+------+
| i
| j
|

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
910
+------+------+
|
2 |
3 |
+------+------+
1
row in set