南大通用GBase8s 常用SQL语句(八十八)
表的 COMPRESSED 选项
当数据加载到表或表分片中时,使用 CREATE TABLE 语句的 COMPRESSED 选项启用自动压缩大量数据行。
在使用 COMPRESSED 选项创建表之后,数据库服务器自动创建压缩自动并压缩 2000 行之后的数据行或更多加载到表中或分片中数据。 如果数据通过轻量级追加加载,则前 2000 行和所有连续的行都会被压缩。如果数据通过其它方式加载,则压缩前 2000 行之后的所有连续的行。要压缩初始的 2000 行,请运行带有 table compress 或 fragment compress 参数的SQL 管理 API task() 或 admin() 函数。
COMPRESSED 选项只对行中的数据启用。 COMPRESSED 选项不会启用 dbspace 或索引中的简单大对象的自动压缩。(您可以使用 CREATE INDEX 语句的 COMPRESSED 关键字创建一个压缩的 B-tree 索引。)
以下示例创建了一个设置为可以自动压缩的表:
CREATE TABLE cust5 ( ...) COMPRESSED;
以下示例还创建了一个名为 t 的表,并定义其第一个和后续 extent 大小设置为自动压缩:
CREATE TABLE t(c int, d int) EXTENT SIZE 32 NEXT SIZE 32 COMPRESSED;
要禁用自动压缩新行中数据,请在表上运行带有 table uncompress 参数的 SQL 管理 API task() 或 admin() 函数。您可以使用 fragment uncompress 和 fragment compress 参数控制表分片的压缩。
延迟 extent 存储分配
如果 IN dbspace 是新表的唯一的存储规范,则会在创建表时为第一个 extent 缺省分片 16 千字节存储(或者四页面的足够的存储,如果 4 页需要对于 16 千字节)。
但是,如果 CREATE TABLE 语句不包含以下存储规范,则不会第一个 extent 分配存储:
- EXTENT SIZE
- NEXT SIZE
- IN dbspace 。
在这种情况中,除非第一行已经存储在表中,否则会延迟第一个 extent 的存储分配。
相同存储分配延迟适用于通过不包含以上存储规范列表的 CREATE TEMP TABLE 语句定义的表。
当首次向已延迟 extent 分配的表中插入行时,第一个 extent 的缺省大小为 16 千字节。如果 16 千字节不足 4 个页面,则第一个 extent 大小将会是 4 页。
USING 存取方法子句
USING 存取方法子句可以指定一个存取方法。
USING 存取方法子句
元素 | 描述 | 限制 | 语法 |
config_keyword | 与指定的存取方法关联的配置关键字 | 不大于 18 字节,存取方法必须存在。 | 文字关键字 |
config_value | 指定配置关键字的值 | 不大于 236 字节。必须由存取方法定义。 | 引用字符串 |
主存取方法是执行 DDL 和 DML 操作的例程集合,如 create 、drop 、insert 、delete 、update 和 scan ,使表可供数据库服务器访问。 GBase 8s 提供了一种内含子的主存取方法。
可以在数据库服务器外的 extspace 或数据库服务器内的 sbspace 中存储并管理虚拟表。(请参阅 存储选项。)可以使用 SQL 语句存储虚拟表。访问虚拟表需要用户定义的主要存取方法。
DataBlade 模块可以提供其它主要存储方法来访问虚拟表。访问虚拟表时,数据库服务器将调用与该存取方法关联的例程而不是内置表例程。有关这些主存取方法的更多信息,请参阅您的存取方法文档。
您可以使用 MI_TAB_AMPARAM 宏从表描述符中检索存取方法的配置值列表(mi_am_table_desc)。不是所有的关键字都需要配置值。
存取方法必须已经存在。例如,如果名为 textfile 的存取方法已经存在,则可以用以下语法来指定:
CREATE TABLE mybook
(... )
IN myextspace
USING textfile (DELIMITER=':');