返回首页

gbase数据、南大通用产品文档:GBase8sUnicode 版本

更新日期:2024年09月11日

尽管 Unicode 提供了一种使用多种语言表示文本的一种方式,但是也有不同的版本,为每
个字符提供不同的数据大小。
以下列表描述了在 GBase 8s ODBC 应用程序中支持的版本。
l UCS-2

GBase 8s ODBC Driver 程序员指南
南大通用数据技术股份有限公司
- 244 -

ISO 编码标准,将 Unicode 字符映射到每个 2 字节。UCS-2 是 Windows(TM)
上通用的编码标准。
GBase AIX 平台的 GBase 8s ODBC Driver 支持 UCS-2 编码。Windows(TM)
的 GBase 8s ODBC Driver 仅支持 UCS-2。
l UCS-4
ISO 编码标准,将 Unicode 字符映射到每个 4 字节。
UNIX(TM) 平台上,GBase 8s ODBC Driver 支持 UCS-4。
l UTF-8
基于单字节(8 位)的编码标准。UTF-8 定义了一种将所有 Unicode 字符转换
为可变长度(1 - 4)字节编码的机制。
所有的 UNIX(TM) 应用程序的 GBase 8s ODBC Driver 使用 UTF-8 编码,连接 Data
Direct(以前称为 Merant)驱动程序管理器,
ASCII 和 UTF-8 之下,7 位 ASCII 字符句具有相同的编码。这样做的好处是 UTF-8 可
以与大量现有的软件一起使用而不需要大量的修改。
重要: 在使用 Unicode 的应用程序中,驱动程序执行从 Unicode 到数据库语言环境的代码集转换工作。
UTF-8 是唯一可以设置为客户端语言环境的 Unicode 代码集类型。

功能描述
根据一个索引对表进行聚簇排序。
CLUSTER 指定GBase 8c 通过索引名指定的索引聚簇由表名指定的表。
表名上必须已经
定义该索引。
当对一个表聚集后,该表将基于索引信息进行物理存储。聚集是一次性操作:
当表被更
新之后,更改的内容不会被聚集。也就是说,
系统不会试图按照索引顺序对新的存储内容及
更新记录进行重新聚集。
在对一个表聚簇之后,
GBase 8c 会记录在哪个索引上建立了聚集。
CLUSTER table_name
的聚集形式在之前的同一个索引的表上重新聚集。用户也可以用ALTER TABLE 的
CLUSTER 或SET WITHOUT CLUSTER 形式来设置索引来用于后续的聚集操作或清除任何
之前的设置。
不含参数的CLUSTER 会将当前用户所拥有的数据库中的先前做过聚簇的所有表重新
处理,或者系统管理员调用的这些表。
在对一个表进行聚簇的时候,会在其上请求一个ACCESS EXCLUSIVE 锁。这样就避
免了在CLUSTER 完成之前对此表执行其它的操作(包括读写)。
注意事项

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
813

只有行存B-tree 索引支持CLUSTER 操作。

如果用户只是随机访问表中的行,那么表中数据的实际存储顺序是无关紧要的。但是,
如果对某些数据的访问多于其它数据,而且有一个索引将这些数据分组,那么将使用
CLUSTER 中会有所帮助。如果从一个表中请求一定索引范围的值,或者是一个索引值
对应多行,
CLUSTER 也会有助于应用,
因为如果索引标识出第一匹配行所在的存储页,
所有其它行也可能已经在同一个存储页里了,
这样便节省了磁盘访问的时间,
加速了查
询。

在聚簇过程中,
系统先创建一个按照索引顺序建立的表的临时拷贝。
同时也建立表上的
每个索引的临时拷贝。因此,需要磁盘上有足够的剩余空间,至少是表大小和索引大
小的和。

因为CLUSTER 记忆聚集信息,
可以在第一次的时候手工对表进行聚簇,
然后设置一个
类似VACUUM 的时间,这样就可以周期地自动对表进行聚簇操作。

因为优化器记录着有关表的排序的统计,所以建议在新近聚簇的表上运行ANALYZE。
否则,优化器可能会选择很差劲的查询规划。

CLUSTER 不允许在事务中执行。

如果没有打开xc_maintenance_mode 参数,那么CLUSTER 操作将跳过所有系统表。
语法格式
对一个表进行聚簇排序。
CLUSTER [ VERBOSE ] table_name [ USING index_name ];
对一个分区进行聚簇排序。
CLUSTER [ VERBOSE ] table_name PARTITION ( partition_name ) [ USING index_name ];
对已做过聚簇的表重新进行聚簇。
CLUSTER [ VERBOSE ];
参数说明

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
814

VERBOSE
启用显示进度信息。

table_name
表名称。
取值范围:已存在的表名称。

index_name
索引名称。
取值范围:已存在的索引名称。

partition_name
分区名称。
取值范围:已存在的分区名称。
示例
-- 创建一个分区表。
gbase=#CREATE TABLE tpcds.inventory_p1
(
INV_DATE_SK
INTEGER
NOT NULL,
INV_ITEM_SK
INTEGER
NOT NULL,
INV_WAREHOUSE_SK
INTEGER
NOT NULL,
INV_QUANTITY_ON_HAND
INTEGER
)
PARTITION BY RANGE(INV_DATE_SK)
(
PARTITION P1 VALUES LESS THAN(2451179),
PARTITION P2 VALUES LESS THAN(2451544),
PARTITION P3 VALUES LESS THAN(2451910),

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
815
PARTITION P4 VALUES LESS THAN(2452275),
PARTITION P5 VALUES LESS THAN(2452640),
PARTITION P6 VALUES LESS THAN(2453005),
PARTITION P7 VALUES LESS THAN(MAXVALUE)
);
-- 创建索引ds_inventory_p1_index1。
gbase=#CREATE INDEX ds_inventory_p1_index1 ON tpcds.inventory_p1 (INV_ITEM_SK)
LOCAL;
-- 对表tpcds.inventory_p1 进行聚集。
gbase=#CLUSTER tpcds.inventory_p1 USING ds_inventory_p1_index1;
-- 对分区p3 进行聚集。
gbase=#CLUSTER tpcds.inventory_p1 PARTITION (p3) USING ds_inventory_p1_index1;
-- 对数据库中可以进行聚集的表进聚集。
gbase=#CLUSTER;
--删除索引。
gbase=#DROP INDEX tpcds.ds_inventory_p1_index1;
--删除分区表。
gbase=#DROP TABLE tpcds.inventory_p1;
优化建议

建议在新近聚簇的表上运行ANALYZE。否则,优化器可能会选择很差劲的查询规划。

不允许在事务中执行CLUSTER。

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
816

概述
全文检索(FULL TEXT SEARCH)技术就是将各种文章或信息中所有的文字序列
都作为检索对象,找出包含有待索词汇的文章或对象。
GBase 8a MPP Cluster 数据库支持全文检索,
默认采用全单字索引方式,
支持几乎
所有的语种,
并且可以保证100%的查询召回率。结合GBase 8a MPP Cluster 独特
的列存储,压缩和智能索引技术,适合面向海量数据的检索查询应用。