返回首页

gbase数据、南大通用产品文档:GBase8s缓冲区大对象数据

更新日期:2024年09月11日

简单大对象(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 实用程序的信息。

cpu_operator_cost
参数说明:设置优化器计算一次查询中执行一个操作符或函数的开销。
该参数属于USERSET 类型参数,请参考表15-1 中对应设置方法进行设置。
取值范围:浮点型,0~DBL_MAX。
默认值:0.0025

错误写法
示例
如果重复设置某一参数,以最后一次设置的为准。
gbase> SELECT * FROM test.t INTO OUTFILE '/home/gbase/temp/d.txt'
FIELDS TERMINATED BY '\t' TERMINATED BY ';';
Query OK, 1 row affected
查看导出文件:
$ cat d.txt
102;ab;xmny
等价于
gbase> SELECT * FROM test.t INTO OUTFILE '/home/gbase/temp/e.txt'
FIELDS TERMINATED BY ';';
Query OK, 1 row affected
查看导出文件:
$ cat e.txt
102;ab;xmny