SybaseIQ和Oracle的性能对比测试小结
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
15.312
3200000
174.078
32.375
6400000
368.079
66.89
12800000
862.89
146.625
25600000
1956.406
413.203
51200000
3622
822.672
102400000
9080
1686.562
分析
从测试记录可以看到在 20 万条记录以内,Oracle 的执行时间与数据量呈比例关系的, 且执行时间要比 SybaseIQ 短;在 20 万条以让,随着数据量的增大,性能严重地降低。
Count,FailedCount,ReplyDelayTotal)
select F_5M(STARTTIME),
Interface,LAC||'_'||CELLID,LAC,CellID,
sum(decode(success,'O',0,1)),
SUM(DECODE(SUCCESS,'Y',1,0)),
SybaseIQ 在 80 万条以上,执行时间基本上都是与数据量呈比例关系的,80 万条以下, 执行时间则比较随机,但都不超过 5 秒。大数据量下,SybaseIQ 的性能要好于 Oracle,在
10240 万条数据情况下,SybaseIQ 执行时间仅为 Oracle 的 1/5。
2.3 TruncateTable
TruncateTable 测试从数据库现有表中,清空表中所有数据。 测试使用的 SQL 语句: truncate table RT_GPRSHttpPageSDR_t; 测试记录:
记录数
ORACLE
执行时间(秒) SYBASE IQ
50000
3.031
0.016
100000
6.543
0
200000
group
by
mobiletype,to_date(substr(starttime,1,10),'YYYY-MM-DD'); SybaseIQ: select count(*),mobiletype,dateformat(starttime,'yyyymmdd')
from
RT_GPRSHttpPageSDR_t
在之前做过同样数据在 Sybase IQ 环境下的数据装载测试。两次测试情况对比如下:
执行时间
ORACLE
SYBASE IQ
1 小时 3 分
2 小时
分析 在目的表没有索引的情况下,Oracle 的装载速度约是 SybaseIQ 的两倍,但考虑到 SybaseIQ 会在每列上自动创建索引,为以后的查询提供优化的性能,而 Oracle 在目的表上 有索引的情况下,速度会慢一些,可以认为 Oracle 和 SybaseIQ 在数据装载方面性能差别不 大。
2.4 单表全表检索汇总查询
单表全表检索汇总查询是从实际 ETL 过程中摘取一个聚集的 SQL,测试在各数据量情 况下的执行情况,该 SQL 语句将要进行全表检索所有记录,并进行分组和汇总。
测试使用的 SQL 语句:
Oracle:
INSERT
INTO
DbStat_HttpGetSummaryKpi
(SamplingTime,Interface,lac_cell,LAC,CellID,TotalCount,Success
2. 测试记录
2.1 数据装载
数据装载测试从文本文件将数据导入数据库的过程。 本次测试了 Oracle 的数据装载,使用 Oracle 自带的 SQL LOADER 工具,将文本数据文 件导入数据库。 初次导入一组文件约耗时 6 分钟。 因速度太慢,做了一下优化,将目的表上的索引全部删除,并在 SQL LOADER 上增加 DIRECT=Y 选项。 优化后导入一组文件约耗时 6 秒钟。导入所有文件耗时共计 1 小时 3 分。
sum(case success when 'N' then 1 else 0 end),
sum(case success when 'Y' then DelayTime else 0 end)
from RT_GPRSHttpPageSDR_T
group by convert(varchar(17), dateadd(mi, 5-(MOD(datepart(mi,
StartTime),5)), StartTime) , 120)+ '00' ,Interface,LAC,CellID;
测试记录:
在 Oracle 数据库下,当数据量达到 5120 万时,其执行时间是数据量一半时 2560 万条的 3 倍以上,而此时执行所花费的时间大大多于 SybaeIQ,故未做更大数据量的测 试。
引,以及采用何种类型的索引(SybaeIQ 共有 7 种类型索引,用于不同情况)。 根据执行计划的建议,建立了相应的索引,并进行了测试,测试结果显示建立了索引后,
执行速度区别不大。由于时间所限,只在较小数量级进行了测试。
分析 从测试记录可以看到 Oracle 和 SybaseIQ 在 5120 万条数据以下,执行时间与数据量均 基本是呈比例关系的,Oracle 性能要稍好于 SybaseIQ;数据量到达 5120 万以后,执行 时间成倍增加,此时,SybaseIQ 的性能则要好于 Oracle,且在 10240 万条记录时,SybaseIQ 的执行时间仅为 Oracle 的 1/3 左右。此测试显示,对于简单的汇总,数据量小时 Oracle
3.047
14.8%
1600000
41.235
5.953
14.4%
3200000
82.406
12.016
14.6%
6400000
164.437
23.985
14.6%
12800000
357.375
50.688
14.2%
25600000
716.922
98.188
13.7%
51200000
2409.922
2.2 CreateAsSelect
CreateAsInsert 测试从数据库现有表中,查询一部分数据,并创建到新表中。 测试使用的 SQL 语句: Oracle: create table RT_GPRSHttpPageSDR_t as select *
RT_GPRSHttpPageSDR WHERE ROWNUM<= 50000; SybaseIQ: select top 50000 * into RT_GPRSHttpPageSDR_t
group
by
mobiletype,dateformat(starttime,'yyyymmdd'); 测试记录:
记录数
ORACLE
执行时间(秒)
SYBASE IQ
SYBASE IQ 优化后
50000
0.078
0.109
0.109
100000
0.157
0.203
0.203
200000
0.297
0.391
51200000
368.687
300.437
102400000
3004.829
1187.75
在此项测试中,由于看到在数据量小时 Oracle 执行速度快于 SybaseIQ,决定尝试对 SybaseIQ 进行优化,看优化后的性能是否能高于 Oracle。 优化的方法主要是在数据表上建立索引。在 SybaeIQ 所提供的 SQL 执行计划中,如果 数据库觉得可以建新的索引来获得更好的性能,就会建议在哪张表的哪个列上建立索
RT_GPRSHttpPageSDR; 测试记录:
记录数
ORACLE
执行时间(秒) SYBASE IQ
from from
50000
0.156
0.312
100000
0.297
3.093
200000
0.797
1.688
400000
3.969
3.454
800000
17.094
7.906
1600000
60.312
12.516
0
400000
25.937
0.016
800000
48.625
0.016
1600000
89.907
0.031
3200000
147.218
0.047
6400000
248.282
0.078
12800000
479.5
0.125
分析
从测试记录可以看到 Oracle 的执行时间与数据量呈比例关系的,而 SybaseIQ 的执行时 间与数据量无比例关系,每次执行时间均少于 1 秒。从测试结果来看 SybaseIQ Trance Table 的性能要比 Oracle 好得多,所花时间相当少,而且不会随着数据量的增加而花费更多时间。
2.5 单表简单汇总
单表汇总查询是在测试表上做较简单的汇总,将会涉及到表中的全部数据行。 测试使用的 SQL 语句:
Oracle:
select
count(*),mobiletype,
to_date(substr(starttime,1,10),'YYYY-MM-DD')
from
RT_GPRSHttpPageSDR_t
0.39
400000
0.594
0.86
0.75
800000
1.234
1.422
1.454
1600000
2.438
3.766
3.765
3200000
4.765
8.219
8.125
6400000
9.75
18.515
18.407
12800000
20.5
28.703
30.031
25600000
44.25
66.843
StartTime),5)), StartTime) , 120)+ '00' ,
Interface,LAC||'_'||CELLID,LAC,CellID,
sum(case success when '0' then 0 else 1 end),
sum(case success when 'Y' then 0 else 1 end),
(SamplingTime,Interface,lac_cell,LAC,CellID,TotalCount,Success
Count,FailedCount,ReplyDelayTotal)
select convert(varchar(17), dateadd(mi, 5-(MOD(datepart(mi,
203.344
8.4%
102400000
-
411.141
121336900
-
506.546
分析 从测试记录可以看到 Oracle 在 5120 万条数据以下,执行时间与数据量基本是呈比例关 系的,数据量到达 5120 万以后,执行时间成倍增加。SybaseIQ 的执行时间在所有数据 量的测试下基本上都是呈比例关系的。总体来看 SybseIQ 的执行时间一般在 Oracle 的 15%以下,而且可以看出数据量越大,SybseIQ 的性能越好。
SybaseIQ 和 Oracle 的性能对比测试小结
本次测试主要使用 HN 的数据,测试在大数据量情况下,SybaseIQ 和 Oracle 的性能, 并进行对比。
1. 测试方案准备
测试环境: 硬件环境: CPU:Intel 至强 E5410 2.33GHz (1 颗 4 核) 内存:16G 硬盘:WD 1001FALS 1T 软件环境: WindowServer 2003R2 Enterprise x64 Edition SybaseIQ 12.7 64 位版本 Oracle 10.2.0.1 64 位版本 测试数据: 以 HN2012 年 5 月 21 日 17 时至 5 月 22 日 23 时采集的 Gn 数据为基础,将每条数据复 制 9 遍,总数据量达到原数据量的 10 倍,最大的表:HttpPage 数据量达到 1 亿 2 千万条。 测试用例: 此次测试主要覆盖了以下数据库操作: 数据装载 CreateAsSelect、SQL 查询(单表和多表的 GroupBy 汇总) Truncate 表 测试方法: 准备各数量级的数据,执行 SQL 语句,记录完成时间。
121336900 是全部的文本测试数据量。
记录数
ORACLE
执行时间(秒) SYBASE IQ
IQ/ORACLE
500Fra Baidu bibliotek0
1.297
0.203
15.7%
100000
2.547
0.625
24.5%
200000
5.141
0.813
15.8%
400000
11.282
1.5
13.3%
800000
20.594
SUM(DECODE(SUCCESS,'N',1,0)),
SUM(DECODE(SUCCESS,'Y',DelayTime,0))
from RT_GPRSHttpPageSDR_t
group by F_5M(STARTTIME),Interface,LAC,CellID;
SybaseIQ: INSERT INTO DbStat_HttpGetSummaryKpi