返回首页

gbase数据、南大通用产品文档:GBase8s管理智能大对象空间

更新日期:2024年09月11日

本节描述如何创建标准的或临时的智能大对象空间、监视元数据或用户数据区域、向智能
大对象空间添加块以及更改智能大对象的存储特征。
有关监视智能大对象空间的信息,请参阅监视存储空间。

创建智能大对象空间
使用 onspaces 实用程序创建智能大对象空间。
使用 onspaces 实用程序或 Server Administrator (ISA) 可创建智能大对象空间。
要使用 onspaces 创建智能大对象空间,请执行以下操作:

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 211 -
1. 要在 UNIX™ 上创建智能大对象空间,必须以用户 gbasedbt 或 root 身份登录。
2. 请确保数据库服务器处于联机、管理或静默方式,或者处于快速恢复方式的清除阶
段。
3. 使用 onspaces -c -S 选项创建智能大对象空间。
a.
使用 -p 选项指定路径名、使用 -o 选项指定偏移量,以及使用 -s 选
项指定智能大对象空间大小。
b.
如果要对智能大对象空间制作镜像,请使用 -m 选项指定镜像路径和
偏移量。
c.
如果您希望使用智能大对象空间的缺省存储特征,
那么省略 -Df 选项。

如果您希望指定不同的存储特征,请使用 -Df 选项。有关更多信息,请参阅
智能大对象空间的存储特征。
d.
智能大对象空间中的第一个块必须具有元数据区域。
您可以为智能大对象空间指定元数据区域,或让数据库服务器计算元数据区域
的大小。有关更多信息,请参阅计算智能大对象空间元数据的大小。
4. 在创建智能大对象空间之后,必须对根数据库空间和新智能大对象空间执行 0 级
备份。
5. 要在该智能大对象空间中开始存储智能大对象,
请在 SBSPACENAME 配置参数中
指定空间名称。
6. 使用 onstat -d、onstat -g smb s 以及 oncheck -cs、-cS、-ps 或 -pS 来显示有关智能
大对象空间的信息。
有关更多信息,请参阅监视智能大对象空间。
这显示了如何创建 20 兆字节的镜像智能大对象空间 sbsp4。为主块和镜像块均指定 500
KB 的偏移量,还指定偏移量为 200 KB 且大小为 150 KB 的元数据。AVG_LO_SIZE -Df
标记指定 32 KB 的智能大对象平均期望大小。
onspaces -c -S sbsp4 -p /dev/rawdev1 -o 500 -s 20480 -m /dev/rawdev2 500
-Ms 150 -Mo 200 -Df "AVG_LO_SIZE=32"
有关创建智能大对象空间和智能大对象缺省选项的信息,请参阅《GBase 8s 管理员参考》
中有关 onspaces 实用程序的信息。有关创建智能大对象的信息,请参阅《GBase 8s
DataBlade API 程序员指南》和《GBase 8s ESQL/C 程序员手册》。
要使用 ISA 创建智能大对象空间,请执行以下操作:
1. 使用 ISA 创建智能大对象空间。有关更多信息,请参阅 ISA 联机帮助。
2. 备份新智能大对象空间和根数据库空间。

计算智能大对象空间元数据的大小
智能大对象空间的第一个块必须有元数据区域。
在向智能大对象空间添加智能大对象和块
时,元数据区域会增大。另外,数据库服务器保留 40% 的用户区域,在元数据区域空间
耗尽的情况下使用。
为智能大对象空间正确估算元数据区域以确保智能大对象空间不会耗尽元数据空间,这一
点很重要。您可以使用以下方法之一:

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

让数据库服务器为新智能大对象空间块计算元数据区域的大小。

明确指定元数据区域的大小。
有关估计智能大对象空间和元数据区域的大小的指示信息,请参阅《GBase 8s 性能指南》
中的表性能注意事项章节。另见监视元数据和用户数据区域。

向智能大对象空间添加块
可以将块添加到智能大对象空间或临时智能大对象空间。
您可以为块指定元数据区域、让数据库服务器计算元数据区域或者将块仅用于用户数据。
要使用 onspaces 将块添加到智能大对象空间,请执行以下操作:
1. 请确保数据库服务器处于联机、管理或静默方式,或者处于快速恢复方式的清除阶
段。
2. 使用 onspaces -a 选项创建智能大对象空间块。
a.
使用 -p 选项指定路径名、使用 -o 选项指定偏移量,以及使用 -s 选
项指定块大小。
b.
如果您希望对块制作镜像,请使用 -m 选项指定镜像路径和偏移量。
c.
要指定元数据空间的大小和偏移量,请使用 -Mo 和 -Ms 选项。
数据库服务器在新块上分配指定量的元数据区域、
d.
要让数据库服务器为新块计算元数据大小,那么省略 -Mo 和 -Ms 选
项。
数据库服务器按用户数据区域大小划分智能大对象的估计平均大小。
e.
要将块仅用于用户数据,请指定 -U 选项。
如果您使用 -U 选项,那么数据库服务器不会在该块中分配元数据空间。取而
代之,智能大对象空间使用一个其他块中的元数据区域。
3. 在将块添加到智能大对象空间后,数据库服务器将编写 CHRESERV 和
CHKADJUP 日志记录。
4. 对根数据库空间和智能大对象空间执行 0 级备份。
5. 使用 onstat -d 和 oncheck -pe 可监视智能大对象空间块中的可用空间量。
此示例向 sbsp4 添加 10 兆字节的镜像块。
对主块和镜像块都指定了 200 KB 的偏移量。
如果您不添加镜像块,那么可省略 -m 选项。-U 选项指定新块仅包含用户数据。
onspaces -a sbsp4 -p /dev/rawdev1 -o 200 -s 10240 -m /dev/rawdev2 200 -U
还可以定义当应用程序需要更多存储空间时,GBase 8s 可用于自动扩展块大小的信息。如
果有可扩展块,那么无需添加新块或耗费时间来尝试确定哪种存储空间(数据库空间、临
时数据库空间、智能大对象空间、临时智能大对象空间或 BLOB 空间)将耗尽空间,以及
何时将耗尽空间。
当启用 CHUNK_OVERLAP_PROTECTION 配置参数时,数据库服务器将确保新块不会与
其他块重叠。如果服务器发现块重叠,新块添加操作将失败。

更改智能大对象的存储特征

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 213 -
使用 onspaces -ch 命令为智能大对象空间更改以下缺省存储特征:

扩展数据块大小

平均智能大对象大小

缓冲方式

上次访问时间

锁定方式

日志记录
有关更多信息,请参阅智能大对象空间的存储特征和《GBase 8s 性能指南》中有关表性能
注意事项主题中的管理智能大对象空间的部分。

创建临时智能大对象空间
有关确定智能大对象存储位置的背景信息和规则,请参阅临时智能大对象空间。您可将临
时智能大对象存储在标准的或临时的智能大对象空间中。可以在临时智能大对象空间中添
加或删除块。
要创建具有临时智能大对象的临时智能大对象空间,请执行以下操作:
1. 为临时智能大对象空间分配空间。
有关详细信息,请参阅分配磁盘空间。
有关 SBSPACETEMP 的信息,请参阅《GBase 8s 管理员参考》中有关配置参数
的主题。
2. 如以下示例所示,创建临时智能大对象空间:
onspaces -c -S tempsbsp -t -p ./tempsbsp -o 0 -s 1000
3. 您可任意指定以下 onspaces 选项:
a.
指定元数据区域和偏移量(-Ms 和 -Mo)。
b.
指定存储特征 (-Df)。
无法为临时智能大对象空间打开日志记录。
4. 将 SBSPACETEMP 配置参数设置为缺省临时智能大对象空间存储区域的名称。
重新启动数据库服务器。
5. 使用 onstat -d 显示临时智能大对象空间。
有关 onstat
-d 输出示例的信息,
请参阅
《GBase
8s 管理员参考》
中的 onstat 实
用程序。
6. 在创建临时智能大对象时指定 LO_CREATE_TEMP 标志。
使用 DataBlade API:
mi_lo_specset_flags(lo_spec,LO_CREATE_TEMP);
使用 GBase 8s ESQL/C:
ifx_lo_specset_flags(lo_spec,LO_CREATE_TEMP);

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 214 -
有关创建智能大对象的信息,请参阅《GBase 8s DataBlade API 程序员指南》和《GBase 8s
ESQL/C 程序员手册》。

GBMLLib 具备以下技术特征:

SQL 接口:GBMLLib 提供了SQL 方式的数据挖掘算法,模型的训练、评估
和预测都通过SQL 语句来执行,
使得数据分析师非常容易掌握,
并与其现有
技能结合,充分发挥其创造力、提高工作效率。

In-database 分析:不同于其他分析工具需要通过api 或odbc 把数据从数据库
搬移到分析节点进行处理的方式,GBMLLib 的分析算法以数据库udf/udaf
的形式运行在GBase8a 的线程内部,通过GBase8a 的执行计划进行调度,最
大程度的减少数据的搬移、提升运行速度。

方便扩展:GBMLLib 以插件的形式添加到GBase8a 中,并采用弹性灵活的
软件架构,方便后续添加新的数据挖掘和机器学习算法。

不可用,
希望自动路由到
下一个可用连接的话,可以使用下面的
连接数据串:
jdbc:gbase://192.168.0.2:5258/?use


GBase 8a 程序员手册JDBC 篇
南大通用数据技术股份有限公司

- 11 -
r=user&password=pwd&failoverEnable
=true&hostList=192.168.0.3,192.168
.0.5
gclusterId
8a 集群使用,当failoverEnable=true
且hostList 参数不为空时,设置该参
数,8a 集群接口的负载均衡开启(负载
策略为轮询)
。gclusterId 必须以a-z
任意字符开头的字符串,gclusterId 组
成可以包含a-z、
0-9 所有字符长度为最
大为20。
在同一应用程序中,
gclusterId
可有程序开发人员自行决定,全工程唯
一即可。
注:当设置gclusteId 时,自动路由功
能自动转换为高可用负载均衡。

安全
allowMultiQueri
es
允许在多语句中使用“;”来分割查询
(true/false,默认为false)
false
useSSL
使用SSL 连接数据库,默认值false.
false
allowUrlInLocal
Infile
驱动是否允许在“LOAD DATA LOCAL
INFILE”语句中加入URL
false

GBase 8a 程序员手册JDBC 篇


- 12 -

南大通用数据技术股份有限公司
Paranoid
防止在错误中暴露敏感信息并在可能的
时候清除数据结构中的敏感信息(默认
为false)
False
性能
metadataCacheSi
ze
如果cacheResultSetMetaData 设置为
true,
对cacheResultSetMetaData 的查
询次数(默认为50)
50
prepStmtCacheSi
ze
如果可以使用预处理语句的缓冲功能,
应该缓冲的预处理语句条数
25
prepStmtCacheSq
lLimit
如果可以使用预处理语句的缓冲功能,
驱动可以缓冲并解析的最大SQL
256
blobSendChunkSi
ze
通过ServerPreparedStatements 发送
BLOB/CLOBs 时的块大小。限制每次发送
blob 字段内容的大小。
1048576
cacheCallableSt
mts
驱动是否应该对CallableStatements
的解析过程进行缓冲处理
false
cachePrepStmts
驱动程序是否应对客户端预处理语句的
PreparedStatements的解析过程执行缓
冲处理,是否应检查服务器端预处理语
句的适用性以及服务器端预处理语句本
false

GBase 8a 程序员手册JDBC 篇
南大通用数据技术股份有限公司

- 13 -
身。
cacheResultSetM
etadata
驱动程序是否应对用于Statements 和
PreparedStatements 的
ResultSetMetaData 执行缓冲处理, 要
求 JDK-1.4+,真/假,默认为false。

false
cacheServerConf
iguration
驱动是否应该缓冲每个URL 上SHOW
VARIABLES 和 SHOW COLLATION 的结果
False

defaultFetchSiz
e
驱动程序将在所有新创建的sql 语句中
使用setFetchSize(n)设置的值
0
dynamicCalendar
s
需要时,
驱动程序是否应检索默认日历,
或根据连接/会话对其进行缓冲处理
false
elideSetAutoCom
mits
如果在服务器状态不匹配
Connection.setAutoCommit(boolean)
需要的状态时,驱动是否只执行“set
autocommit=n”查询
false
holdResultsOpen
OverStatementCl
ose
驱动是否按照JDBC 规范中要求关闭
Statement.close()上的全部结果集
false
locatorFetchBuf
ferSize
如果emulateLocators 设置为true,在
为getBinaryInputStream 取数据时应
1048576

GBase 8a 程序员手册JDBC 篇


- 14 -

南大通用数据技术股份有限公司
该使用多大的缓冲
rewriteBatchedS
tatements
当调用executeBatch()时使用重写sql
以达到批量提交操作,提高性能。
False(开启批
量更新操作,大
幅提高性能)
useFastIntParsi
ng
使用内部String到Integer 的转化来避
免创建过多的对象
True

useJvmCharsetCo
nverters
总是使用JVM 内建的字符集编码规则,
还是对单字节字符集使用检索表
True
useLocalSession
State
驱动是否应该引用
Connection.setAutoCommit() 和
Connection.setTransactionIsolation
()设置的autocommit 的中间值和事务
独立等级,而不是查询数据库
false
useReadAheadInp
ut
是否在从服务器读取时使用较新的,优
化后的无阻塞缓冲输入流
True
调试
logger
实现了com.gbase.jdbc.log.Log 的类
的名称,com.gbase.jdbc.log.Log 用于
记录消息(默认为
com.gbase.
jdbc.log.

GBase 8a 程序员手册JDBC 篇
南大通用数据技术股份有限公司

- 15 -
“com.gbase.jdbc.log.StandardLogge
r”,它会将日志记录到STDERR)

StandardLogge
r
profileSQL
跟踪查询以及它们对已配制记录器的执
行/获取次数(true/false, 默认为
false)
(执行sql 语句也打印出来)
false
reportMetricsIn
tervalMillis
如果允许gatherPerfMetrics,记录它
们的频率是多少(单位ms)
30000
maxQuerySizeToL
og
当调试或者跟踪时,控制记录的查询的
最大长度
2048
packetDebugBuff
erSize
当enablePacketDebug 为真时,需要保
留的最大信息包数目
20
slowQueryThresh
oldMillis
如果开启logSlowQueries,一个查询在
记录为“慢”之前可以等待的时间
(ms)

2000
useUsageAdvisor
驱动是否应该发出执行警告,和就有效
的JDBC 和GBase JDBC 用法给出建议
(true/false, 默认为false)
false
autoGenerateTes
tcaseScript
驱动程序是否应将正在执行的SQL(包
括服务器端预处理语句)转储到STDERR
False

GBase 8a 程序员手册JDBC 篇


- 16 -

南大通用数据技术股份有限公司
dumpMetadataOnC
olumnNotFound
当ResultSet.findColumn()执行失败
时,驱动程序是否将字段级的原数据添
加到异常信息中
False
dumpQueriesOnEx
ception
驱动程序是否应将发送至服务器的查询
内容转储到SQLExceptions 中
false
enablePacketDeb
ug
允许时,
将保留packetDebugBufferSize
信息包的环形缓冲区,并当在驱动程序
代码的关键区域抛出异常时进行转储
false
explainSlowQuer
ies
如果开启了logSlowQueries,驱动是否
自动在服务器上执行一个EXPLAIN,并
按照WARN 等级发送配置日志
false
includeGsdbStat
usInDeadlockExc
eptions
当出现死锁异常时,把“SHOW ENGINE
GsDB
STATUS”的输出结果添加到异常信
息里。
false
logSlowQueries
是否记录时间长于
slowQueryThresholdMillis 的查询
false
resultSetSizeTh
reshold
当useUsageAdvisor 设置为true 的时
候,并且结果集的条数大于当前设置的
resultSetSizeThreshold 的值时,发出
警告信息并计入log。
100

GBase 8a 程序员手册JDBC 篇
南大通用数据技术股份有限公司

- 17 -
traceProtocol
是否记录跟踪网络协议
False
杂项
useUnicode
处理字符串时,指定驱动是否使用
Unicode 编码。是否只在驱动无法决定
字符集映射的时候使用,或者在不考虑
GBase 是否有本地化支持的情况下,尝
试驱动使用该字符集(例如UTF-8)默
认为false
false
characterEncodi
ng
如果useUnicode 设置为true,驱动在
处理字符串时应该使用什么样的编码
(默认为 autodetect)

characterSetRes
ults
服务器返回结果使用的字符集

connectionColla
tion
如果设置了,就是通知服务器通过设置
connection_collation 来校正

sessionVariable
s
以逗号隔开的“名称/值”对列表,当
驱动程序建立了连接后,以“SET
SESSION ...”的方式将其发送给服务



GBase 8a 程序员手册JDBC 篇


- 18 -

南大通用数据技术股份有限公司
allowNanAndInf
驱动是否允许NaN 或 +/- INF 值用于
PreparedStatement.setDouble()中
False
autoClosePStmtS
treams
当streams/readers 通过set*()方法作
为参数使用完毕后,驱动程序是否应该
自动调用它们的.close()方法
false
autoDeserialize
驱动是否自动探测别名和序列化存储在
BLOB 中的对象
false
capitalizeTypeN
ames
是否将DatabaseMetaData 中的类型名
转换为大写,
通常仅在使用WebObjects
时有用(true/false, 默认为true)
False
clobCharacterEn
coding
当发送/取回TEXT、MEDIUMTEXT、
LONGTEXT 等类型数据时使用的字符编
码,取代连接中设置的字符集编码

clobberStreamin
gResults
这会使“流式”结果集被自动关闭,如
果在所有数据尚未从服务器中读取完之
前,执行了另一查询,正在从服务器流
出的任何未完成数据均将丢失
false
continueBatchOn
Error
如果一个语句失败,驱动是否应该继续
批处理命令。
JDBC指定了允许的方式
(默
认为true)
true

GBase 8a 程序员手册JDBC 篇
南大通用数据技术股份有限公司

- 19 -
createDatabaseI
fNotExist
如果不存在,
创建URL 中给定的数据库。
假定用户具有创建数据库的权限。
false
emptyStringsCon
vertToZero
驱动是否允许将空字符串转化为数字的
0
true
emulateUnsuppor
tedPstmts
驱动是否探测服务器不支持的预处理语
句,并使用客户端模拟版本替换它们
true
ignoreNonTxTabl
es
是否忽略关于回退的非事务表
(默认为false)
false
jdbcCompliantTr
uncation
连接到支持告警的服务器时,当按照
JDBC 的要求截短数据时,驱动程序是否
应抛出java.sql.DataTruncation 异常
true
maxRows
返回行的最大数量
(0,
默认意味着返回
全部行)
-1

noAccessToProce
dureBodies
何时决定CallableStatements 调用的
存储过程的参数类型
False
noDatetimeStrin
gSync
不保证
ResultSet.getDatetimeType().toStri
ng().等价于(ResultSet.getString())
False

GBase 8a 程序员手册JDBC 篇


- 20 -

南大通用数据技术股份有限公司
noTimezoneConve
rsionForTimeTyp
e
即使useTimezone=true 也不使用
Server 的时区对TIME 数据类型进行转

False
nullCatalogMean
sCurrent
当DatabaseMetadataMethods 请求目录
参数时,
值Null 是否意味着使用当前目
录, 它不兼容JDBC,但符合驱动程序
早期版本的传统行为
true
nullNamePattern
MatchesAll
接受*pattern 参数的
DatabaseMetaData 方法是否应将null
按对待“%”的相同方式处理(不兼容
JDBC,但驱动程序的早期版本能接受与
规范的这类偏离)
True
pedantic
严格遵守JDBC 规范
False
pinGlobalTxToPh
ysicalConnectio
n
当使用分布式连接时,驱动程序是否应
该保证一定给定XID 上的操作总是路由
到同一个物理连接
false
processEscapeCo
desForPrepStmts
驱动是否做sql 请求语句的转义处理
true
queryTimeoutKil
lsConnection
如果通过Statement.setQueryTimeout()
设置超时间,当
false

GBase 8a 程序员手册JDBC 篇
南大通用数据技术股份有限公司

- 21 -
queryTimeoutKillsConnection = true
时,如果发生超时驱动会强行断开当前
连接而不是尝试结束当前查询。
relaxAutoCommit
如果GBase 驱动的版本不支持事务,是
否允许调用commit(), rollback() 和
setAutoCommit(),
(true/false, 默认
为false)
false
rollbackOnPoole
dClose
驱动在连接池中的逻辑连接关闭时是否
应该执行rollback()
true
runningCTS13
允许在Sun 与JDBC 兼容的testsuite