본문 바로가기

dml3

[병렬] Parallel DML 시 실제로 모든 프로세스가 일하는지? Parallel DML을 사용하여 DML을 수행하다가, 신경쓰지 않은 부분이 있었는데 그것은 바로 실제로 프로세스들이 다 일을 할까? 였습니다. 세션에서만 보면 당연히 프로세스들이 parallel 힌트를 준 만큼 생성되어 있었기 때문에 잘 수행되고 있다고 생각했지만, 속도적인 부분에서 차이가 있는것을 알게되었고, 테스트를 통해 어떤 차이 때문에 그렇게 되는지 확인해보고자 했습니다. 테스트는 이전에 통계정보 EXPORT,IMPORT 했을 때 사용했던 테이블과 INSERT문을 사용했습니다. INSERT 시 여러 옵션들을 사용해서 프로세스들의 일하는 것을 확인해보았습니다. https://bae9086.tistory.com/455 테스트 결과를 간단히 앞에 이야기하면 /*+ enable_parallel_dml .. 2023. 1. 19.
DML 이력 확인 딕셔너리뷰 (DBA_TAB_MODIFICATION) 각 테이블들의 DML 이력을 간단히 확인해볼 수 있는 뷰입니다. 구체적인 이력은 아니지만 TIMESTAMP컬럼을 확인하여 마지막에 DML이 수행되었는지 여부를 확인하거나 할 때 유용할 것 같습니다. 주의해야 할 점은, 이건 통계정보가 최종적으로 갱신된 후에 그동안 얼마나 변화가 있었는지를 Optimizer가 가늠하기 위해 존재하는 뷰입니다. Optimizer를 위한 뷰인 것이지, 사용자가 감사 목적으로 사용하라고 있는게 아닙니다. 그래서 DML 후에 Rollback 을 하는 경우에도 카운트됩니다. 그리고, 해당 테이블에 통계정보를 다시 만드는 순간 데이터는 모든 초기화됩니다. 사용자가 DML 을 수행할 때마다 매번 여기에 기록되지도 않습니다. 성능상의 이유로 3시간에 한번씩만 기록되도록 설계되어 있습니다.. 2022. 1. 15.
Delete와 Truncate 운영업무를 하다보면 Delete와 Truncate에 대해서 설명해야 할때가 있었습니다. 따라서 둘의 차이를 정리하는 글을 포스팅해보겠습니다. Delete DML언어 중 하나로 데이터를 삭제할 수 있는 명령어입니다. 특징은 Delete 후에 Rollback시 원복할 수 있다는 것입니다. 따라서 Delete를 하게되면 원본 데이터를 UNDO에 저장하게 되는 작업이 필수적으로 들어갑니다. 또한 삭제하여도 테이블 용량은 줄어들지 않고 그대로인 상태가 됩니다. 또한 전체 데이터 삭제도 가능하고, 조건절 등을 추가하여 일부데이터만 삭제도 가능합니다. TRUNCATE DDL언어이며, 테이블을 최초 생성된 상태로 만듭니다. 테이블 내의 모든 데이터를 삭제하게 되며, 테이블의 용량도 생성 시 초기 용량상태로 돌아갑니다... 2020. 9. 24.