如何在 informix 中获取 table 的块列表?
How to get the list of chunks of a table in informix?
我需要在 informix 数据库中找到特定 table 占用的块。
我目前的方法是从 oncheck -pe dbspace
命令中获取结果。但是当 db-space 有很多块时,这个任务非常耗时。我需要知道是否有任何单个查询或快速方法可以通过扩展特定 table
来列出占用的块
sysmaster 数据库中的 systabextents 可用于确定与 table 关联的块。示例查询:
select distinct te_chunk
from sysmaster:systabextents
where te_partnum != 0 and te_partnum in
(select partnum from systables where tabname = "<table>"
union
select partn from sysfragments f, systables t
where f.tabid = t.tabid and tabname = "<table>"
);
联合子查询的第一部分将处理 table 未分段的,而第二部分处理索引分区和分段的 table。
要获取块路径名称而不是编号,可以使用此查询:
select distinct c.fname
from sysmaster:systabextents te, sysmaster:syschunks c
where te.te_chunk = c.chknum
and te_partnum != 0 and te_partnum in
(select partnum from systables where tabname = "<table>"
union
select partn from sysfragments f, systables t
where f.tabid = t.tabid and tabname = "<table>"
);
我需要在 informix 数据库中找到特定 table 占用的块。
我目前的方法是从 oncheck -pe dbspace
命令中获取结果。但是当 db-space 有很多块时,这个任务非常耗时。我需要知道是否有任何单个查询或快速方法可以通过扩展特定 table
sysmaster 数据库中的 systabextents 可用于确定与 table 关联的块。示例查询:
select distinct te_chunk
from sysmaster:systabextents
where te_partnum != 0 and te_partnum in
(select partnum from systables where tabname = "<table>"
union
select partn from sysfragments f, systables t
where f.tabid = t.tabid and tabname = "<table>"
);
联合子查询的第一部分将处理 table 未分段的,而第二部分处理索引分区和分段的 table。
要获取块路径名称而不是编号,可以使用此查询:
select distinct c.fname
from sysmaster:systabextents te, sysmaster:syschunks c
where te.te_chunk = c.chknum
and te_partnum != 0 and te_partnum in
(select partnum from systables where tabname = "<table>"
union
select partn from sysfragments f, systables t
where f.tabid = t.tabid and tabname = "<table>"
);