这个问题源自于我的项目
项目具体内容就不说了主要是做数据分析处理方面的
其中主要逻辑为导入TXT文件到数据库的某临时物理表 对数据进行处理后插入到主表中。
我们JAVA组开发人员给出的清单性能时间为
130W条单头数据+290W条单身数据存在于TXT中
工作:解析TXT文件+导入ORACLE数据库(环境为LINUX,JAVA+ORACLE)
耗时:
130W单头解析+导入数据库最终所耗时间为3分46秒(取AVG)TXT文件大小127MB
290W单身解析+导入数据库最终所耗时间为12分钟左右(取AVG) 单身文件列数多,数据量较大897MB
数据处理:调用存储过程处理 所耗时间1小时20分钟左右(并且经常报错,No more data to read from socket)GOOGLE BAIDU ORACLE论坛看遍了 没解决这个问题....我用C#+MS-SQL还原了以上2种表 以及数据解析程序和导入程序
自己亲身测试还原以上所有功能 所耗时间统计
130W条单头数据+290W条单身数据存在于TXT中
工作:解析TXT文件+导入ORACLE数据库(环境为Windwos,C#+MS-SQL)
耗时:
130W单头解析+导入数据库最终所耗时间为41秒(取AVG)TXT文件大小127MB
290W单身解析+导入数据库最终所耗时间为3分22秒 单身文件列数多,数据量较大897MB
数据处理:业务太复杂 不想写MS-SQL做业务了 为了给大家直观的看下数据处理的效率 我用MS-SQL的manager studio和PL-SQL工具 进行了一个非常简单的查询
查询语句如下
MS-SQL 脚本
SELECT TOP 12 * FROM
(
SELECT *,COUNT(td.IPCard) OVER (PARTITION BY td.IPCard) AS CountIPCard FROM tmp_Datas td
) AS Query1 ORDER BY Query1.CountIPCard DESCORACLE脚本(注意这里的*在我的IDE PL/SQL Developer中直接执行 是只看12条数据的意思!!查看所有条需要点查询框上面的显示所有数据的按钮,用过的人都知道 我就不拿出来现了)
SELECT * FROM
(
SELECT tph.*,COUNT(tph.policy_holder_id) OVER (PARTITION BY tph.policy_holder_id) AS CountIPCard FROM temp_policy_holder tph
) Act ORDER BY Act.countipcard DESC以上2个一模一样的查询(2表都没建索引)时间分别为
MS-SQL: 22.943
ORACLE:29.156
差了7秒啊 大哥
以上都用数据说话!
难道ORACLE很强大 而是我不会用????
项目具体内容就不说了主要是做数据分析处理方面的
其中主要逻辑为导入TXT文件到数据库的某临时物理表 对数据进行处理后插入到主表中。
我们JAVA组开发人员给出的清单性能时间为
130W条单头数据+290W条单身数据存在于TXT中
工作:解析TXT文件+导入ORACLE数据库(环境为LINUX,JAVA+ORACLE)
耗时:
130W单头解析+导入数据库最终所耗时间为3分46秒(取AVG)TXT文件大小127MB
290W单身解析+导入数据库最终所耗时间为12分钟左右(取AVG) 单身文件列数多,数据量较大897MB
数据处理:调用存储过程处理 所耗时间1小时20分钟左右(并且经常报错,No more data to read from socket)GOOGLE BAIDU ORACLE论坛看遍了 没解决这个问题....我用C#+MS-SQL还原了以上2种表 以及数据解析程序和导入程序
自己亲身测试还原以上所有功能 所耗时间统计
130W条单头数据+290W条单身数据存在于TXT中
工作:解析TXT文件+导入ORACLE数据库(环境为Windwos,C#+MS-SQL)
耗时:
130W单头解析+导入数据库最终所耗时间为41秒(取AVG)TXT文件大小127MB
290W单身解析+导入数据库最终所耗时间为3分22秒 单身文件列数多,数据量较大897MB
数据处理:业务太复杂 不想写MS-SQL做业务了 为了给大家直观的看下数据处理的效率 我用MS-SQL的manager studio和PL-SQL工具 进行了一个非常简单的查询
查询语句如下
MS-SQL 脚本
SELECT TOP 12 * FROM
(
SELECT *,COUNT(td.IPCard) OVER (PARTITION BY td.IPCard) AS CountIPCard FROM tmp_Datas td
) AS Query1 ORDER BY Query1.CountIPCard DESCORACLE脚本(注意这里的*在我的IDE PL/SQL Developer中直接执行 是只看12条数据的意思!!查看所有条需要点查询框上面的显示所有数据的按钮,用过的人都知道 我就不拿出来现了)
SELECT * FROM
(
SELECT tph.*,COUNT(tph.policy_holder_id) OVER (PARTITION BY tph.policy_holder_id) AS CountIPCard FROM temp_policy_holder tph
) Act ORDER BY Act.countipcard DESC以上2个一模一样的查询(2表都没建索引)时间分别为
MS-SQL: 22.943
ORACLE:29.156
差了7秒啊 大哥
以上都用数据说话!
难道ORACLE很强大 而是我不会用????
解决方案 »
- xp_cmdshell 'net use' 不能找到远程服务器
- 生成视图SQL脚本后的语句运行会由于视图创建顺序问题而无法正常执行,如何解决?
- 求一句SQL语句~~
- 执行存储过程总是报 临时表无效
- 请问哪有全国的城市数据库下载,最好是包括乡镇. 如:湖南省岳阳市华容县东山镇四级.
- 关于日期范围方面的问题?
- 关于MS2000SQL数据库同步问题。
- 关于在PB中存取image类型数据的问题,急,请教各位大侠 ,错误提示:在关键字 'NULL' 附近有语法错误.
- 开发过程中遇到一个棘手问题,数据库高手和有闲暇的人进来看看。
- 简单问题易得分:在VC用ADO访问数据库(SQL Server)时,如果字段为NULL时该怎样处理。。。。急!急!急!急!急!急!
- 说说SqlServer Oracle mysql的区别
- 数据库
不一定是oracle的问题
各自用的环境是不一样的
ORACLE+JAVA的环境在一起 配置为8核心+16GB内存
我MS-SQL+C#的环境也是在一起 配置为2核心+1GB内存
谢谢大家看完 下班先闪了 回家继续看
oracle 和MS-SQL 的over partition by 语句是一模一样的 性能差7秒 130W数据量
JAVA以前是SUN的 和ORACLE不是一家公司的东西 做数据解析+导入数据到ORACLE中的效率远远不及 是一家公司(提供了很好的支持)C#解析数据导入到MS-SQL中。
至于后面的查询 我是觉得不是很直观 100W ORACLE缺失输的很丢脸 希望明天ORACLE能雄起下 见证奇迹明天继续~~~
总结一下:
1.做数据处理,特别是想今后想向数据处理这个方向发展的同志们千万要记住,凡事要以数据说话。要从实际出发考虑问题 不要想当然的一定就认为ORACLE的性能各个方面是所有数据库性能中最好的,我带着这样的怀疑才做这样的测试,当然确实有点标题党的意思,其实为了不是争论哪个数据库好,而是为了更多的了解我们所使用的工具
2.出于个人的偏见,以及部分对数据库日常的经验积累来看,ORACLE的市场卖点恰恰不是它的性能,而是ORACLE的安全策略,也就是它的安全性,130W数量级输给MS-SQL 输了也就输了 毕竟二者在解释OVER Partition BY 以及编写日志的策略 包括实现分组的策略各有不同。所以必然产生性能上的差别。
3.开玩笑说一句 回复二楼的同志~,鄙视ORACLE版的人气,和这版没法比- -#...