- 浏览: 217168 次
- 性别:
- 来自: 北京
-
文章分类
最新评论
-
bluky999:
jiakechong 写道跟啊里爸爸那个差不多吧跟 dubb ...
淘宝-HSF -
jiakechong:
跟啊里爸爸那个差不多吧
淘宝-HSF -
lookqlp:
您好!我写了个关键词关联度统计的mapreduce,排序非常慢 ...
排序--MapReduce -
liubang201010:
DB Audit更多参考资料:
http://www.inno ...
8--《DB Audit》 -
裴小星:
这些数据库专家,同样不了解程序员。SQL(或PL/SQL,TS ...
MapReduce:一个重大的倒退
一、
提高
DML
操作的办法:
简单说来: 4
、批量更新,每更新一些记录后及时进行提交动作.
避免大量占用回滚段和或临时表空间.
5
、创建一临时的大的表空间用来应对这些更新动作.
6
、加大排序缓冲区 如果UPDATE
的是索引字段,就会涉及到索引的重建,暂停索引不会提高多少的速度,反而有可能降低UPDATE
速度, ORACLE
优化修改参数最多也只能把性能提高15%
,大部分都是
SQL
语句的优化!
update
总体来说比insert
要慢
: 二、
各种批量DML
操作:
(1
)、oracle
批量拷贝:
set arraysize 20
(2
)、常规插入方式:
insert into t1 select * from t;
为了提高速度可以使用下面方法,来减少插入过程中产生的日志:
alter table t1 nologging;
insert into t1 select * from t;
commit;
(3)、CTAS方式:
create table t1
as 为了提高速度可以使用下面方法,来减少插入过程中产生的日志,并且可以制定并行度:
create table t1 nologging parallel(degree 2) as select * from t;
(4)、Direct-Path插入:
insert /*+append*/ into t1 select * from t;
commit;
为了提高速度可以使用下面方法,来减少插入过程中产生的日志:
alter table t1 nologging;
insert /*+append*/ into t1 select * from t;
Direct-Path插入特点:
1、
append
只在
insert … select …
中起作用,像
insert /*+ append */ into t values(…)
这类的语句是不起作用的。在
update
、
delete
操作中,
append
也不起作用。
2、
Direct-Path
会使数据库不记录直接路径导入的数据的重做日志,会对恢复带来麻烦。
3、
Direct-Path
直接在表段的高水位线以上的空白数据块中写数据,不会重用高水位线以下的空间,会对空间的使用造成一定的浪费,对查询的性能也会造成一定的影响。而常规插入会优先考虑使用高水位线之下有空闲空间存在的数据块。因此理论上
Direct-Path
插入会比常规插入速度更快,因为
Direct-Path
直接使用新数据块,而常规插入要遍历
freelist
获取可用空闲数据块,如果
同
nologging
配合,这种速度优势会更加明显。
4、
以
append
方式插入记录后,要执行
commit
,才能对表进行查询。否则会出现错误:
ORA-12838:
无法在并行模式下修改之后读
/
修改对象。
5、
用
append
导入数据后,如果没有提交或者回滚,在其他会话中任何对该表的
DML
都会被阻塞(不会报错),但对该表的查询可以正常执行。
6、
在归档模式下,要把表设置为
nologging
,然后以
append
方式批量添加记录,才会显著减少
redo
数量。在非归档模式下,不必设置表的
nologging
属性,即可减少
redo
数量。如果表上有索引,则
append
方式批量添加记录,不会减少索引上产生的
redo
数量,索引上的
redo
数量可能比表的
redo
数量还要大。
7、
数据直接插入数据文件,绕过
buffer cache
并且忽略了引用完整性约束。
8、
不管表是否在
nologging
下,只要是
direct insert
,就不会对数据内容生成
undo
。
9、
Oracle
在
Direct-Path INSERT
操作末尾,对具有索引的表执行索引维护,这样就避免了在
drop
掉索引后,再
rebuild
。
10、
Direct-Path INSERT比常规的插入需要更多的空间。因为它将数据插入在高水位之上。并行插入非分区表需要更多的空间,因为它需要为每一个并行线程创建临时段。
11、
在插入期间,数据库在表上获得排他锁,用户不能在表上执行并行插入、更新或者删除操作,并行的索引创建和build也不被允许。但却可以并行查询,但查询返回的是插入之前的结果集
。
(5)、并行DML:
如果你的服务器有多个cpu
,采用parellel hint
,可以大幅度的提高效率
INSERT /*+ PARALLEL
(tableA, 2) */INTO
tableA
为了提高速度可以使用下面方法,来减少插入过程中产生的日志:
INSERT /*+ PARALLEL
(tableA, 2) */INTO
tableA NOLOGGING oracle
默认并不会打开PDML
,对DML
语句必须手工启用。即需要执行
alter table enable parallel dml
命令。
并行DML
特点:
1
、在并行DML模式中,默认的就是DIRECT-PATH插入,为了运行并行DML模式,必须满足以下条件:
a、必须是Oracle企业版;
b、必须在session中使并行DML生效,执行以下sql语句:
ALTER SESSION { ENABLE | FORCE } PARALLEL DML;
c、必须指定table的并行属性,在创建的时候或者其他时候,或者在insert操作时使用“PARALLEL”提示。
d、为了使Direct-Path Insert模式失效,在INSERT语句中指定“NOAPPEND”提示,覆盖并行DML模式。
2
、并行Direct-Path INSERT到分区表:
类似于serial Direct-Path INSERT,每个并行操作分配给一个或者多个分区,每个并行操作插入数据到各自的分区段的高水位标志之上,commit之后,用户就能看到更新的数据。
3、并行Direct-Path INSERT到非分区表:
每个并行执行分配一个新的临时段,并插入数据到临时段。当commit运行后,并行执行协调者合并新的临时段到主表段,用户就能看到更新的数据。
4、Direct-Path INSERT可以使用Log或者不使用Log。
5、另外不得不说的是,并行不是一个可扩展的特性,只有在数据仓库或作为DBA
等少数人的工具在批量数据操作时利于充分利用资源,而在OLTP
环境下使用并行需要非常谨慎。事实上PDML
还是有比较多的限制的,例如不支持触发器,引用约束,高级复制和分布式事务等特性,同时也会带来额外的空间占用,PDDL
同
样是如此。
1、暂停索引,更新后恢复.
避免在更新的过程中涉及到索引的重建.
2、批量更新,每更新一些记录后及时进行提交动作.
避免大量占用回滚段和或临时表空间.
3、创建一临时的大的表空间用来应对这些更新动作.
alter session set sort_area_size=100000000;
insert into
tableb select * from tablea;
commit;
因为在更新是索引可以提高数据的查询速度,重建索引引起的速度降低影响不大。
几点建议:
1
、如果更新的数据量接近整个表,就不应该使用index
而应该采用全表扫描
2
、减少不必要的index
,因为update
表通常需要update index
3
、如果你的服务器有多个cpu
,采用parellel hint
,可以大幅度的提高效率
另外,建表的参数非常重要,对于更新非常频繁的表,建议加大PCTFREE
的值,以保证数据块中有足够的空间用于UPDATE
, 从而降低CHAINED_ROWS
。
set copycommit 5000
copy from
username/password@oraclename
append table_name1
using select * from table_name2;
select * from t;
ALTER SESSION ENABLE PARALLEL
DML;
SELECT * FROM tableB;
SELECT * FROM tableB;
发表评论
-
OCP认证考试指南全册10g
2012-01-06 18:49 1029常用命令: 1,lsnrctl status;emctl s ... -
exits 和in 深度分析(转载,出处不明)
2011-08-22 21:03 900EXISTS的执行流程 select * from t1 wh ... -
索引有点靠后
2011-08-10 21:51 743记得在taobao时候需要统计一个数据,但是通过不了SQLWE ... -
《MySQL 性能调优与架构设计》
2011-08-10 21:47 808MySQL的基本架构:SQL Layer和Storage En ... -
《Oracle Database 10g 性能调整与优化》
2011-08-02 21:31 10498.2 当从表中访问数据 ... -
Oracle零数据丢失
2011-07-25 20:28 940Oracle在版本7的时候, ... -
硬盘存储和磁盘存储比较
2011-05-30 14:02 769如图 -
解析oracle的ROWNUM -- 作者: chen_liang
2011-05-17 11:32 832对于rownum来说它是oracle系统顺序分配为从查询 ... -
flashback 需要的条件
2011-04-13 19:00 792flashback table 需要下面几个条件 1. ... -
oracle表列名大小写
2011-03-23 22:06 4028不是我写的sql,比较烂,但是有一个可以关注的点 oracle ... -
MapReduce:一个重大的倒退
2011-03-22 23:09 1650转载http://www.cnblogs.com/c ... -
ORA-12154
2011-03-20 23:16 918看看监听: lsnrctl status 是不是正常 ... -
Oracle -other
2011-03-12 13:10 826JackJw 的杂货铺 http://jackjw.itpu ... -
数据库的最佳布局
2011-03-09 23:26 8111,并发访问对象的分离 2,数据和相应的索引的分开 3,回 ... -
执行计划详解
2011-03-09 22:00 1138一、什么是执行计划 An explain plan is ... -
优化器
2011-03-07 23:47 770访问路径:FULL TABLE SCAN 全表扫描;Index ... -
B树索引和位图索引的使用环境
2011-03-07 00:18 862B树索引:是联机事务处理应用的最好选择,键值列是最适合的 位 ... -
sqlplus autotrace
2011-03-05 14:14 760出自eygle http://www.eygle.com/fa ... -
Oracle 重要文件系统解释 转载
2011-02-25 23:01 839Oracle 中要了解的文件实在太多了,一不小心就被弄 ... -
聚族索引、非聚族索引、组合索引的含义和用途 转载
2011-02-25 21:50 1264http://blog.csdn.net/zhaohuabin ...
相关推荐
oracle大批量处理数
总之,Oracle数据仓库的大批量数据处理技术涉及到分区策略的选择、性能优化、报表生成以及整体系统调优等多个层面。理解并有效利用这些技术,可以显著提高数据仓库的效率和可维护性,从而更好地支持企业的决策分析...
oracle分区技术-大批量数据操作,优化处理,大数据量的处理
在Oracle数据库中,进行大批量数据删除是一项需要注意性能和安全性的任务。常见的方法包括使用DELETE语句、FOR ALL语句,以及通过存储过程实现分批删除。以下将详细阐述这些方法及其优缺点。 首先,最基本的删除...
### 从 SQL Server 迁移大批量数据到 Oracle 在 IT 领域,数据库迁移是一项常见的任务,尤其是在企业级应用中。随着业务的发展和技术的进步,企业可能需要将现有的 SQL Server 数据库迁移到 Oracle 数据库。本文将...
如题.货真价实 Oracle数据库高级技术交流 ---大批量数据处理技术
Java批量插入Oracle数据是一种高效的数据处理策略,尤其是在大数据量场景下。通过合理设计代码结构,利用`PreparedStatement`的批处理功能,可以显著提升数据插入的速度和系统的整体性能。在实践中,还需注意细节如...
在Oracle数据库环境中,根据特定条件大批量删除数据是一项常见的任务,尤其在数据清理或系统维护时。本小程序的目的是提供一种高效且可控的方式来执行这样的操作。以下是对这个"Oracle环境下根据条件大批量删除数据...
在Oracle数据库中,当需要处理大量数据的删除操作时,传统的单条DELETE语句可能会导致性能瓶颈,因为它们会锁定整个表或者大量的行,影响并发性能,并可能导致长时间的事务等待。为了解决这个问题,通常会采用分批...
《大批量数据自动移植方案的设计与开发——在不同版本、不同编码格式的Oracle数据库之间》这篇文章探讨了在Oracle数据库之间进行大规模数据移植的自动化方法,特别是在处理不同版本和编码格式的挑战时。文章作者杨栋...
Oracle的分区技术是一种高效的数据管理策略,特别是在处理大数据量时,能够显著提升数据库的性能、可管理和可用性。分区的基本思想是将一个大的数据对象(如表或索引)分割成若干个小的物理段,根据分区字段的值将...
- 针对需要处理的大批量数据操作,可以专门创建一个临时的大表空间。这样做的好处是可以避免因数据量过大而导致的资源争抢问题,确保更新过程顺利进行。 - 示例命令: ``` alter session set sort_area_size=...
8. **直接的路径装载API**:加速大批量数据导入过程。 9. **数据仓库的增强功能**:包括数据清洗、转换等功能。 10. **先进的查询技术与业务事件**:支持实时查询和事件处理。 11. **Oracle8i并行服务器改进**:增强...
并行INSERT尤其适用于大批量数据的加载,而并行UPDATE和DELETE则有助于大型数据表的快速修改。 #### 4. 并行DDL操作 除了查询和DML操作,Oracle还支持并行DDL(Data Definition Language)操作,如并行创建索引、...
总之,数据库大批量数据导入Excel是一项涉及数据准备、选择合适的导入工具和策略、性能调优以及错误处理的复杂任务。通过合理规划和实施,我们可以高效、准确地完成这一过程,为数据分析和业务决策提供强有力的支持...