레이블이 벌크입력인 게시물을 표시합니다. 모든 게시물 표시
레이블이 벌크입력인 게시물을 표시합니다. 모든 게시물 표시

2021년 12월 31일 금요일

오라클동영상,FORALL 기반 벌크 입력(BULK INSERT) 실습, DMLL성능향상, 오라클교육, 오라클학원, SQL교육, SQL학원, 자바학원, 자바교육, SQL동영상

 오라클동영상,FORALL 기반 벌크 입력(BULK INSERT) 실습, DMLL성능향상, 오라클교육, 오라클학원, SQL교육, SQL학원, 자바학원, 자바교육, SQL동영상


http://ojc.asia/bbs/board.php?bo_table=LecSQLnPlSql&wr_id=722 


FORALL 기반 벌크 입력(BULK INSERT) 실습, DMLL성능향상, 오라클교육, 오라클학원, SQL교육, SQL학원, 자

FORALL 기반 벌크 입력(BULK INSERT) 실습, DMLL성능향상, 오라클교육, 오라클학원, SQL교육, SQL학원, 자바학원, 자바교육, SQL동영상오라클 PL/SQL성능향상을 위한FORALL기반 BULK INSERT실습[실습]사번(empno),

ojc.asia

https://www.youtube.com/watch?v=RE79vqW_s6o&list=PLxU-iZCqT52CfP98Y4gCDKIm52tKvgy36&index=31 


https://www.youtube.com/watch?v=mAQNkUZ_9CA&list=PLxU-iZCqT52CfP98Y4gCDKIm52tKvgy36&index=30 


https://www.youtube.com/watch?v=Ub3XCyENie0&list=PLxU-iZCqT52CfP98Y4gCDKIm52tKvgy36&index=25 

오라클 PL/SQL




성능향상을 위한

FORALL기반 BULK INSERT


실습




[실습]

사번(empno), 이름(ename), 직무(job) 3개의 컬럼을 갖는 BULKTEST라는 테이블을 생성하여 100만건 정도 데이터를 입력하는데. 개별 건씩 입력 하는것과 FORALL을 이용하여 벌크로 INSERT하는 방식의 성능차이에 대해 확인해 보겠습니다.

FORALL을 이용하여 DML문을 작성하면 한 번에 한 행씩 실행될 모든 DML 문을 생성하고 SQL 실행엔진에 한번에 모두 보냅니다.

FORALL 구문을 이용하면 INSERT, UPDATE, DELETE와 같은 DML 사용시 컬렉션을 사용하며 매우 빠르게 작업을 할 수 있습니다.

FORALL구문은 데이터를 오라클의 TABLE TYPE(배열)에 담아서 한번에 SQL 실행엔진에 넘겨서 실행을 하므로 성능 향상에 도움이 됩니다.


1. 실습 테이블 생성

create table bulktest (
empno number primary key,
ename varchar2(20),
job   varchar2(50));


set timing on
alter system flush SHARED_POOL;

2. 일반적인 반복문을 통한 개별 INSERT
-- 24초 경과
declare
          cnt number := 0;
begin
     while (cnt < 1000000) loop
            cnt := cnt + 1;
            insert /*+ loop insert */ into bulktest values ( cnt, cnt || '길동', '개발직');               
      end loop;
      commit;
end;



3. Shared Pool에서 파싱된 SQL문 및 실행횟수 확인

-- 오라클이 INSERT 구문을 내부적으로 바인드 변수 처리를 하여 SQL문장은 하나, 실행횟수는 1,000,000임을 알수 있습니다.
select substr(sql_text,1,60) "sql", count(*),
       sum(executions) "총실행횟수"
from v$sqlarea
where sql_text like '%loop%'
group by substr(sql_text,1,60)
having count(*) > 0
order by 2;

select count(1) from bulktest;
truncate table bulktest;

4. FORALL을 이용한 BULK INSERT

alter system flush SHARED_POOL;

-- 2초
declare
  type bulktype is table of bulktest%rowtype index by binary_integer;
  mydata bulktype;
begin
  for i in 1 .. 1000000 loop
    mydata(i).empno := i;
    mydata(i).ename := i || '길동';
    mydata(i).job := '개발직';
  end loop;

  forall i in 1 .. 1000000 insert /*+ bulk insert */  into bulktest values mydata(i);
  commit;
end;


5. Shared Pool에서 파싱된 SQL문 및 실행횟수 확인

-- 오라클이 INSERT 구문을 내부적으로 바인드 변수 처리를 하여 SQL문장은 하나, 실행횟수도 하나임을 확인할 수 있습니다.
select substr(sql_text,1,60) "sql", count(*),
       sum(executions) "총실행횟수"
from v$sqlarea
where sql_text like '%bulk%'
group by substr(sql_text,1,60)
having count(*) > 0
order by 2;


select count(1) from bulktest;
truncate table bulktest;



#FORALL, #벌크입력, #BULKINSERT, #SQL튜닝, #오라클교육, #오라클학원,#SQL교육, #SQL학원, #자바학원, #자바교육, #SQL동영상, FORALL, 벌크입력, BULKINSERT, SQL튜닝, 오라클교육, 오라클학원,SQL교육, SQL학원, 자바학원, 자바교육, SQL동영상


(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...