5.存储方面的改变
Sybase IQ 15之前,一个dbspace是指一个文件或是一个裸设备。从IQ 15开始,dbspace的概念发生了变化,现在是指数据的逻辑容器:一个dbspace由一个或多个dbfiles组成(一个dbfile表示一个文件或一个裸设备)。
Sybase IQ 15数据库包括了多个逻辑存储结构:
(1)Catalog Store:存储数据库的元数据(metadata)
(2)Main Store:存储系统的使用的数据和用户数据
(3)Temp Store:存储装载和查询操作执行期间生成的临时数据(例如:排序结果)和用户定义的
临时表。
在Main Store中,一个预先定义的dbspace(在创建数据库时指定,称作IQ_SYSTEM_MAIN)用于存放系统使用的结构和数据(例如:Free List、版本空间、节点间通讯、TLV日志等)。从IQ 15开始,Sybase建议不要在IQ_SYSTEM_MAIN dbspace中存放用户数据。如果没有IQ 15的VLDB选件,除了IQ_SYSTEM_MAIN dbspace外,你可以创建一个包含多个dbfiles的user dbspace(如果有VLDB选件的话可以创建多个user dbspaces)。下图描述了IQ 15的数据库存储结构:
Sybase建议IQ_SYSTEM_MAIN dbspace不要存放用户的数据,Free List、版本空间、节点间通讯、TLV日志等系统信息存放在这个dbspace中。缺省情况下,IQ_SYSTEM_MAIN的20%空间保留用于存储这些系统信息。当为IQ_SYSTEM_MAIN增加空间时(即增加dbfiles),整个Multiplex必须关闭,并且进行节点同步,所以最好让IQ_SYSTEM_MAIN只存放系统数据。
当数据库对象被存放到一个dbspace时,如果DEFAULT_DISK_STRIPING数据库选项设置为‘ON’,那么Sybase IQ会把数据自动分布到dbspace中的所有dbfiles上进行存储。用户也可以使用操作系统级的磁盘条带化技术。
对于Sybase IQ 15.3及之后的版本,可以建立一个额外的dbspace,作为DQP(distributed query processing)所使用的用来存放并行查询中间结果的共享临时数据存储(shared temporary store)IQ_SHARED_TEMP dbpsace(有关DQP的说明见后面的内容)。
从IQ 15开始一个user dbspace可以是只读或读写状态。Dbspace中的某个dbfile也可以标记为只读或读写状态。有了这个特性,数据库管理员的工作变得更高效:
(1)只需备份一次只读数据
(2)只读dbspace的备份和恢复可以独立于读写dbspaces
(3)当IQ数据库运行时可以联机恢复只读数据
(4)可以只针IQ数据库的读写dbspaces执行数据校验
从IQ 15开始一个dbpace可以是online或offline。DBA可以把不可打开或不可用的dbapaces标记为offline状态,这样IQ将忽略它们,直到这些dbapces变为online状态。
Sybase IQ 15的VLDB选件提供了分区和数据放置功能。通过指定某个字段作为分区键,可以把一个表按照分区键值的范围进行分区(即范围分区,IQ目前只支持范围分区),每一个键值区间内的数据属于一个分区。每一个数据分区只包括FP索引数据(即只有FP索引是分区的),其他索引并不分区。一个分区表能够执行下面的改动操作:
(1)增加或删除分区
(2)劈开一个分区
(3)合并临近分区
(4)解除分区(un-partition)
在进行分区操作时能够指定数据库对象在哪个dbspace中存放,或把某个数据库对象移动到一个不同的dbspace上。这里所说的数据库对象可以是表、表分区、字段和索引。对于经常访问的数据可以存放在速度较快的存储上,而较少访问的数据可以存放在廉价的、速度较慢的存储设备上。这个策略即可以控制存储成本,又可以提供比较好的性能。下面是一个表分区的例子:
CREATE TABLE orders
(
o_orderkey unsigned bigint,
o_custkey unsigned int ,
o_orderstatus char(1),
o_totalprice double precision,
o_orderdate date,
o_orderpriority char(15),
o_clerk char(15),
o_shippriority int,
o_comment varchar(79),
PRIMARY KEY (o_orderkey)
)
PARTITION BY RANGE(o_orderdate)
(
p0 values <= ('1991-12-31'),
p1 values <= ('1992-12-31'),
p2 values <= ('1993-12-31'),
p3 values <= ('1994-12-31'),
p4 values <= ('1995-12-31'),
p5 values <= ('1996-12-31'),
p6 values <= ('1997-12-31'),
p7 values <= ('1998-12-31'),
p8 values <= (MAX)
);
阅读(6369) | 评论(0) | 转发(0) |