中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 数据库开发 > Informix
IDS提供的“分片”技术在做了RAID5的磁盘阵列上还有意义吗?
作者:未知 时间:2005-09-13 19:04 出处:ChinaUnix.net 责编:chinaitpower
              摘要:IDS提供的“分片”技术在做了RAID5的磁盘阵列上还有意义吗?

"  用户可以对表中的记录或索引进行分组,并且存储在不同的位置,这样可以将数据存储到多个磁盘上,从而减少对磁盘I/O的竞争。数据分片的方案以及分片数据所存放的一组dbspace构成了“分片策略”。数据分片有两种基本类型:轮转法分片(Round-Robin)和基于表达式分片(Expression-Based),对于“轮转法分片”,数据是根据轮转法方式存入表中的。“基于表达式分片”则根据表中的一个或多个字段对分片的规则进行定义,一般在预知查询条件时采用这种方式,从而避免查询中对某些分片的扫描。 

由于INFORMIX动态服务器可以并行地扫描多个磁盘上的数据,从而实现内部查询的并行操作,因此采用“分片”技术可以提高查询效率。 "

  这种分片存储技术相当于在软件层面做 条块化, 如果底层已经做了raid5硬件条块化, 那IDS提供的这种“分片”机制还有使用的必要吗?

 mywg 回复于:2004-06-02 21:09:46
有啊。对应用的好处多啊

 unixzhong 回复于:2004-06-03 10:00:02
楼上的朋友, 谢谢回复, 不过你的观点我不太认同, 没有说明论据支持你的说法.

顶!

 ifx 回复于:2004-06-03 10:46:05
有意义是肯定的,只是作用的大小而已。
你可以看看PDQ的资料,再有,详细调节存放位置、以及其他的分片的好处(多看看资料,分片的好处多多),会对你数据库的性能、安全性等有很大帮助的。

 zzjijun 回复于:2004-06-03 10:53:30
不能简单的说“这种分片存储技术相当于在软件层面做条块化”。举个简单的例子需要把索引和表中的记录分配在不同的硬盘上,我不知道只依靠你说的“底层已经做了raid5硬件条块化”怎么来实现,用IDS的分片机制是控制到具体存储在硬盘的位置的。

 unixzhong 回复于:2004-06-03 11:54:46
" 你可以看看PDQ的资料,再有,详细调节存放位置、以及其他的分片的好处(多看看资料,分片的好处多多) "      谢谢指路, PDQ的资料有没有比较写的好的, 坛子上有吧? 如果方便,请给个链接, 或者我DIY吧.



"不能简单的说“这种分片存储技术相当于在软件层面做条块化”。举个简单的例子需要把索引和表中的记录分配在不同的硬盘上,我不知道只依靠你说的“底层已经做了raid5硬件条块化”怎么来实现,用IDS的分片机制是控制到具体存储在硬盘的位置的。  "
 
问倒我了  :mrgreen: ,  同意你的说法,我那种说法是不准确.  你这样一个例子的确可以说明硬件RAID条块化和分片技术的不同之处, 一针见血! 佩服, 谢谢.

继续探讨一下, 如果做了一个RAID5后, 在系统里面看到的是一个逻辑硬盘,而不是下面的多个物理硬盘, 如果用分片的话,怎样把索引和表中的记录分配在不同的硬盘上?



ps: 我觉得我们这样的探讨气氛很不错,:)))

 salaciouswolf 回复于:2004-06-03 14:10:33
MARK~!

 ifx 回复于:2004-06-03 15:19:43
Fragmentation Goals
Consider fragmenting your tables if you have at least one of the following
goals:
n Improved single-user response time
To improve the performance of individual queries, use fragmentation
with parallel database query (PDQ) to scan in parallel
fragments that are spread across multiple disks.
n Improved concurrency
Fragmentation can reduce contention for data that is located in large
tables that are used by multiple queries and OLTP applications.
Fragmentation reduces contention because each fragment resides on
a separate I/O device, and the database server directs queries to the
appropriate fragment.
n Improved availability
If a fragment becomes unavailable, the database server can still
access the remaining fragments.
n . Improved ALTER FRAGMENT performance
You can also use the ALTER FRAGMENT TABLE with the ATTACH
clause to add data quickly to a very large table.
n Improved backup-and-restore characteristics
Fragmentation gives you a finer backup-and-restore granularity.
This granularity can reduce the time that is required for backup-andrestore
operations. In addition, you can improve the performance of
backup-and-restore operations if you use ON-Bar to perform these
operations in parallel.

摘自 管理员指南
关于PDQ的资料,还是建议你看这本书吧,其他的书也很多的,如果你有education service的教师用书最好了。

 zzjijun 回复于:2004-06-03 16:02:10
对RAID5知道的不多。如果真是“在系统里面看到的是一个逻辑硬盘,而不是下面的多个物理硬盘”,我也想知道怎么解决。
看看那位高人指点一下。

 amiescort 回复于:2004-06-03 20:28:28
[quote:7e6a976ade="unixzhong"]"继续探讨一下, 如果做了一个RAID5后, 在系统里面看到的是一个逻辑硬盘,而不是下面的多个物理硬盘, 如果用分片的话,怎样把索引和表中的记录分配在不同的硬盘上? 
..[/quote:7e6a976ade]
说真的,这个问题偶也想过,不过后来,偶公司同事一说:这个是informix自动分配的,偶也就释然了,没有进一步去想,惭愧……
关注ing~~

 amiescort 回复于:2004-06-03 20:30:40
现在总觉得不太对 啊,
分片的依据是dbspace,难道informix在偶们建dbspace的时候就自动将dbspace建到不同的磁盘上??

 mywg 回复于:2004-06-03 20:53:50
我个人的看法是这样的,不一定对,大家可以交流一下:
1、raid 5是一种比较靠近硬件的技术,而IDS提供的“分片”是靠近软件的技术。
2、raid 5的初衷是提高系统中磁盘可靠性和加大系统对硬盘的容量的需求的一种技术。(raid的定义是这样)
3、IDS提供的“分片”是2000年前后主要的数据库厂商提出的一种提高DB操作性能的技术(oracle是从8开始有的)
4、对我们从应用的层面考虑这个问题的时候,我个人觉得是不矛盾的。是可以兼顾的,具体的实施,看最终系统的要求定。
5、目前我认为raid 5的需求主要是可靠性和一定意义上的速度提升(可以同时操作几个磁盘,比操作一个磁盘的效率好)等。但raid 5实际是raid里比较慢的技术,单纯看速度,有快过raid 5的raid技术。特别是raid 5 的数据校验是一个实实在在的运算,不可能免除的步骤。技术上的优势,同时是速度的软肋
6、IDS提供的“分片”是几个主要的DB厂商(包括MS)在实际的应用中面临的问题的一个解决方案,我们自己的应用如果有必要,用IDS提供的“分片”是最好了。
7、所以,我觉得raid 5和“分片”是不矛盾的。是可以兼顾的,具体的实施,看最终系统的要求定。

 unixzhong 回复于:2004-06-03 21:28:16
[quote:05fccc1f6f="amiescort"]
说真的,这个问题偶也想过,不过后来,偶公司同事一说:这个是informix自动分配的,偶也就释然了,没有进一步去想,惭愧……
关注ing~~[/quote:05fccc1f6f]

  
   哈哈, 不用惭愧, 从另外一个角度看,说不定别人说你不是死钻牛角尖的认呢? :)


ps: 感谢所有参加讨论的朋友, 你们的观点不管是不是准确, 但都是有启发性的

 cruelsun 回复于:2004-06-03 23:04:29
一点都不矛盾啊。即使系统只有一块raid5的逻辑硬盘,分片依然有提升的。
分片最不好的地方就是增加了管理成本,数据库转移就不方便,所以我们一直不使用。
建议数据量大,对速度要求高的情况使用分片。
RAID是一定要用的,没安全保证谁敢用啊。

 glz 回复于:2004-06-09 10:40:14
采用RAID1对份片是最好的选择,但是要求你对应用数据有充分的了解,对CHUNK的具体位置了解.如果调整不好,会造成人为的IO瓶颈.

其实现在一般用RAID0+1,可以对数据量特别大的表作份片处理,在这里的优势不是IO,而是ONLINE对份片后的数据处理能力,在这里我的理解是:一个人处理十万数据和处理一万条数据的区别.资源耗费也是不一样的.
以上谨供参考,欢迎批评

 wolfop 回复于:2004-06-09 16:22:03
1、 RAID5不是分片。如果你的阵列结果是一个大RAID5逻辑盘,那么分片对于IO来说没用,但是对于某些查询可能有用。
2、如果RAID5不是弄出一个大大的逻辑盘,而是比如6块物理盘一个逻辑盘,几十个物理盘弄出10来个逻辑盘,那么对IO分布也有用。
3、能用RAID1不要用RAID5。

 czw1413_cn 回复于:2004-06-10 09:07:21
大家在做raid的硬盘上做一个分片和一不不分片的表(结构完全一样),分别做select ,update,insert比较一下性能,最能说明问题了.

 glz 回复于:2004-06-10 13:37:12
RAID0+1的性能在读写7/3的状态下,比RAID5要高出1/3以上,建议数据库尽量少用RAID5

 livepower 回复于:2004-06-10 15:43:25
呵呵,看了大家讨论的这么热烈。也发表一下自己的看法。不过这几是个人之言,有什么错误之处还请大家指正:
首先说一下RAID技术,目前来讲比较流行的几种RAID技术中主要有
raid1,raid5,还有一些在HPPCSERVER上流行的PDG(大概是这个术语,行话叫热备,相当于两次的RAID5)。
raid1:主要是提高了安全性,但浪费空间。
raid5:主要是增加了磁盘上的使用率,安全性比RAID1相对差一点。
PDG:就双RAID5来讲,提高了安全性,可以支持同时坏三个盘而数据不会丢失。
所以从底层来讲,数据的IO并不因为RAID技术有多大的差别,差别主要在于有多少硬盘控制嚣之类的底层硬件方面的。

现在再来谈一下INFORMIX的分片技术,INFORMIX分片技术对我们应用来讲最有用的好处在于从软件层上把我们的数据按照我们自己的意愿分在自己认为比较合理的好管理的位置,还有一个就是对大量查询非常有好处。
INFORMIX并不会管数据放在哪个具体的物理盘上,而是具体到相应的DBSPACE上,因为INFORMIX查询可并发执行的最小单位就是DBSPACES。比如只有一个硬盘,如果你把这个硬盘分成几个DBSPACES来存放数据就比你用一个强好多。所以如果做了RAID5。实际上数据放在哪个物理硬盘上INFORMIX是不得而知。呵呵,说了这么多,我不知道有没有说清楚。下面给出一个是IBM公司认为比较合理的INFORMIX数据分片的技术:
如果你有好多物理硬盘,建议对每个硬盘做RAID1。然后对每个RAID1硬盘上分成多个DBSPACES。最好rootdbs,物理日志,逻辑日志,tempdbs都放在不同的dbspaces上。然后再建立多个datadbs。当然具体要看你实际应用来做。一般来讲每个物理硬盘都有最大的并发IO能力。可以做些小软件测试一上上面最好跑多少个DBSPACES最合理。呵呵。说了这么多,希望对大家理解有些帮助。我的QQ是:3719186,呵呵。

 cruelsun 回复于:2004-06-11 22:25:45
[quote:2257561775="livepower"]因为INFORMIX查询可并发执行的最小单位就是DBSPACES。比如只有一个硬盘,如果你把这个硬盘分成几个DBSPACES来存放数据就比你用一个强好多..........[/quote:2257561775]

哦,这样的吗?以前没听说过。大家能确认一下吗?

 glz 回复于:2004-06-30 10:11:21
[quote:6036109dea="livepower"]INFORMIX并不会管数据放在哪个具体的物理盘上,而是具体到相应的DBSPACE上,因为INFORMIX查询可并发执行的最小单位就是DBSPACES。[/quote:6036109dea]

DBSPACES怎么会是最小的并发单位呢,没搞错吧。

 lianyong 回复于:2004-06-30 22:15:56
又学到了不少东西,支持。。。

 hebei130104 回复于:2005-02-04 11:43:48
我认为意义不大。

 yyiiasc 回复于:2005-02-16 12:38:21
个人觉得r5上在做分片意义不大,特别是对随机的数据分片来说
对大型数据库的操作,系统主要瓶颈是磁盘I/o,而数据库的分片技术主要是实现数据存储在多个磁盘上,这样进行数据操作时可实现多个磁盘的并发访问来提高磁盘I/o.
而在做了R5的磁盘阵列中存储数据时每个数据段都由做为r5的那几个磁盘的data block组成,及存储数据时数据会自动随机的分布在做了r5的多个磁盘上。
对于在r5上使用按条件的数据分片,从理论来说数据的访问效率会有一定提高但也应该很有限(这部分提高应该可以忽略,未实际比较过),有机会测试一把

 zhangxw0325 回复于:2005-04-08 10:56:36
[quote:48125ee64b="yyiiasc"]个人觉得r5上在做分片意义不大,特别是对随机的数据分片来说
对大型数据库的操作,系统主要瓶颈是磁盘I/o,而数据库的分片技术主要是实现数据存储在多个磁盘上,这样进行数据操作时可实现多个磁盘的并发访问来提高磁..........[/quote:48125ee64b]
不同意,做分片可以减小索引和数据的规模,可以提高PDQ并发度,可以大大提高查询的效率

 imkdk 回复于:2005-04-10 11:52:41
[quote:b770503087="zzjijun"]对RAID5知道的不多。如果真是“在系统里面看到的是一个逻辑硬盘,而不是下面的多个物理硬盘”,我也想知道怎么解决。
看看那位高人指点一下。[/quote:b770503087]
从操作系统层面上看,经过分片的CHUNK使用负载比较平均,这种现象符合了客户对负载均衡的需求。但从底层磁盘实现来看,一个操作系统的逻辑磁盘设备其实对应了同一阵列的多个物理硬盘(raid),通过raid条带化实现了负载均衡。因此,我觉得基于RAID的磁盘做表分片的更大意义在于实现数据传输链路(光线卡通道)的负载均衡(因为一个逻辑磁盘只能走一条链路)。但现在EMC公司也有从底层实现链路负载均衡的工具如powerpath等,因此,个人觉得分片技术已经是从前操作系统直接管理物理磁盘时代的产物,在现在的技术条件下,没有实际意义。欢迎探讨。

 yuchn 回复于:2005-04-16 15:06:36
前两天刚刚对DSS系统做过优化,我来谈谈我的看法。
1。分片能提高查询的并行度,无论底层的盘是物理硬盘还是存储系统出来的逻辑盘。这一点不用怀疑,我把一个2800多万条记录的表分片后(原来没有分片,现分成4片)询速度快了将近80%

2。在使用存储系统逻辑盘的情况下,分片使得性能的提高主要来自于并行度的提高,而不是I/O性能的提高。
举个例子,同样的一个200G的逻辑盘,划分成100个2GB的CHUNK,CHNK1-CHNK100。两种做法:1,所有的CHUNK组成一个DATADBS,然后把大表建在这个DATADBS上;2,CHNK1-CHNK25组成DATADBS1,CHNK26-CHNK50组成DATADBS2,。。。CHNK75-CHNK100组成DATADBS4。然后把大表分片建在DATADBS1-4。
后者在INFORMIX及应用配置正确的情况下,能提高4倍(理论猜测,便于理解)的并行度。当然前提是存储系统能提供4倍I/O的性能,否则都是白搭。

3。基于2的例子,以前在直接使用系统提供的物理盘的情况下,如果物理盘只有1个,容量同样为200G,即使做4个分片,也不会有明显的性能提升。因为一个物理硬盘内部无法提供4倍的I/O并行度。但如果是现在普遍使用的存储系统的逻辑盘,只要存储系统本身的性能够,就能在内部能解决4倍的I/O并行度,所以性能提升是相当明显的(前提是INFORMIX及应用配置正确的情况下)。

4。存储系统提供的逻辑盘,无论是RAID的哪个层次,都只影响每次I/O的开销,对实际查询时间有影响,但对分片与否并无直接关系。

5。INFORMIX将并行度与分片(DB SPACES)挂钩,在以前使用物理硬盘的年代是合理的,那时候必须告诉INFORMIX关于数据与物理硬盘的对应情况,才能采取正确的并行I/O策略。但现在明显不合潮流,因为现在好多用户使用存储系统出来的逻辑硬盘,存储系统就能解决一个逻辑硬盘并行I/O。在这种情况下,INFORMIX最好能自己自动对一个表进行并行查询,不管是否分片。

6。建议IBM重新改写INFORMIX的并行算法,否则INFORMIX是永远无法与DB2竞争的。(遗憾,DB2也是IBM的产品)
当然,改写并行算法是对INFORMIX的重大修改,INFORMIX还要照顾使用物理硬盘的用户。况且如果改写成功,那INFORMIX就不是INFORMIX了,那是一种新的高端数据库系统。

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有