楼主: yulihua49

[PRO*C] 看我做的数据库包装器

[复制链接]
论坛徽章:
118
2015年新春福章
日期:2015-03-06 11:58:18生肖徽章:猪
日期:2013-12-06 14:15:45生肖徽章:狗
日期:2013-12-06 14:15:45生肖徽章:鸡
日期:2013-12-06 14:15:45生肖徽章:猴
日期:2013-12-06 14:15:45生肖徽章:羊
日期:2013-12-06 14:15:45生肖徽章:马
日期:2013-12-06 14:15:45生肖徽章:蛇
日期:2013-12-06 14:15:45生肖徽章:龙
日期:2013-12-06 14:15:45生肖徽章:兔
日期:2013-12-06 14:15:45
581#
发表于 2013-4-25 23:28 | 只看该作者
本帖最后由 HelloWorld_001 于 2013-4-25 23:28 编辑

我最近用了下外部表,也感觉sqlldr没啥用处了。因为可以insert into a select * from b。
b表 外部表,a表示数据库表,这样也能把数据load进数据库。

外部表有个什么格式可以导出数据,我打开文本看了是xml,不是文本 。让我很失望。

我感觉oracle有个功能故意弱化了,就是将数据库信息导出成文本。
spool我认为性能不够,比导入慢。 写文件的一个包我没试过,不知道会不会快点。

有什么好的方法快速将数据库信息导出为文本?

使用道具 举报

回复
论坛徽章:
520
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
582#
发表于 2013-4-26 02:24 | 只看该作者
HelloWorld_001 发表于 2013-4-25 23:28
我最近用了下外部表,也感觉sqlldr没啥用处了。因为可以insert into a select * from b。
b表 外部表,a表 ...

OO一直推荐的sql unloader 2:
http://www.anysql.net/download
我看这个下载页面还是版本1的,版本2问OO吧。

确实,ORACLE要做这个是易如反掌,不知道为什么不做。

使用道具 举报

回复
论坛徽章:
118
2015年新春福章
日期:2015-03-06 11:58:18生肖徽章:猪
日期:2013-12-06 14:15:45生肖徽章:狗
日期:2013-12-06 14:15:45生肖徽章:鸡
日期:2013-12-06 14:15:45生肖徽章:猴
日期:2013-12-06 14:15:45生肖徽章:羊
日期:2013-12-06 14:15:45生肖徽章:马
日期:2013-12-06 14:15:45生肖徽章:蛇
日期:2013-12-06 14:15:45生肖徽章:龙
日期:2013-12-06 14:15:45生肖徽章:兔
日期:2013-12-06 14:15:45
583#
发表于 2013-4-26 09:28 | 只看该作者
newkid 发表于 2013-4-26 02:24
OO一直推荐的sql unloader 2:
http://www.anysql.net/download
我看这个下载页面还是版本1的,版本2问O ...

我理解是阻止oracle数据库向其他数据库做迁移。都是oracle导出的dmp,外部表格式通用,其他数据库无法使用。
你说的这个链接,我下载了,没有文档说明,根据参数试了几下,无法使用。
这种东西我也有,我想知道 utl_file 写出来会不会比spool快,更通用。

使用道具 举报

回复
论坛徽章:
14
2009新春纪念徽章
日期:2009-01-04 14:52:28沸羊羊
日期:2015-03-04 14:51:52优秀写手
日期:2014-03-14 06:00:13马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:022013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:08:15蜘蛛蛋
日期:2012-06-27 21:08:142012新春纪念徽章
日期:2012-01-04 11:53:29ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26
584#
 楼主| 发表于 2013-4-26 11:05 | 只看该作者
本帖最后由 yulihua49 于 2013-4-26 12:54 编辑
newkid 发表于 2013-4-25 22:07
我被你搞得稀里糊涂的。你真的试过我的方法?我看了你582楼的贴,似乎你入库之前就进行了那个所谓的“清分” ...


是的,这么大的架构,当然是整体解决方案,不能只为了玩压数据库的游戏。
我想说的是,这个系统,即使包含了相当复杂的计算,仍然能够以超过简单加载的速度运行,显示了架构的能力和DAU的效率,当然是OCI的效率,我只不过自认为发挥的还不错。
一般会说,这么多数据,仅仅加载就需要多少多少时间,再加上计算的时间,在计算时还要从数据库提出来,算完了再加回去,一共需要多少多少时间。。。。我回答:全部任务完成,就一趟,连加载带计算,比单纯加载数据库还快。
你能相信吗?

你的方案为什么会慢?
首先,存储过程,不知道如何使用RAC,多个节点可以并行的,你没有用上,这点还不如sqlldr,它还是有可能使用多节点的。
其次,你没有并行,压缩、传输、解压缩、转移加载,都是串行的。
你知道光压缩这些数据需要多少时间吗?20分钟!解压也需要差不多的时间。
1200W的数据,我只要7分钟完成一切。早已满足要求。干完活了,没事,玩压数据库的游戏。数据库还没压满,我估计极限应该3分钟能完,照这个努力。

回过头来,再说。
我把数据分成小包,多线程并行压缩,传输,解压,计算,入库,回执。一个流水线,各个环节是并行的,每个环节内多个包同时处理,也是并行的,二维并行。
一些包在压缩,一些包在传输,一些在解压,一些在计算,一些在入库,同时的。
而你呢,即使完成了传输,加载过程里,读出,解析CSV,插入,存储过程能把这3个环节并行吗?至少还可以用到多核。

实际上,先插入,再计算这个模式我们也有,叫做“反刍”,主要是用于于因某种原因在加载时未计算的数据在某时刻补充计算。
读出其中十几个列,计算出另外的十几个列,update之。
由于读出和update在一个盘,并行度较差,update比insert开销也大,这过程,处理1200W需要16分钟。别小看这16分钟,为了启动这个试验,要把1200W的标志改为“未计算”,一条SQL干了35分钟!
这就是架构的优势!一个复杂的计算要比一个简单的SQL快得多。






使用道具 举报

回复
论坛徽章:
6
奥运会纪念徽章:跳水
日期:2012-08-14 18:13:22奥运会纪念徽章:皮划艇激流回旋
日期:2012-08-14 18:13:32ITPUB 11周年纪念徽章
日期:2012-10-10 13:11:142013年新春福章
日期:2013-02-25 14:51:24奥运会纪念徽章:垒球
日期:2013-05-16 14:54:34奥运会纪念徽章:手球
日期:2013-05-16 14:54:49
585#
发表于 2013-4-26 17:14 | 只看该作者
敬佩两位执着的精神

使用道具 举报

回复
论坛徽章:
15
ITPUB9周年纪念徽章
日期:2010-10-08 09:32:27马上有房
日期:2014-04-04 19:42:43马上有对象
日期:2014-02-18 16:44:082014年新春福章
日期:2014-02-18 16:44:08本田
日期:2014-01-16 21:44:06大众
日期:2013-12-14 09:29:562013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:14:48奥运会纪念徽章:射箭
日期:2012-07-26 13:53:55奥运会纪念徽章:跆拳道
日期:2012-07-13 13:54:19
586#
发表于 2013-4-26 20:47 | 只看该作者
1200万普通硬件导入两分钟够差不多

使用道具 举报

回复
论坛徽章:
520
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
587#
发表于 2013-4-26 21:40 | 只看该作者
yulihua49 发表于 2013-4-26 11:05
是的,这么大的架构,当然是整体解决方案,不能只为了玩压数据库的游戏。
我想说的是,这个系统,即使 ...

你说的sqlldr使用多节点,那么文件就可以分片了?假如能分成多个文件,那么并行压缩、上传、多个外部表多节点入库又有什么问题?
你们的存储过程需要“读出,解析CSV”?那就说明没用外部表!用外部表只管INSERT...SELECT。
知道这个SELECT可以玩出多少花样来吗?宁可用临时表,也不用UPDATE,你那种方法才要“反刍”。
SQL的妙处不是你们这种记录型思维所能理解的。

使用道具 举报

回复
论坛徽章:
520
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
588#
发表于 2013-4-26 21:51 | 只看该作者
HelloWorld_001 发表于 2013-4-26 09:28
我理解是阻止oracle数据库向其他数据库做迁移。都是oracle导出的dmp,外部表格式通用,其他数据库无法使用 ...

如果你想用UTL_FILE, 看这个贴:
http://www.itpub.net/forum.php?mod=viewthread&tid=1738533

我写的在29楼,比他们单位的那个好。

使用道具 举报

回复
论坛徽章:
14
2009新春纪念徽章
日期:2009-01-04 14:52:28沸羊羊
日期:2015-03-04 14:51:52优秀写手
日期:2014-03-14 06:00:13马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:022013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:08:15蜘蛛蛋
日期:2012-06-27 21:08:142012新春纪念徽章
日期:2012-01-04 11:53:29ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26
589#
 楼主| 发表于 2013-4-27 10:00 | 只看该作者
gszoracle 发表于 2013-4-26 20:47
1200万普通硬件导入两分钟够差不多

当然,你要看该表有多少字段,有多长,带多少索引,分区情况等等。

使用道具 举报

回复
论坛徽章:
14
2009新春纪念徽章
日期:2009-01-04 14:52:28沸羊羊
日期:2015-03-04 14:51:52优秀写手
日期:2014-03-14 06:00:13马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:022013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:08:15蜘蛛蛋
日期:2012-06-27 21:08:142012新春纪念徽章
日期:2012-01-04 11:53:29ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26
590#
 楼主| 发表于 2013-4-27 10:04 | 只看该作者
本帖最后由 yulihua49 于 2013-4-27 10:07 编辑
newkid 发表于 2013-4-26 21:51
如果你想用UTL_FILE, 看这个贴:
http://www.itpub.net/forum.php?mod=viewthread&tid=1738533


那是当时讨论过的,后边有最终的结果,你的程序确实比我们单位那哥们的程序快,但是没超过DAU,DAU还是比你快。
看同一个帖子的49楼。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表