sql优化问题 斑竹请进

[复制链接]
查看11 | 回复9 | 2008-7-25 12:30:27 | 显示全部楼层 |阅读模式
1.insert /*+append*/into table1select * from table2;
--用时: 6分钟

2. alter session enable parallel dml;
insert /*+paralllel(a,2)*/ into table1 a select * from table2;
--用时: 9分钟

table2有200w条数据,现在想插入到table1,为什么1 比 2快了竟然3分钟?
说明: 数据库的服务器有2个cpu
回复

使用道具 举报

千问 | 2008-7-25 12:30:27 | 显示全部楼层
版主今日休息。
回复

使用道具 举报

千问 | 2008-7-25 12:30:27 | 显示全部楼层
原帖由 chenzhanyiasd 于 2008-7-26 17:37 发表
1.insert /*+append*/into table1select * from table2;
--用时: 6分钟

2. alter session enable parallel dml;
insert /*+paralllel(a,2)*/ into table1 a select * from table2;
--用时: 9分钟

table2有200w条数据,现在想插入到table1,为什么1 比 2快了竟然3分钟?
说明: 数据库的服务器有2个cpu

append本来就要快一些阿
回复

使用道具 举报

千问 | 2008-7-25 12:30:27 | 显示全部楼层
原帖由 chenzhanyiasd 于 2008-7-26 17:37 发表
1.insert /*+append*/into table1select * from table2;
--用时: 6分钟

2. alter session enable parallel dml;
insert /*+paralllel(a,2)*/ into table1 a select * from table2;
--用时: 9分钟

table2有200w条数据,现在想插入到table1,为什么1 比 2快了竟然3分钟?
说明: 数据库的服务器有2个cpu

append是指直接在HWM之上插入数据,不用在HWM之下扫描空闲块,所以快。
paralllel HITNT也是优化参数,指定两个CPU 并行进行数据插入处理。
为什么不把两个合起来使用?
回复

使用道具 举报

千问 | 2008-7-25 12:30:27 | 显示全部楼层
两个不可合并。APPEND只能支持一个线程。
楼主和不加任何HINTS的比较过没有?并行应该更快吧?
回复

使用道具 举报

千问 | 2008-7-25 12:30:27 | 显示全部楼层
原帖由 newkid 于 2008-7-26 21:54 发表
两个不可合并。APPEND只能支持一个线程。
楼主和不加任何HINTS的比较过没有?并行应该更快吧?

恩,突然想起来了,只用一个PARALLAL就可以了
加PARALLAL,自动会起到APPEND的效果~~
回复

使用道具 举报

千问 | 2008-7-25 12:30:27 | 显示全部楼层
我想加hint肯定会比不加hint会快的,但不明白的是为什么parallel居然还会比append慢这么多?是不是需要设置什么参数之类的?
回复

使用道具 举报

千问 | 2008-7-25 12:30:27 | 显示全部楼层
学习了
回复

使用道具 举报

千问 | 2008-7-25 12:30:27 | 显示全部楼层
两个板块都要发,呵呵
回复

使用道具 举报

千问 | 2008-7-25 12:30:27 | 显示全部楼层
我也看到了,管理版似乎比这里答的好,呵呵,dba搞优化还是内行些!
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行