大量数据插入性能问题

erbiezi0000 2009-05-14 09:14:26
请教各位大侠,现在我想从生产环境导一个表的数据到开发环境,这个表的数据大概有1千万条,我在开发环境建立了dblink到生产环境,我想比较一下以下哪有方法速度会比较快呢?(已知开发环境为非归档模式)

1. insert /*+append nologging*/ into xxx select * from xxx@AAA;
2. insert /*+append */ into xxx nologging select * from xxx@AAA;
3. 先建临时表 create table tmp_xxx as select * from xxx@AAA;
然后插数据 insert/*+ append */into xxx select * from tmp_xxx;
...全文
379 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
lgh1117 2009-10-06
  • 打赏
  • 举报
回复
关注中
yaray 2009-10-05
  • 打赏
  • 举报
回复
导出+导入
xiaozhangnima 2009-09-19
  • 打赏
  • 举报
回复
学习
猫熊工作室 2009-09-16
  • 打赏
  • 举报
回复
读写分离吧
edwin_cs 2009-08-30
  • 打赏
  • 举报
回复
关注中。学习
bobantang18 2009-08-24
  • 打赏
  • 举报
回复
1千万数据量不大
Jinxp 2009-06-22
  • 打赏
  • 举报
回复
可以考虑EXP IMP的方式
tibetjungle 2009-06-17
  • 打赏
  • 举报
回复
当让是不用日志方式更快。

另外,lz不妨试一试Oracle的copy to( from ),效率会更好。拷贝数据过程中,如果有逻辑处理,用dblink合适,但没有逻辑时,copy to( from )的效率会更高。
dongxyang 2009-06-01
  • 打赏
  • 举报
回复
首选sqlldr喽
谈祥庆 2009-05-27
  • 打赏
  • 举报
回复
目前主流的数据库产品都提供了导入导出大数据量的工具,不知道你使用的是什么数据库,以我使用的DB2为例:
可以先导出数据到文件:EXPORT TO '/home/ripa/basedata/SHOP_ALL.DEL' OF DEL SELECT DISTINCT MS.SHOP_SYS_NO ,MS.SHOP_NAME ,MS.SHOP_SHORT_NAME ,MS.SHOP_ALIAS,MS.STATUS,MS.SHOP_MCC_CODE ,CAST(NULL AS CHAR(1)) ,MS.SHOP_CHAIN_TYPE ,MS.SHOP_CHAIN_AREA,MS.SHOP_ADDR ,MS.SHOP_POST ,MS.SHOP_TEL_NO ,MS.SHOP_FAX_NO ,MS.SHOP_AREA ,MS.SHOP_LEVEL FROM M_SHOP MS;

然后将数据文件导入到目标表中:LOAD FROM '/home/ripa/basedata/SHOP_ALL.DEL' OF DEL MODIFIED BY FASTPARSE SAVECOUNT 50 MESSAGES 'load.msg' INSERT INTO T01_MERCHANT DATA BUFFER 200 ALLOW NO ACCESS;

你可以查询一下你使用的数据库提供了什么命令。

1千万数据量不算很大,我曾将16G(1亿条以上)的一个数据文件通过import导入到sybaseIQ中,只用了10多分钟
lylm 2009-05-24
  • 打赏
  • 举报
回复
试试sqlldr怎样
ai_li7758521 2009-05-22
  • 打赏
  • 举报
回复
关注
erbiezi0000 2009-05-21
  • 打赏
  • 举报
回复
楼上的看错了吧,是一千万条,呵呵
海诗美妆 2009-05-19
  • 打赏
  • 举报
回复
[Quote=引用楼主 erbiezi0000 的帖子:]
请教各位大侠,现在我想从生产环境导一个表的数据到开发环境,这个表的数据大概有1千万条,我在开发环境建立了dblink到生产环境,我想比较一下以下哪有方法速度会比较快呢?(已知开发环境为非归档模式)

1. insert /*+append nologging*/ into xxx select * from xxx@AAA;
2. insert /*+append */ into xxx nologging select * from xxx@AAA;
3. 先建临时表 create table tmp_xxx as select * from xxx@AAA;
然后插数据 ins…
[/Quote]
第一个就行。


好用就可以,从生产环境向开发环境导入数据,而且只有一万条,
不需要考虑太多性能问题。
前提是好用!

249

社区成员

发帖
与我相关
我的任务
社区描述
其他产品/厂家
社区管理员
  • 其他
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧