jayli426 发表于 2010-03-21 12:45

tblspace具体作用是什么?

这几天再读informix的官方文档
实在还是不理解 Tblspace的作用所在

文档上是这样的写的
Database server administrators sometimes need to track disk use by a
particular table. A tblspace contains all the disk space allocated to a given
table or table fragment (if the table is fragmented). A separate tblspace
contains the disk space allocated for the associated index.

A tblspace, for example, does not correspond to any particular part of a
chunk or even to any particular chunk. The indexes and data that make up a
tblspace might be scattered throughout your chunks. The tblspace, however,
represents a convenient accounting entity for space across chunks devoted to
a particular table. (See “Tables” on page 9-36.)

IBM那个informix考试指南上则写得更简单

磁盘组件 - tblspace

tblspace 是为特定的表分配的所有页的逻辑集合。否则,如果表储存在多个 dbspace 时,表的片段被分散在 dbspace 中。

tblspace 表示的空间不一定是相邻的;页可以分布在一个块中,或者某个表的页可以分布在不同的块中。

我不知提这个概念有多大意义
因为据我现在的知识,根本是没有命令控制哪个表放在哪个表空间的
能控制的只有extend

换言之,即使现在提出了tblspace这个概念,但是没有办法操作,不等于没有提吗?
而且官方文档确实有些语焉不详

如果按照我的理解
应当是
table-->tblspace-->dbspace
但是从create table的语法中似乎看不到这一点
CREATE TABLE表名
( COL1 INTEGER NOT NULL,
  COL2 CHAR(2) CHECK ( COL2 IN (“??”,“??” )),
  COL3 DATE DEFAULT TODAY,
  COL4 SMALLINT  UNIQUE,
---  字段名 类型 )
FRAGMENT BY ROUND ROBIN (BY EXPRESSION) IN DB1,DB2
EXTENT SIZE 1000 NEXT SIZE 600
WITH NO LOG (LOG;BUFFERED LOG;LOG MODE ANSI )
LOCK MODE ROW(PAGE);

从这个语法上来看,database应当是提前选择的
但是一个database应当有多个dbspace吧?:em14:

jayli426 发表于 2010-03-21 22:34

回复 1# jayli426


今天下午又看了一下书,网上这个语法写得不准确
CREATE TABLE表名
( COL1 INTEGER NOT NULL,
  COL2 CHAR(2) CHECK ( COL2 IN (“??”,“??” )),
  COL3 DATE DEFAULT TODAY,
  COL4 SMALLINT  UNIQUE,
---  字段名 类型 )
FRAGMENT BY ROUND ROBIN (BY EXPRESSION) IN DBSPACE1,DBSPACE2
EXTENT SIZE 1000 NEXT SIZE 600
WITH NO LOG (LOG;BUFFERED LOG;LOG MODE ANSI )
LOCK MODE ROW(PAGE);

一个表怎么能放在不同数据里面呢?实在是让人误解

venus3086126 发表于 2010-03-22 00:09

精灵王可以告诉我你看的官方文档叫什么名字么我也急着看但找不到
发个地址最好,谢谢

liaosnet 发表于 2010-03-22 00:12

这几天再读informix的官方文档
实在还是不理解 Tblspace的作用所在

文档上是这样的写的
Database serv ...
jayli426 发表于 2010-03-21 12:45 http://bbs3.chinaunix.net/images/common/back.gif


    一般认为一个表的所有区段的逻辑集合就是这个表的tblspace.

   建库于某个dbspace上,这个有点类似于oracle的默认表空间..即默认的情况下,你在这个库里建的表都将在这个dbspace上..

liaosnet 发表于 2010-03-22 00:16

回复jayli426


今天下午又看了一下书,网上这个语法写得不准确
CREATE TABLE表名
( COL1 IN ...
jayli426 发表于 2010-03-21 22:34 http://bbs3.chinaunix.net/images/common/back.gif


    这个叫 分片(段) 表~ 即把一个表按一定规则存放于多个dbspace上,它的优点在于提升读的能力(并行读,同时也可能平衡IO), 当然若是超大表(超出informix行限制),也可以使用分片表..如你这个指的是一个轮询分片表,你往这个表时插入记录时,它将依次存放在dbpsace1,dbspace2..再dbspace1...上..

jayli426 发表于 2010-03-22 11:12

大虾,是这样的
因为你也说表是建立在dbspace之上
然而

一般认为一个表的所有区段的逻辑集合就是这个表的tblspace.


这就让人感觉 tblspace在这里纯粹是个概念,没有实际操作的目的,
例如create table的时候我们并不能选择是哪个标 tblspace
所以感觉这个概念提得有些多余了:dizzy:

liaosnet 发表于 2010-03-22 12:19

大虾,是这样的
因为你也说表是建立在dbspace之上
然而

一般认为一个表的所有区段的逻辑集合就是这 ...
jayli426 发表于 2010-03-22 11:12 http://bbs3.chinaunix.net/images/common/back.gif


额...发个图来说吧~~一般来说可以忽视tblspace, informix对这个概念很淡~

zzjijun 发表于 2010-03-22 15:33

Bingo! 恭喜楼主你答中了。在Informix里tablespace就是个逻辑概念,指一张表所有extend的逻辑集合,也就是这张表到底有多大。 实际操作中几乎用不到tablespace,只是有些系统表和Informix工具输出里能看到。

多不多余就要问问实验室开发的人了,再说老外有些思维也和咱不一样。

jayli426 发表于 2010-03-22 20:45

Bingo! 恭喜楼主你答中了。在Informix里tablespace就是个逻辑概念,指一张表所有extend的逻辑集合,也就是这 ...
zzjijun 发表于 2010-03-22 15:33 http://bbs.chinaunix.net/images/common/back.gif

That is Bingo!
大虾,
you remind me of the <<Inglorious Bastards>>
2010奥斯卡最佳男配角啊
页: [1]
查看完整版本: tblspace具体作用是什么?