Oracle11g插入数据时间久提升你的工作效率(oracle11g插入慢)
Oracle11g插入数据时间久:提升你的工作效率
Oracle11g是目前企业级数据库领域中应用最广的一种,但随着数据库中数据量的增加,插入数据的速度也会变得越来越慢,导致企业的工作效率下降。在这种情况下,提升Oracle11g插入数据的速度就成为了企业所需要解决的重要问题。
以下是提升Oracle11g插入数据速度的几条解决办法:
1. 批量插入数据
在Oracle11g中,单条插入数据的效率非常低,而批量插入数据的效率则会明显提高。因此,建议在插入大量数据时,采用批量插入的方式,可以有效地提升数据插入的速度。
以下是用PL/SQL实现批量插入数据的代码:
DECLARE
TYPE emp_tbl_type IS TABLE OF emp%ROWTYPE;
emp_rec emp_tbl_type;
BEGIN
emp_rec := emp_tbl_type();
FOR i IN 1..10000 LOOP
emp_rec.EXTEND;
emp_rec(i).empno := i;
emp_rec(i).ename := ‘ENAME’|| i;
emp_rec(i).job := ‘JOB’|| i;
emp_rec(i).mgr := 0;
emp_rec(i).hiredate := sysdate;
emp_rec(i).sal := i*100;
emp_rec(i).comm :=0;
emp_rec(i).deptno := i MOD 10;
END LOOP;
FORALL i IN 1..emp_rec.count
INSERT INTO emp
(empno, ename, job, mgr, hiredate, sal, comm, deptno)
VALUES
(emp_rec(i).empno, emp_rec(i).ename, emp_rec(i).job, emp_rec(i).mgr, emp_rec(i).hiredate, emp_rec(i).sal, emp_rec(i).comm, emp_rec(i).deptno);
END;
2. 创建索引
在插入大量数据时,若先插入数据再进行索引创建,就要重复建立索引,浪费时间和资源。因此,建议在插入数据前创建索引,效率会更高。
以下是创建索引的代码:
CREATE INDEX emp_empno_idx ON emp(empno);
3. 修改提交频率
默认情况下,Oracle11g每5000条数据便会提交一次。但是,在须要大量数据的情况下,调高提交频率会更合适。
以下是修改提交频率的代码:
alter session set commit_write=’batch,num=N’;
其中的‘N’为要提交的数据量,可以根据需要自行设定。
4. 调整Oracle11g的配置参数
Oracle11g的默认配置参数对于大规模数据插入并不合适,但是可以把它们调整,提高数据库的吞吐率和插入速度。
以下是调整Oracle11g的配置参数的代码:
alter system set optimizer_index_cost_adj=5 scope=both;
alter system set db_block_size=16384 scope=both;
5. 关闭记录重做日志
重做日志记录了数据库中的所有操作数据。当插入大量数据时,关闭记录重做日志可以提高插入速度。
以下是关闭记录重做日志的代码:
alter system switch logfile;
alter database noarchivelog;
alter database flashback off;
以上是提升Oracle11g插入数据速度的几种方法,企业可根据具体情况选择合适的方法。但在选择时,也要考虑到插入速度和数据校验的准确性之间的平衡问题。