免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6204 | 回复: 16
打印 上一主题 下一主题

大表alter为何占用rootdbs空间? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-01-16 15:03 |只看该作者 |倒序浏览
50w记录的表,表大概2G多,包含byte字段,对其中一个varchar字段扩位
alter table t1 modify ( col1 varchar(9) );
事先已经关闭数据库日志

时间较长,onstat -d观察rootdbs可用空间不断减少,最后alter语句报错,为啥会占用rootdbs空间呢?

>time sh alter.sh

Database selected.


  618: Error on copying blob data.

  131: ISAM error: no free disk space
Error in line 1
Near character position 56

Database closed.

=====================
IBM161:informix:/home/informix>onstat -d|grep rootdbs
70000002016ee50  1        0x1        1        7        N        informix rootdbs
70000002016f028  1   1   0        500000   141918            PO-   /home/informix/dbs/rootdbs

IBM161:informix:/home/informix>onstat -d|grep rootdbs
70000002016ee50  1        0x1        1        7        N        informix rootdbs
70000002016f028  1   1   0        500000   117310            PO-   /home/informix/dbs/rootdbs

IBM161:informix:/home/informix>onstat -d|grep rootdbs
70000002016ee50  1        0x1        1        7        N        informix rootdbs
70000002016f028  1   1   0        500000   95294             PO-   /home/informix/dbs/rootdbs

IBM161:informix:/home/informix>onstat -d|grep rootdbs
70000002016ee50  1        0x1        1        7        N        informix rootdbs
70000002016f028  1   1   0        500000   42046             PO-   /home/informix/dbs/rootdbs

。。。。

论坛徽章:
0
2 [报告]
发表于 2009-01-16 15:50 |只看该作者
你是不是没有tempdbs?

论坛徽章:
0
3 [报告]
发表于 2009-01-16 16:05 |只看该作者

回复 #2 我是DBA 的帖子

有的,alter应该没有排序动作吧,会占用tmp么?

Informix Dynamic Server Version 9.30.FC2R1   -- On-Line -- Up 05:57:22 -- 690320 Kbytes

Dbspaces
address          number   flags      fchunk   nchunks  flags    owner    name
70000002016ee50  1        0x1        1        7        N        informix rootdbs
700000021108ae0  2        0x1        11       1        N        informix phylogdbs
700000021108c58  3        0x1        12       1        N        informix logdbs
700000021108dd0  4        0x2001     13       1        N T      informix tempdbs
700000021109028  5        0x1        8        5        N        informix datadbs
5 active, 2047 maximum

Chunks
address          chk/dbs offset   size     free     bpages   flags pathname
70000002016f028  1   1   0        500000   141918            PO-   /home/informix/dbs/rootdbs
70000002016f520  2   1   0        500000   174               PO-   /home/informix/dbs/datadbs2
70000002016f6a8  3   1   0        500000   422               PO-   /home/informix/dbs/datadbs3
70000002016f830  4   1   0        500000   115               PO-   /home/informix/dbs/logdbs
70000002016f9b8  5   1   0        450000   581               PO-   /home/informix/dbs/datadbs1
70000002016fb40  6   1   0        500000   565               PO-   /home/informix/dbs/datadbs4
70000002016fcc8  7   1   0        500000   425               PO-   /home/informix/dbs/datadbs5
70000002016fe50  8   5   0        512000   43535             PO-   /home/informix/dbs/datadbs6
700000021108028  9   5   0        512000   505145            PO-   /home/informix/dbs/datadbs7
7000000211081b0  10  5   0        512000   511997            PO-   /home/informix/dbs/datadbs8
700000021108338  11  2   0        512000   11897             PO-   /home/informix/dbs/phylogdbs
7000000211084c0  12  3   0        512000   159933            PO-   /home/informix/dbs/161logdbs
700000021108648  13  4   0        512000   511647            PO-   /home/informix/dbs/161tmpdbs
7000000211087d0  14  5   0        512000   511981            PO-   /home/informix/dbs/datadbs9
700000021108958  15  5   0        512000   511997            PO-   /home/informix/dbs/datadbs10

论坛徽章:
0
4 [报告]
发表于 2009-01-16 16:24 |只看该作者
刚才做了一张10w记录的表 alter,结构一样,不会有问题,rootdbs一点没动,奇怪了

>time sh alterwa2.sh

Database selected.


Table altered.



Database closed.


real    2m16.94s
user    0m0.02s
sys     0m0.03s


=================

IBM161:informix:/home/informix/test>onstat -d|egrep 'rootdbs|tmpdbs'
70000002016ee50  1        0x1001     1        7        N        informix rootdbs
70000002016f028  1   1   0        500000   141918            PO-   /home/informix/dbs/rootdbs
700000021108648  13  4   0        512000   511647            PO-   /home/informix/dbs/161tmpdbs
IBM161:informix:/home/informix/test>onstat -d|egrep 'rootdbs|tmpdbs'
70000002016ee50  1        0x1001     1        7        N        informix rootdbs
70000002016f028  1   1   0        500000   141918            PO-   /home/informix/dbs/rootdbs
700000021108648  13  4   0        512000   511631            PO-   /home/informix/dbs/161tmpdbs
IBM161:informix:/home/informix/test>onstat -d|egrep 'rootdbs|tmpdbs'
70000002016ee50  1        0x1001     1        7        N        informix rootdbs
70000002016f028  1   1   0        500000   141918            PO-   /home/informix/dbs/rootdbs
700000021108648  13  4   0        512000   511551            PO-   /home/informix/dbs/161tmpdbs
IBM161:informix:/home/informix/test>onstat -d|egrep 'rootdbs|tmpdbs'
70000002016ee50  1        0x1001     1        7        N        informix rootdbs
70000002016f028  1   1   0        500000   141918            PO-   /home/informix/dbs/rootdbs
700000021108648  13  4   0        512000   511647            PO-   /home/informix/dbs/161tmpdbs

论坛徽章:
11
金牛座
日期:2015-03-19 16:56:22数据库技术版块每日发帖之星
日期:2016-08-02 06:20:00数据库技术版块每日发帖之星
日期:2016-04-24 06:20:00数据库技术版块每日发帖之星
日期:2016-04-13 06:20:00IT运维版块每日发帖之星
日期:2016-04-13 06:20:00数据库技术版块每日发帖之星
日期:2016-02-03 06:20:00数据库技术版块每日发帖之星
日期:2015-08-06 06:20:00季节之章:春
日期:2015-03-27 15:54:57羊年新春福章
日期:2015-03-27 15:54:37戌狗
日期:2015-03-19 16:56:41数据库技术版块每日发帖之星
日期:2016-08-18 06:20:00
5 [报告]
发表于 2009-01-16 17:25 |只看该作者
blob data这个东东不熟悉....

论坛徽章:
0
6 [报告]
发表于 2009-01-17 13:52 |只看该作者
你的表结构是什么?
是不是建表时,没有指定dbspace?

论坛徽章:
0
7 [报告]
发表于 2009-01-19 08:48 |只看该作者
难道是因为BLOB数据的问题?

论坛徽章:
0
8 [报告]
发表于 2009-01-19 09:28 |只看该作者
建表的时候没指定dbspace,但建库的时候指定了datadbs的,应该没问题吧,最后一个字段byte型
执行的sql就是 alter table wastebook1 modify ( transerialid varchar(9) );

{ TABLE "informix".wa1 row size = 193 number of columns = 16 index size = 315 }
create table "informix".wa1
  (
    frontid varchar(1),
    transerialid varchar(7),
    serviceserialid varchar(2),
    frontrecycle varchar(,
    sourcenodeid varchar(10) not null ,
    channelsys varchar(10),
    channelwasteid varchar(19),
    channelrecycle varchar(,
    tranid varchar(6),
    servicesys varchar(10),
    servicewasteid varchar(19),
    servicerecycle varchar(,
    serviceid varchar(10),
    transtatus varchar(1) not null ,
    flowstatus varchar(1) not null ,
    servicedata byte
  );
revoke all on "informix".wa1 from "public";



create unique index "informix".tranindex3_1 on "informix".wa1
    (transerialid,serviceserialid,frontrecycle,frontid) using
    btree ;
create unique index "informix".tranindex3_2 on "informix".wa1
    (channelwasteid,serviceserialid,channelsys,channelrecycle)
    using btree ;
create index "informix".tranindex3_3 on "informix".wa1 (frontrecycle)
    using btree ;
create index "informix".tranindex3_4 on "informix".wa1 (frontrecycle,
    transerialid) using btree ;
create index "informix".tranindex3_5 on "informix".wa1 (servicesys,
    servicewasteid,servicerecycle) using btree ;
create index "informix".tranindex3_6 on "informix".wa1 (servicewasteid,
    servicerecycle,servicesys,serviceid) using btree ;

论坛徽章:
0
9 [报告]
发表于 2009-01-19 10:22 |只看该作者
-618    拷贝blob数据出错。

这个语句从一行到另一行拷贝一个BYTE或TEXT值,但一些意外的错误干扰了这一操
作。滚回当前的事务。检查相应的ISAM错误的代码以得到更多的信息。可能是一个硬
件错误,或blobspace或tblspace上的数据损坏,或缺少磁盘空间,或一个非法的
blobspace名。如果这个错误又发生,请记录全部的环境并和Informix 技术支持部联
系。

我知道了,跟你最后一个字段有关系,     servicedata byte
你或者建一个blobdbs
然后改一下配置文件

SBSPACENAME                     # Default smartblob space name - this is where blobs
                       # go if no sbspace is specified when the smartblob is
                       # created. It is also used by some datablades as
                       # the location to put their smartblobs.

[ 本帖最后由 我是DBA 于 2009-1-19 10:36 编辑 ]

论坛徽章:
0
10 [报告]
发表于 2009-01-19 10:28 |只看该作者
blobspace 是特殊的dbspace 只包含BLOG数据。INFORMIX  BYTE 与TEXT类型数据存放在BLOB,此空间专用于一种数据类型。BLOB空间中的数据越过缓冲区,物理日志以及逻辑日志,直接从共享内存写入磁盘。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP