新客网WWW.XKER.COM:致力做中国最专业的网络学院!
学院: 操作系统 - 网络应用 - 服务器 - 网络安全 - 工具软件 - 办公软件 - Web开发 - 数据库 - 网页设计 - 图形图像 - 媒体动画 - 硬件学堂 - 存储频道 - QQ专区
您的位置:首页 > 软件开发 > 数据库 > informix教程 > 正文:Informix动态服务器表分片策略的计划和调整

Informix动态服务器表分片策略的计划和调整

新客网 XKER.COM 2007-09-17 来源: lsbd 收藏本文

下面是一个采用“基于范围表达式分片方案”创建表的例子:

CREATE TABLE xyz (aa integer....) 

FRAGMENT BY EXPRESSION 

aa<=100 IN dbspace1 

aa>;1000 AND aa<2000 IN dbspace2 

REMAINDER IN dbspace3

绝对规则

“绝对规则”使用了SQL的关系与逻辑操作符。与“范围规则”不同,“绝对规则”运行用户采用关系操作符与逻辑操作符对规则进行定义。此外,表中可以有多个字段参与分片。

例: FRAGMENT BY EXAMPLE 
zipcode=94536 OR zipcode=94538 IN dbspace 
zipcode=94025 OR zipcode=92310 IN dbspace 
REMAIDER IN dbspace3

对于以上这种分片方案,必须知道每一个邮政编码所联系的数据个数,以确保每个数据分片上的数据量比较平衡,从而使INFORMIX动态服务器减少扫描的数据分片的数目。指定分片方案时,要确保数据分片之间不互相重叠。此外,定义数据分片时可以不包括REMAINDER分片。

分片的基本原则

“数据分片”的表达式必须尽可能简单,因为执行较复杂的表达式将加重CPU的负荷。同时,数据库中并不是每一个表都需要分片,除非能从“数据分片”中得到显著的收益。“分片”的表达式因为能确保磁盘I/O操作均衡,尽管我们没必要制定一个均衡的数据分片方案。如果大量的查询只对表数据中很小的区域进行访问,那么应该用表达式将那些被频繁访问的数据分片到多个盘上,尽管这样的分片也许数据量并不均衡。表达式应该把限制性最强的部分放在前面。对表达式进行修正是为了减少表达式的计算量,减少每次访问的数据量,从而最终减轻CPU的负荷。如果表达式中第一个不等式的结果为假,那么整个表达式的结果也将为假,因此不必计算表达式的其它部分(AND表达式)。比如说,为了插入数值25,下列表达式需要计算6个不等式:

x>;=1 and x<=10 in dbspace1 

x>;10 and x<=20 in dbspace2 

x>;20 and x<=30 in dbspace3

如果用如下表达式,则只需要计算4个不等式:

x<=10 and x>;=1 in dbspace1 

x<=20 and x>;10 in dbspace2 

x<=30 and x>;20 in dbspace3

分片的表达式中应该避免数据类型的转换。例如,日期数据类型在表达式中内部转换为整数类型。对于频繁更新的字段进行分片,会带来许多管理上附加工作。例如,如果根据一个日期字段进行分片,而超过保存日期的记录被删除,那么包含”超期数据”的数据分片将最终变空。这样就需要删除旧的数据分片,并为最新日期的记录创建一个新的数据分片。

“分片”策略的设计

一个“分片”策略包含数据分布方案以及数据分片所存放的一组dbspace。制定“数据分片”策略时需要根据分片的目标以及数据库的信息,诸如硬件/软件特性、查询特性、数据分布等作出决策。同时还需要知道一个现存的未分片数据库是否做转换,以及是否需要临时创建相应的应用程序。在前面的例子中,已经预知查询的方式,则可以加以利用。我们还应考虑到查询方式在将来的不断变化,诸如数据库的区域和/或帐户的附加部分,这一点也很重要。

“数据分片”的目标包括最大程度的内部查询并行化、外部查询并行化、提高数据可用性、更细的备份/恢复粒度以及更强的数据加载效率。

数据分片获得“内部查询并行化”:是指INFORMIX动态服务器充分发挥“数据分片”与PDQ功能的优势,并行地处理一个复杂的查询。这是决策支持系统(DSS)一类应用程序的主要目标。DSS查询从一个表中顺序读出大量数据记录。我们推荐使用数据分片。选择“轮转法”分片方案还是“基于表达式”的分片方案取决于查询特征、数据分布等因素,一般来说,当用户不能确定根据表中哪一个字段做“基于表达式”的分片,从而保持数据分片的均衡,或者不知道数据访问的方式时,我们推荐采用“轮转法”方式。“轮转法”方式不支持对索引的分片,因为扫描线索要越过分片的边界去读取索引,这样会导致效率的下降。“分片策略”还应该确保数据均衡的分布在不同的数据分片上,确保并行顺序扫描能均衡地完成。 数据分片获得“外部查询的并行化”:是指在大量用户运行较小的查询、返回少量的数据的条件下,INFORMIX动态服务器最大程度提高性能的能力。一般来讲,对于“存在大量用户,需要实时响应的应用程序,称为联机事务处理(OLTP)。OLTP查询总是在同一时间访问数据的一小部分区域,总是随机地对一些数据行进行更新或者删除操作。这些操作总是和”索引扫描”有关。在这种情况下,应该用表达式将数据表和索引表进行分片,从而允许查询在扫描过程过中某些数据分片。如果不考虑I/O竞争,数据分片和索引分片可以在同一个盘上,并使用同样的“分片”策略。另一方面,在一个大系统中如果额外有空余的盘,并且磁盘I/O可能成为潜在的瓶颈,那么最后将索引单独建在一块盘上。调换一下顺序,当按照某一字段创建索引时候,如果每一个查询都根据同一字段访问数据时,我们也可以使用与“数据分片”不相同的策略对索引进行分片。这种情况下,最好在WHERE子句中使用另外一个字段,“分片”策略的理想化程度取决于数据的分布和对表的查询的分布情况。我们的目标通过数据分布消除I/O瓶颈,尽管每个数据分片上的数据量可能不太均匀。

共3页: 上一页 [1] [2] [3] 下一页
收藏】 【评论】 【推荐】 【投稿】 【打印】 【关闭
发表评论
要记得去论坛讨论,点击注册新会员匿名评论
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
阅读排行
随机推荐
实用信息推荐