返回首页

gbase数据、南大通用产品文档:GBase8c

更新日期:2024年09月11日

建索引语句
alter table bmsql_warehouse add constraint bmsql_warehouse_pkey
primary key (w_id);

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
603
alter table bmsql_district add constraint bmsql_district_pkey
primary key (d_w_id, d_id);
alter table bmsql_customer add constraint bmsql_customer_pkey
primary key (c_w_id, c_d_id, c_id);
create index bmsql_customer_idx1
on
bmsql_customer (c_w_id, c_d_id, c_last, c_first);
alter table bmsql_oorder add constraint bmsql_oorder_pkey
primary key (o_w_id, o_d_id, o_id);
create unique index bmsql_oorder_idx1
on
bmsql_oorder (o_w_id, o_d_id, o_carrier_id, o_id);
alter table bmsql_new_order add constraint bmsql_new_order_pkey
primary key (no_w_id, no_d_id, no_o_id) using index tablespace example2;
alter table bmsql_order_line add constraint bmsql_order_line_pkey
primary key (ol_w_id, ol_d_id, ol_o_id, ol_number);
alter table bmsql_stock add constraint bmsql_stock_pkey
primary key (s_w_id, s_i_id);
alter table bmsql_item add constraint bmsql_item_pkey
primary key (i_id);

简单大对象(TEXT 或 BYTE 数据)可以存储在数据库空间中也可以存储在 BLOB 空间
中。智能大对象(CLOB 或 BLOB 数据)仅存储在智能大对象空间中。数据库服务器使
用不同方法来访问每种类型的存储空间。以下主题将描述用于每种类型的缓冲方法。
写入简单大对象
数据库服务器以写入任何其他数据类型时使用的相同方法将简单大对象写入数据库空间中
的磁盘页。有关更多信息,请参阅将数据清空到磁盘。
您也可以将简单大对象指定给 BLOB 空间。数据库服务器将简单大对象写入 BLOB 空间
(方法与将其他数据写入共享内存缓冲区时的不同)

然后将其清空到磁盘。
有关 BLOB 空
间的描述,请参阅《GBase 8s 管理员参考》 中有关磁盘结构和存储器的章节。
BLOB 页和共享内存

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 141 -
BLOB 空间 BLOB 页存储大量数据。因此,数据库服务器不会经由共享内存缓冲池创建
或访问 BLOB 页,并且它不会将 BLOB 空间的 BLOB 页写入逻辑或物理日志。
如果 BLOB 空间数据已通过共享内存池,
它可能会通过去除索引页和数据页来降低池的有
效性。反之,BLOB 页将在创建时直接写入磁盘。
要减少逻辑日志和物理日志的流量,数据库服务器会使用与写入数据库空间页时不同的方
法将 BLOB 页从磁介质写入数据库空间备份磁带以及逻辑日志备份磁带。
由于光学介质的高可靠性,
存储在光学介质上的 BLOB 页将不会写入到数据库空间和逻辑
日志备份磁带中。
创建简单大对象
当将简单大对象数据写入磁盘时,它所属的行可能尚不存在。 例如,在插入期间,简单大
对象会在其他行数据传送之前传送。存储简单大对象后,数据行将与指向其位置的 56 位
描述符一同创建。有关如何以物理方式存储简单大对象的描述,请参阅《GBase 8s 管理员
参考 》的磁盘存储器和结构章节中有关数据库空间 BLOB 页结构的部分。
创建 BLOB 页缓冲区
要从应用程序进程接收简单大对象数据,
数据库服务器会创建一对 BLOB 空间缓冲区
(一
个用于读一个用于写),大小都是一个 BLOB 空间的 BLOB 页。 确保用户只有一组
BLOB 空间缓冲区,并因此一次只能访问一个简单大对象。
简单大对象数据将以 1 KB 段从客户机应用程序进程传输到数据库服务器。然后数据库服
务器开始用 1 KB 块填充 BLOB 空间缓冲区,并尝试一次缓冲两个 BLOB 页。数据库服
务器将缓冲两个 BLOB 页以便可以确定何时将转发指针从一个页添加到下一个。
当它填充
了第一个缓冲区并发现有更多的数据要传送时,它会在向磁盘写入页之前将转发指针添加
到下一个页。当不再有数据要传送时,数据库服务器会不带转发指针将最后一页写入到磁
盘。
当线程开始将第一个 BLOB 空间缓冲区写入到磁盘时,它尝试根据用户定义的 BLOB 页
大小执行 I/O。
例如,
如果 BLOB 页的大小是 32 KB,
那么数据库服务器将尝试以 32,768
字节的增量来读取或写入数据。如果底层硬件(如磁盘控制器)无法在单个操作中传送这
些数据量,那么操作系统内核将在内部(以内核方式)循环直到传送完成为止。
BLOB 空间缓冲区会保留到创建它们的缓冲区完成为止。当将简单大对象写入到磁盘时,
数据库服务器将取消分配 BLOB 空间缓冲区对。下图说明了将简单大对象写入 BLOB 空
间的过程。
图: 将简单大对象写入 BLOB 空间


GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 142 -

用自由图页分配和跟踪 BLOB 空间的 BLOB 页。按需创建连接 BLOB 页的链接和指向
下一个 BLOB 页段的指针。
操作记录(插入、更新或删除)将写入到逻辑日志缓冲区。

访问智能大对象
数据库服务器通过共享内存缓冲区访问智能大对象,其方法与访问存储在数据库空间中的
数据相同。然而,智能大对象的用户数据部分将在比正常缓冲区页更低的优先级上缓冲以
防止将更高值的数据清空出缓冲池。缓冲允许对经常访问的智能大对象进行更快的访问。
智能大对象存储在智能大对象空间中。您不能将简单大对象存储在智能大对象空间中,也
不能将智能大对象存储在 BLOB 空间中。
智能大对象空间由用户数据区域和元数据区域组
成。用户数据区域包含智能大对象数据。元数据区域包含有关智能大对象空间内容的信息。

因为智能大对象已通过共享内存缓冲池并且可以记录,所以您必须在分配缓冲区时考虑这
些智能大对象。使用 BUFFERPOOL 配置参数分配共享内存缓冲区。通常,尝试分配足够
的缓冲区,以便为每个同时打开的智能大对象包含两个智能大对象页。(附加页可用于预
读的用途。)有关为智能大对象调整缓冲区的更多信息,请参阅《GBase 8s 性能指南》。
使用 LOGBUFF 配置参数可指定逻辑日志缓冲区的大小。
有关设置以下每个配置参数的信
息,请参阅《GBase 8s 管理员参考》:
 BUFFERPOOL
 LOGBUFF
已记录的智能大对象的用户数据区域不会通过物理日志,因此无需为智能大对象更改
PHYSBUFF 参数。
有关智能大对象空间结构的更多信息,请参阅《GBase 8s 管理员参考》的磁盘结构和存储
器章节中有关智能大对象空间结构的部分。
有关创建智能大对象空间的信息,
请参阅
《GBase
8s 管理员参考》中有关 onspaces 实用程序的信息。

步骤1 创建资源消费组并关联用户
create consumer group group_high
comment = 'users for high';
create consumer group group_low
comment = 'users for low';
alter consumer group group_high
add user usera;
alter consumer group group_low
add user userb;
步骤2 创建资源池
create resource pool static_pool_high(
cpu_percent=90,
max_memory=10000,
max_temp_diskspace= 10000,
max_disk_space= 10000,
max_disk_writeio=1000,
max_disk_readio=1000) TYPE static;
create resource pool static_pool_low(
cpu_percent=10,
max_memory=10000,
max_temp_diskspace= 10000,
max_disk_space= 10000,
max_disk_writeio=1000,
max_disk_readio=1000) TYPE static;
create resource pool pool_high(
priority=1,
cpu_percent=100,
max_memory=4000,
max_temp_diskspace=50000,
max_disk_space=50000,

GBase 8a MPP Cluster 产品手册
4 管理员指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
513
max_disk_writeio=600,
max_disk_readio=600,
max_activetask=200,
task_max_parallel_degree=100,
task_waiting_timeout=100000,
task_running_timeout=100000)
type dynamic base on static_pool_high;
create resource pool pool_low(
priority=1,
cpu_percent=100,
max_memory=4000,
max_temp_diskspace=50000,
max_disk_space=50000,
max_disk_writeio=600,
max_disk_readio=600,
max_activetask=200,
task_max_parallel_degree=100,
task_waiting_timeout=100000,
task_running_timeout=100000)
type dynamic base on static_pool_low;
步骤3 创建资源计划
create resource plan
resource_plan
comment = 'resource plan';
步骤4 创建资源指令计划
create resource directive directive1
(plan_name = 'resource_plan',
pool_name = 'pool_high',
group_name = 'group_high',
comment = 'high user resource usage ');
create resource directive directive2
(plan_name = 'resource_plan',
pool_name = 'pool_low',
group_name = 'group_low',

GBase 8a MPP Cluster 产品手册
4 管理员指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
514
comment = 'low user resource usage ');
步骤5 激活计划
active resource plan resource_plan on vc vc1;
注意

由于RH6.x/SUSE11 等低版本的操作系统存在内核缺陷,可能会导致大负载的情况下,
操作系统宕机。

建议在RH7.3/SUSE12 以上版本的操作系统中使用多静态资源池控制。