免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: charliedong
打印 上一主题 下一主题

请教如何将pb中的BLOB类型存到informix中!!! [复制链接]

charliedong 该用户已被删除
11 [报告]
发表于 2008-04-25 14:51 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
12 [报告]
发表于 2008-04-26 08:24 |只看该作者
insert 之后怎么没有判断sqlcode?sqldbcode?
selectblob之后怎么没有判断sqlcode?sqldbcode?

注意,任何sql语句之后都要判断sqlcode,sqldbcode,这样利于出错后排错。

[ 本帖最后由 xxyyy 于 2008-4-26 08:26 编辑 ]
charliedong 该用户已被删除
13 [报告]
发表于 2008-04-28 09:10 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
charliedong 该用户已被删除
14 [报告]
发表于 2008-04-28 09:12 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
15 [报告]
发表于 2008-04-28 11:42 |只看该作者
是不是可以考虑先创建一个blobspace存储空间试试?
charliedong 该用户已被删除
16 [报告]
发表于 2008-04-28 12:21 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
17 [报告]
发表于 2008-04-28 13:30 |只看该作者
你先执行onstat -d命令查看一下都有哪些dbspace空间建立了,如果有Blobspace空间的话应该有个加B标志的吧。命令应该是用onspaces,具体说明如下:
informix@H80# onspaces
Usage:
onspaces  
          { -c  { -b <BLOBspace> -g <pagesize>
                    -p <path> -o <offset> -s <size> [-m <path> <offset>] }
  -c  - Create a DBspace, BLOBspace, SBLOBspace or Extspace

  其中BLOBspace应该是BLOBspace的名称,<pagesize>是指定的BLOB页大小,根据onstat -b查看数据库页大小来决定该值,buffer size为数据库页大小的值。例如如果希望BLOB页大小为10K,而数据库页大小为2K,刚该参数值设置为5。 <path>是祼设备创建链接后的路径,<offset>是祼设备使用时开始的偏移量,<size>是设置大小,单位为K,-m是设置镜像的路径和偏移量。
charliedong 该用户已被删除
18 [报告]
发表于 2008-04-28 15:31 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
19 [报告]
发表于 2008-04-28 17:12 |只看该作者

回复 #18 charliedong 的帖子

-g <pagesize> 的意思是不是blob 的值要放几页呢?
这个应该是你想设置一页的大小是多少,具体存放BLOB值的空间大小应该是由<size> 这个值来具体确定的。比如这个空间想设置为1G,那么如果按BLOB一页4K大小,数据库一页4K大小的话,那么所有的对象存放应该是被存放到64000页中,而<size> 是说整个BLOB空间的大小被指定为1G
-o <offset> 这个值应该怎样去确定呢?如果设得不好,是不是会和以前的chunk 重叠?
关于这个设置需要看具体LV的设置,如果BLOB空间单独使用一个祼设备文件,偏移量可以设置为0,但是如果是和其他DBspace空间共用一个裸设备,就需要设置偏移量,比如一个裸设备为2G,已经被一个DBspace空间划去了1G,那么偏移量需要在1G的基础上再稍多一些,以免覆盖,可以设置成1050000之类的。
例如我执行如下语句:
informix@H80# onspaces -c -b blobdbs -g 4 -p /informix/chunk/blobdbs -o 0 -s 256000
这里已经创建一个祼设备文件大小为256M,已经创建链接路径为/informix/chunk/blobdbs,此裸设备分给BLOB空间单独使用,数据库页大小为4K,BLOB页大小为4K*4=16K
关于如何确定BLOB页大小,通常将最常出现的简单大对象的大小用作BLOB页的大小,如果一个表具有多个TEXT或BYTE列,并且各对象的大小并不接近,则将每个列存储在不同的 BLOB空间中,且每个列带有适当大小的BLOB页。

执行之后可以通过onstat -d看到如下信息:
address                  chk/dbs offset   size       free          bpages    flags     pathname
700000030e7edf0    8     7    0      64000     ~16000    16000      POB       /informix/chunk/blobdbs
其实际大小为64000*4K=256000K,即16000*16000=256000K

另外,informix中BLOB空间是用以存放TEXT与BYTE类型数据的,而没有BLOB类型。在新增加BLOB空间后不能马上进行储存,需要通过onmode -l 命令将数据库逻辑日志切换至下一个方可。

具体可以再看看《Informix Dynamic Server Administrator's Guide》中的相关介绍

[ 本帖最后由 lavanyy 于 2008-4-28 17:22 编辑 ]
charliedong 该用户已被删除
20 [报告]
发表于 2008-04-29 08:20 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP