|
单凭一个装载速度就断言 某个比某个好 ,未免有点片面;
举个简单例子:
SYBASE IQ 的一个表,只可以有一个并发写入(修改/删除)事务;
当A 进程 INSERT 一条记录,没有提交; 同时B进程也进行INSERT ,此时,IQ不是阻塞B进程,而是直接提示B进程写入失败,并使B进程返回。
这个特性,至少在IQ 12.6上仍然如此。
IQ之所以装载快,是因为,IQ的每个列用的都是BITMAP式的索引存储,并且是全列索引(每个列都有一个缺省索引),所以,有显示的索引定义和没有索引,对于IQ来说,装载速度没有什么本质区别,相对ORACLE等数据库来说,同等索引条件下,IQ的装载速度自然就比ORACLE强很多。
05年的时候,曾经做过一个对比测试,solaris + oracle/sybase , 在实现相同设计需求的情况下,sybase用iq , oracle 用 partition (不需要额外创建索引),装载速度没有什么区别,查询速度,在某些典型的利用分区策略的查询下,oracle甚至比sybase iq快很多。
iq的强项是 即席查询,也就是 非规划内的随机查询; 当查询条件 超出了oracle的分区策略和索引策略,这时候,iq的优势就非常非常明显了,因为每个列,都有一个缺省索引,并且,每个列都是bitmap压缩存储,所以,iq的io量,相对也小很多。
以上,是我用了1年多iq的一些感觉,iq是个好东西,但是,只能在一些特定的应用上才能最好的发挥它的优势。oracle的目标是用一个产品覆盖绝大多数应用需求,所以,难免在某些单项上不如别的产品。 |
|