(二) 数据压缩
Sybase IQ采用sp_iqtablesize('用户名.表名')查看各个表占用的空间大小,也可采用sp_iqdbspaceinfo查看表开销(数据、索引、约束等)的明细。
Ownername Tablename Columns KBytes Pages CompressedPages NBlocks
-------------------------------------------------------------------
DBA CUSTOMER 8 158408 2622 2605 19801
Sp_iqdbaspsceinfo的结果如下:
-------------------------------------------------------------------
Customer 145M 3.57M 15.2M 15.8M
Lineitem 2.46G 2.14G 22.6M 0B
nation 96K 48K 2.19M 24K
orders 675M 213M 10.8M 170M
part 80.3M 0B 12.1M 21.5M
partsupp 550M 107M 12.5M 122M
region 72K 0B 1.53M 24K
supplier 1.92M 824K 15M 1.09M
我们将原始csv文件的大小除以IQ数据库的数据大小,得到的倍数作为它们的压缩率,得到下面的结果:
原始数据大小/数据库大小=1.63 (加索引、约束开销)
原始数据大小/数据库大小=2.77 (不加索引开销,纯数据)
(三) 数据查询
Sybase的缓存大小对性能影响很大,有时甚至对功能也有影响,对数据仓库应用而言,demo数据库的原始配置实在是太低了。由于我们的系统内存充足,我们把最后2个缓冲区大小增加后用新参数文件重新启动数据库,大部分tpch查询速度提高了3到5倍。下面各个测试项目列出的均是采用新参数文件的结果。
# iqdemo.cfg
# ------------------------------------------------------------
# Default startup parameters for the ASIQ demo database
# ------------------------------------------------------------
-n redflag11012601_iqdemo
-x tcpip{port=2638}
# The following parameters are also found in the configuration file
# /opt/sybase/IQ-15_2/scripts/default.cfg. Any parameters not specified below
# and not in the start up parameter list, will be added by start_iq
# using default.cfg as a guide.
-c 48m
-gc 20
-gd all
-gl all
-gm 10
-gp 4096
-iqmc 12880
-iqtc 10240
[root@redflag11012601 demo]# start_iq @iqdemo.cfg.bad iqdemo.db
1. tpch查询测试
我们将从tpch.org网站下载的源代码编译后,采用dbgen -s10生成一套10GB规模的数据,用qgen产生查询SQL语句,只针对IQ数据库作语法修改,尽量不改变语句的结构。
测出的结果见原始tpch查询时间表。
▲
我们看到,SybaseIQ在这方面表现不错,基本上所有的原始脚本都能执行,而且基本没有执行特别慢的语句,所有查询都能在10秒以内完成。稍感意外的是,Sybase不支持SQL标准支持的date''、interval''和extract from用法,只好改用date()、year()等函数。而用于限定结果集行数的top语句同limit或rownum的一个明显区别是要求结果集已经排序,否则虽然也能输出结果,但输出错误提示消息。