DDL auto commit 비활성화
·
Oracle/Administration
Oracle 23c에 DDL 문이 수행하는 auto commit을 비활성화하는 기능이 추가되었습니다. 이 기능은 _kql_disable_auto_commit 파라미터와 관련이 있습니다. 이 파라미터를 TRUE로 설정하면 DDL 문 수행 전후에 자동으로 수행되는 커밋이 비활성화됩니다.-- 1NAME VALUE DEFAULT_VALUE DESCRIPTION------------------------ ----- ------------- --------------------------------------_kql_disable_auto_commit FALSE FALSE Disable DDL auto commit in the session 테스트를 위해 아래와 같..
Hash-based Set Operation
·
Oracle/Performance
개요Oracle 21c에 Hash-based Set Operation 기능이 추가되었습니다. 이 기능은 UNION, INTERSECT, MINUS 연산을 해시 방식으로 수행함으로써 성능을 개선합니다. 테스트를 위해 아래와 같이 테이블을 생성하겠습니다.-- 1DROP TABLE t1 PURGE;DROP TABLE t2 PURGE;CREATE TABLE t1 (c1, c2) AS SELECT ROWNUM, LPAD ('X', 100, 'X') FROM XMLTABLE ('1 to 10000');CREATE TABLE t2 (c1, c2) AS SELECT ROWNUM + 5000, LPAD ('X', 100, 'X') FROM XMLTABLE ('1 to 10000'); UNION 연산자아래는 19.3 버전..
Hash Rollup
·
Oracle/Performance
Oracle 21c에 Hash Rollup 기능이 추가되었습니다. 이 기능은 ROLLUP에 대해 해시 방식의 집계를 사용으로써 성능을 개선합니다. 테스트를 위해 아래와 같이 테이블을 생성하겠습니다.-- 1DROP TABLE t1 PURGE;CREATE TABLE t1 (c1, c2) AS SELECT CEIL (ROWNUM / 10000), LPAD ('X', 100, 'X') FROM XMLTABLE ('1 to 10000000'); 아래는 19.3 버전에서 ROLLUP을 사용한 쿼리의 실행 계획입니다. 수행에 2.51초가 소요되고, 실행 계획 2번에 SORT GROUP BY ROLLUP 오퍼레이션이 표시됩니다.-- 2: 19.3SELECT c1, COUNT (*) FROM t1 GROUP BY ROL..
최대 칼럼 수 증가
·
Oracle/Administration
Oracle 23c부터 테이블과 뷰의 최대 칼럼 수가 1000개에서 4096개로 늘어났습니다.The maximum number of columns allowed in a database table or view has been increased to 4096. This feature allows you to build applications that can store attributes in a single table with more than the previous 1000-column limit. Some applications, such as Machine Learning and streaming IoT application workloads, may require the use of de-norm..
SQL Analysis Report
·
Oracle/Performance
Oracle 사의 Product Manager인 Nigel Bayliss가 포스팅한 New SQL Analysis Report in Oracle Database 23c Free! 글에서 Oracle 23c에 SQL Analysis Report 기능이 추가된 것을 알 수 있습니다. 테스트를 위해 아래와 같이 테이블을 생성하겠습니다.-- 1DROP TABLE t1 PURGE;CREATE TABLE t1 (c1, c2) AS SELECT ROWNUM, LPAD ('X', 100, 'X') FROM XMLTABLE ('1 to 10000');CREATE INDEX t1_x1 ON t1 (c1); 아래 쿼리는 조인 조건이 없어 cartesian product이 발생합니다. 실행 계획 하단에 조인 조건을 추가하나 ..
에러 메시지 개선
·
Oracle/SQL
DOAG 2022에서 Gerald Venzl가 발표한 New and cool features for developers in Oracle database 프리젠테이션에 Oracle 23c부터 에러 메시지가 개선된다는 내용이 포함되어 있습니다. 참고로 이 내용은 New Features Guide에 포함되어 있지 않습니다. 테스트를 위해 아래와 같이 테이블을 생성하겠습니다.-- 1DROP TABLE t1 PURGE;CREATE TABLE t1 (c1 NUMBER, c2 NUMBER); 아래 쿼리로 ORA-00979 에러 메시지가 개선된 것을 볼 수 있습니다.-- 2-1: 23.2SELECT c1, c2 FROM t1GROUP BY c1;ORA-00979: "C2": GROUP BY 표현식과 일치하지..
Automatic Transaction Rollback
·
Oracle/Administration
Oracle 23c에 Automatic Transaction Rollback 기능이 추가되었습니다. 이 기능은 블로킹이 발생한 후 일정 시간이 경과하면 우선순위 낮은 트랜잭션을 중단시켜 동시성을 향상시킵니다.If a transaction does not commit or rollback for a long time while holding row locks, it can potentially block other high-priority transactions. This feature allows applications to assign priorities to transactions and for administrators to set timeouts for each priority. The datab..
V$MYSTAT 뷰
·
Oracle/Performance
아래는 Database Reference의 V$MYSTAT 뷰에 대한 내용입니다. 참고로 병렬 쿼리는 현재 세션이 QC 역할을 담당하고, 별도의 세션의 PX 서버가 작업을 수행합니다. 병렬 쿼리의 성능 분석에 V$MYSTAT 뷰를 활용하려면 PX 서버의 통계 값이 V$MYSTAT 뷰의 통계 값에 포함되어야 합니다. 결론부터 말하면 V$MYSTAT 뷰와 V$SESSTAT 뷰의 통계 값은 PX 서버의 통계 값을 포함합니다. 참고로 V$SESSION_EVENT 뷰의 대기 이벤트 정보는 PX 서버의 대기 이벤트 정보를 포함하지 않습니다. V$MYSTAT contains statistics on the current session. 테스트를 위해 아래와 같이 테이블을 생성하겠습니다. -- 1 DROP TABLE ..
WITH 절에 대한 FPD 쿼리 변환 (WCFPD)
·
Oracle/Performance
Oracle 21c에 WITH 절에 대한 FPD(Filter PushDown) 쿼리 변환 기능이 추가되었습니다. 이 기능은 SELECT 문에 사용한 조건을 WITH 절에 Pushdown함으로써 성능을 개선합니다. 테스트를 위해 아래와 같이 테이블을 생성하겠습니다.-- 1DROP TABLE t1 PURGE;CREATE TABLE t1 (c1, c2) AS SELECT ROWNUM, LPAD ('X', 100, 'X') FROM XMLTABLE ('1 to 1000000'); 아래는 19.3 버전에서 WITH 문을 사용한 쿼리의 실행 계획입니다. t1 테이블 전체를 임시 영역에 저장한 것을 확인할 수 있습니다.-- 3: 19.3WITH w1 AS (SELECT /*+ MATERIALIZE */ * FROM ..
스키마 권한
·
Oracle/Administration
Oracle 23c에 스키마 권한이 추가되어 스키마 단위로 권한을 관리할 수 있게 되었습니다.Oracle Database supports schema privileges in addition to the existing object, system, and administrative privileges. This feature improves security by simplifying authorization for database objects to better implement the least privileges principle. 테스트를 위해 아래와 같이 u1, u2 유저를 생성하겠습니다.-- 1DROP USER u1 CASCADE;DROP USER u2 CASCADE;CREATE USER u1 ..
Lock-Free Reservation #2
·
Oracle/Performance
개요지난 글에 이어 2,000개의 세션에서 1,000개의 티켓을 예약하는 시나리오를 가정하고 Lock-Free Reservation, Pessimistic Locking, FOR UPDATE SKIP LOCKED 방식의 성능을 측정해보겠습니다. 참고로 Oracle 23c Free는 2 코어만 지원하므로 향후 추가 테스트가 필요할 것으로 보입니다. Lock-Free ReservationLock-Free Reservation 방식을 테스트를 위해 아래와 같이 테이블을 생성하겠습니다.-- 1ALTER TABLE t1 MODIFY (c2 NOT RESERVABLE);DROP TABLE t1 PURGE;DROP TABLE t2 PURGE;CREATE TABLE t1 ( c1 NUMBER , c2 NUMBE..
Lock-Free Reservation #1
·
Oracle/SQL
Oracle 23c에 Lock-Free Reservation 기능이 추가되었습니다. 해당 기능은 로우 락 대신 Reservation Journal 테이블(이후 저널 테이블)을 통해 잔고, 재고, 예약 가능 좌석 수 등을 갱신하는 트랜잭션의 동시성을 향상시킵니다.Lock-Free Reservations enables concurrent transactions to proceed without being blocked on updates of heavily updated rows. Lock-Free reservations are held on the rows instead of locking them. Lock-Free Reservations verifies if the updates can succeed ..