楼主: paulxc

[讨论] oracle 海量数据insert问题

[复制链接]
论坛徽章:
0
11#
发表于 2009-8-18 17:41 | 只看该作者

考虑一下并行插入pdml

big_table@ORA10GR1> alter table big_table parallel;

Table altered.

big_table@ORA10GR1> alter session enable parallel dml;

Session altered.

使用道具 举报

回复
论坛徽章:
63
19周年集字徽章-19
日期:2020-09-23 02:43:002012新春纪念徽章
日期:2012-02-13 15:12:092012新春纪念徽章
日期:2012-01-04 11:49:54ITPUB十周年纪念徽章
日期:2011-11-01 16:20:28现任管理团队成员
日期:2011-05-07 01:45:082011新春纪念徽章
日期:2011-02-18 11:42:472011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:50
12#
发表于 2009-8-18 22:13 | 只看该作者
2W要一分钟,太不正常了.

使用道具 举报

回复
论坛徽章:
10
授权会员
日期:2005-10-30 17:05:33秀才
日期:2016-03-24 09:10:24秀才
日期:2016-02-18 09:11:33秀才
日期:2016-01-25 14:55:312013年新春福章
日期:2013-02-25 14:51:24ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412011新春纪念徽章
日期:2011-02-18 11:43:34ITPUB元老
日期:2010-11-16 08:41:11ITPUB9周年纪念徽章
日期:2010-10-08 09:28:51秀才
日期:2016-03-24 09:20:52
13#
发表于 2009-8-19 17:36 | 只看该作者
无需调整.... 索引少点, 即可!!!!
再不行, 分成多表...

使用道具 举报

回复
论坛徽章:
45
马上有对象
日期:2014-07-28 22:58:22凯迪拉克
日期:2013-10-01 09:34:09劳斯莱斯
日期:2013-09-23 12:56:01阿斯顿马丁
日期:2013-09-17 18:07:48凯迪拉克
日期:2013-09-12 11:10:25比亚迪
日期:2013-08-23 21:12:02蜘蛛蛋
日期:2013-07-26 20:15:22迷宫蛋
日期:2013-05-14 18:10:23紫蛋头
日期:2013-03-16 10:05:302013年新春福章
日期:2013-02-25 14:51:24
14#
发表于 2009-8-20 14:52 | 只看该作者
建议:适时的做下表分析

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
9
生肖徽章2007版:牛
日期:2009-03-10 21:26:492010新春纪念徽章
日期:2010-01-04 08:33:082010年世界杯参赛球队:葡萄牙
日期:2010-02-22 14:35:242010新春纪念徽章
日期:2010-03-01 11:19:092010广州亚运会纪念徽章:射击
日期:2010-09-08 23:42:12ITPUB9周年纪念徽章
日期:2010-10-08 09:31:212010广州亚运会纪念徽章:拳击
日期:2010-10-30 00:46:582011新春纪念徽章
日期:2011-02-18 11:43:322011新春纪念徽章
日期:2011-03-01 08:49:39
15#
发表于 2009-11-13 14:10 | 只看该作者
我家的PC机,CPU 双核 2.93GHz ,SATA 7200RPM 500GB , SQL Server 2008 , C# 自己写的客户端,每秒都可以做到Insert 3000多条的成绩。
按照LZ的要求,平均每秒也就插入300~400条左右。
我相信Oracle在这方面不会比SQL Server差的。

使用道具 举报

回复
论坛徽章:
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
16#
发表于 2009-11-14 15:50 | 只看该作者
原帖由 killkill_shadow 于 2009-11-13 14:10 发表
我家的PC机,CPU 双核 2.93GHz ,SATA 7200RPM 500GB , SQL Server 2008 , C# 自己写的客户端,每秒都可以做到Insert 3000多条的成绩。
按照LZ的要求,平均每秒也就插入300~400条左右。
我相信Oracle在这方面不会比SQL Server差的。

档次比你低点,1.6G,oracle,每秒5000多,逐条插入。
打开游标,绑定变量,用游标插入。

[ 本帖最后由 yulihua49 于 2009-11-14 15:51 编辑 ]

使用道具 举报

回复
论坛徽章:
41
马上加薪
日期:2014-02-19 11:55:14铁扇公主
日期:2012-02-21 15:02:402012新春纪念徽章
日期:2012-02-13 15:12:092012新春纪念徽章
日期:2012-02-13 15:12:092012新春纪念徽章
日期:2012-02-13 15:12:092012新春纪念徽章
日期:2012-02-13 15:12:092012新春纪念徽章
日期:2012-02-13 15:12:092012新春纪念徽章
日期:2012-01-04 11:50:44ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15ITPUB年度最佳BLOG写作奖
日期:2012-03-13 17:09:53
17#
发表于 2009-11-18 09:56 | 只看该作者
有可能的话,可以考虑使用SQL*Loader或使用外部表辅助加载。

本着“少写”的原则来提速。
例如:
减少日志写(nolog)
较少索引写(去掉表的索引)

使用道具 举报

回复
论坛徽章:
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
18#
发表于 2009-11-18 10:39 | 只看该作者
原帖由 secooler 于 2009-11-18 09:56 发表
有可能的话,可以考虑使用SQL*Loader或使用外部表辅助加载。

本着“少写”的原则来提速。
例如:
减少日志写(nolog)
较少索引写(去掉表的索引)

如果表里有3千万,再插入200万,可能部分有重复,sqlldr玩的就困难点。
数组插入,如何处理个别重复记录,我还没学会。
有时数据库还在运行中,不允许停止,也不能随便删索引。
这种情况只能逐条插入,有问题逐条处理(更新 or 丢弃 or 记日志)。
打开游标,绑定变量是最快的。
上面每秒5000多,是在54个字段的表,一个复合主键的情况,数据与数据库同机,供参考。
同表sqlldr的插入速度是6000多每秒,但受限制太大。

[ 本帖最后由 yulihua49 于 2009-11-18 10:45 编辑 ]

使用道具 举报

回复
论坛徽章:
41
马上加薪
日期:2014-02-19 11:55:14铁扇公主
日期:2012-02-21 15:02:402012新春纪念徽章
日期:2012-02-13 15:12:092012新春纪念徽章
日期:2012-02-13 15:12:092012新春纪念徽章
日期:2012-02-13 15:12:092012新春纪念徽章
日期:2012-02-13 15:12:092012新春纪念徽章
日期:2012-02-13 15:12:092012新春纪念徽章
日期:2012-01-04 11:50:44ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15ITPUB年度最佳BLOG写作奖
日期:2012-03-13 17:09:53
19#
发表于 2009-11-18 12:24 | 只看该作者
如果原表中存在数据,并且是生产不允许停机的情况下,可以考虑先将数据加载到一个中间表,然后再找一个合适的维护窗口做合并。

使用道具 举报

回复
论坛徽章:
24
数据库板块每日发贴之星
日期:2006-11-05 01:02:00祖国60周年纪念徽章
日期:2009-10-09 08:28:00祖国60周年纪念徽章
日期:2009-10-09 21:00:44ITPUB8周年纪念徽章
日期:2009-10-09 21:31:082010新春纪念徽章
日期:2010-01-04 08:33:082010新春纪念徽章
日期:2010-03-01 11:04:54ITPUB9周年纪念徽章
日期:2010-10-08 09:31:222011新春纪念徽章
日期:2011-02-18 11:42:472012新春纪念徽章
日期:2012-01-04 11:50:44ITPUB 11周年纪念徽章
日期:2012-10-09 18:06:20
20#
发表于 2009-11-21 11:36 | 只看该作者
都说的比较有理

使用道具 举报

回复

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

本版积分规则 发表回复

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