第五章 数据分片(fragmentation)
Informix数据分片指把一个数据库表的数据分布在不同的数据空间上。数据分片技术主要适用于数据量比较大(50,000条记录以上)、访问频繁的数据表。
1、数据分片技术
1)轮循(round robin)方式
轮循方式数据分片将数据库表的数据均匀分布在指定的数据空间上。对于经常需要顺序扫描的数据表或经常装载的数据的数据表,可以考虑使用round robin分片策略,将数据均匀分布在多个位于不同硬盘上的数据空间(dbspaces)上。例如:
create table satmxhz
(
…
)fragment by round robin in workdbs1,workdbs2,workdbs3;
2)表达式(expression)方式
表达式方式数据分片将数据按照一定的条件分布在指定的数据空间上。对于经常按照一定的条件扫描,而且很少装载数据的数据表,可以考虑使用expression分片方式,将数据按照一定条件分布在多个位于不同的数据空间(dbspace)上。例如:
create table acdb1
(
…
)fragment by expression
fb1z1 in (“1”,”2”,”3”) in workdbs1,
fb1z1 in (“4”,”5”,”6”) in workdbs2,
remainder in workdbs3;
使用表达式方式数据分片在进行条件查询时,Online可以忽略那些不满足条件的分片,从而降低了扫描数据量,提高了查询效率。
2、 数据分片的优点
(1)并行扫描(parallel scans);
如果使用了数据分片,并且打开了PDQ,那么对数据表的扫描将并行从各个fragmentation中读数据,查询速度将得到很大提高。
(2)均衡I/O;
如果数据分片使用的数据空间正好分布在多个独立物理硬盘上,则数据扫描将在多个硬盘上同时进行,减少了磁盘竞争,均衡了磁盘I/O。这对于OLTP交易非常有利。
(3)高可靠性;
通过设置忽略出错的单个数据分片,可以避免由于单个数据分片出错导致整个不能使用的情况。这对于大量的动态数据统计非常有利,如决策支持系统DSS(Decision Support System)中的数据统计。
(4)降低备份、恢复数据粒度。
由于数据备份、恢复可以在dbspace一级上进行,而数据分片驻留在dbspace上,所以数据备份、恢复可以在fragment上进行。
3、rowid问题
IDS的rowid由4个字节构成:
0 -- 07bit :记录在页面中的槽表号。
08 -- 32bit :tbsapce中的逻辑页号。
由于使用了数据分片,一个数据库表将跨越多个dbspace中的tbspace,所以rowid在一个表中不再是唯一的,而且作为应用程序也不应该直接操作rowid。鉴于以上情况,在使用Informix 7.0后,应该不再直接操作rowid。为了操作方便可以在数据库表中定义主关键字(primary key)。
Informix数据分片指把一个数据库表的数据分布在不同的数据空间上。数据分片技术主要适用于数据量比较大(50,000条记录以上)、访问频繁的数据表。
1、数据分片技术
1)轮循(round robin)方式
轮循方式数据分片将数据库表的数据均匀分布在指定的数据空间上。对于经常需要顺序扫描的数据表或经常装载的数据的数据表,可以考虑使用round robin分片策略,将数据均匀分布在多个位于不同硬盘上的数据空间(dbspaces)上。例如:
create table satmxhz
(
…
)fragment by round robin in workdbs1,workdbs2,workdbs3;
2)表达式(expression)方式
表达式方式数据分片将数据按照一定的条件分布在指定的数据空间上。对于经常按照一定的条件扫描,而且很少装载数据的数据表,可以考虑使用expression分片方式,将数据按照一定条件分布在多个位于不同的数据空间(dbspace)上。例如:
create table acdb1
(
…
)fragment by expression
fb1z1 in (“1”,”2”,”3”) in workdbs1,
fb1z1 in (“4”,”5”,”6”) in workdbs2,
remainder in workdbs3;
使用表达式方式数据分片在进行条件查询时,Online可以忽略那些不满足条件的分片,从而降低了扫描数据量,提高了查询效率。
2、 数据分片的优点
(1)并行扫描(parallel scans);
如果使用了数据分片,并且打开了PDQ,那么对数据表的扫描将并行从各个fragmentation中读数据,查询速度将得到很大提高。
(2)均衡I/O;
如果数据分片使用的数据空间正好分布在多个独立物理硬盘上,则数据扫描将在多个硬盘上同时进行,减少了磁盘竞争,均衡了磁盘I/O。这对于OLTP交易非常有利。
(3)高可靠性;
通过设置忽略出错的单个数据分片,可以避免由于单个数据分片出错导致整个不能使用的情况。这对于大量的动态数据统计非常有利,如决策支持系统DSS(Decision Support System)中的数据统计。
(4)降低备份、恢复数据粒度。
由于数据备份、恢复可以在dbspace一级上进行,而数据分片驻留在dbspace上,所以数据备份、恢复可以在fragment上进行。
3、rowid问题
IDS的rowid由4个字节构成:
0 -- 07bit :记录在页面中的槽表号。
08 -- 32bit :tbsapce中的逻辑页号。
由于使用了数据分片,一个数据库表将跨越多个dbspace中的tbspace,所以rowid在一个表中不再是唯一的,而且作为应用程序也不应该直接操作rowid。鉴于以上情况,在使用Informix 7.0后,应该不再直接操作rowid。为了操作方便可以在数据库表中定义主关键字(primary key)。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24955184/viewspace-772255/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/24955184/viewspace-772255/