본문 바로가기
반응형

IT/Database97

[Oracle] SQL*Developer 실행계획 확인하기 오라클에서 무료 제공해주는 DB툴인 SQL*Developer 에서 execute plan 실행계획 확인하는 방법에 대해서 다룰것이다. 다운로드는 오라클 공식 홈페이지에서 받을수 있다. https://www.oracle.com/database/sqldeveloper/technologies/download/ Oracle SQL Developer Downloads This archive. will work on a 32 or 64 bit Windows OS. The bit level of the JDK you install will determine if it runs as a 32 or 64 bit application. This download does not include the required Orac.. 2023. 12. 3.
[Oracle] 세미 조인(Semi Join), 안티 조인(Anti Join) 세미조인(Semi Join) 세미조인은 두 테이블 간의 일치하는 행을 찾는 조인이다. 일반적으로 우리가 알고 사용하는 조인들과 함께 사용이 된다. 주로 서브쿼리나 Exists 연산자를 사용하여 구현을 하고 일치하는 행이있다면 왼쪽 테이블에 해당하는 행만 반환한다. 참고 포스팅에 Exists 와 In에 대한 내용을 참고하면 세미조인이 이해 갈것이다. (일반 outer join이나 inner join 이 아니라 서브쿼리로 조인하는법) 안티조인(Anti Join) 안티조인은 두 테이블 간에 일치하지 않는 행을 반환하는 조인이다. 즉, 왼쪽 테이블의 행 중에서 오른쪽 테이블과 일치하지 않는 것들을 선택한다. 세미 조인은 equals 조건이지만 안티는 Not equals, Not Exists 등의 연산으로 조인하.. 2023. 11. 29.
[MySQL] ANY, ALL 함수 ANY 함수 컬럼명 비교연산자 ANY(값들 혹은 서브쿼리) 여러개의 비교값 중 하나라도 만족하면 true 반환 IN과 다른점은 비교 연산자를 사용한다는 점 비교 연산자와 ANY > ANY : 최소값보다 크면 >= ANY : 최소값보다 크거나 같으면 ANY(1, 2, 3); ALL 함수 컬럼명 비교연산자 ALL(값들 혹은 서브쿼리) 전체 값을 비교해서 모두 만족해야 true 반환 비교 연산자와 ALL > ALL : 최대값보다 크면 >= ALL : 최대값보다 크거나 같으면 ALL(1, 2, 3); 2023. 11. 27.
[Oracle / Tibero] Lock 걸린 테이블 확인 불특정한 다양한 이유로 Database는 Lock이 걸릴수 있고, 만약 그 Lock 이 DeadLock일 경우에는 멈춰버리는 상황이 생겨 최악으로는 프로세스를 내렸다가 다시 실행해야하는 상황이 생길수도 있다. 다시 실행하면 그만이 아닌 어떤 쿼리에서 어떤 이유로 , 왜 락이 걸렸는지 등등 확인해봐야한다. 아래 쿼리를 참고 하면 된다. 락 걸린 테이블 확인 select * from v$locked_object vo , dba_objects do where vo.object_id = do.object_id; 장기실행 또는 락걸린 SQL 확인 select distinct vo.session_id ,vss.serial# ,do.object_name ,vss.machine ,vss.terminal ,vss.pro.. 2023. 11. 26.
[Oracle] 인덱스 힌트/ 옵티마이저 힌트 사용방법 (주석, 튜닝) 기본적으로 쿼리를 실행하면 DBMS 내의 옵티마이저가 여러개의 실행 계획을 만들고 그 안에서 제일 비용이 적게 소요되는 실행계획을 선택하여 실행이 된다. 하지만 옵티마이저를 믿지 못하거나 특정 방법으로 실행계획을 하고 싶을 시에는 옵티마이저 힌트를 사용하면 된다. 기본적으로 사용법은 아래와 같다. 위에 주석 부분에 사용을 하고 자주 사용되는 값들은 아래와 같다. 1. OPTIMIZER_MODE 지정가능 값 /*+ ALL_ROWS */ 목적 : Best Throughput 용 도 : 전체 RESOURCE 소비를 최소화시키기 위한 힌트. Cost-Based 접근방식으로 ALL_ROWS는 Full Table Scan을 선호하며 CBO(Cost Based Optimization)는 default로 ALL_ROW.. 2023. 11. 25.
INDEX SCAN종류 Database 에서 query사용시 인덱스에 대해서 알아볼 것이다. INDEX RANGE SCAN B*Tree인덱스의 가장 일반적이고 정상적인 형태이고 필요한 범위만 스캔 INDEX FULL SCAN 수직탐색 없이 리프블록 처음부터 끝까지 수평적으로 탐색하는 방식 최적의 인덱스가 없을 경우 사용한다. INDEX UNIQUE SCAN 수직적 탐색만으로 데이터를 찾는 방식 등치(=)조건으로 탐색하는 경우에 작동한다. INDEX SKIP SCAN 인덱스 선두컬럼을 조건절에 사용하지 않으면 옵티마이저는 기본적으로 TABLE FULL SCAN을 선택한다. 하지만 TABLE FULL SCAN보다 I/O를줄이거나 정렬된 결과를 쉽게 얻을수 있다면 INDEX FULL SCAN사용 한다. INDEX FAST FULL .. 2023. 11. 24.
INNER JOIN, NATURAL JOIN 조인기법은 다양하게 있으나 비슷하게 동작을 하는(조건 부 상이) Inner Join과 Natural Join 에 대해서 다뤄볼 것이다. 사용법 및 설명 Inner Join select * from TableA Inner Join TableB On TableA.id = TableB.id; 위와 같이 사용이 되며 조인 조건을 On 이하절에 기술해줘야한다. Natural Join select * from TableA Natural Join TableB 이렇게 사용하고 조인 조건이 없는데, 조인조건은 동일한 이름의 컬럼들을 자동 인식하여 조인처리 한다. 이름과 형식이 같으면 조인 조건이 이뤄지므로, 다른 용도로 사용되는 컬럼은 주의가 필요하다. 출력 순서 또한 아스타 * 를 사용할 경우에 Natural 기준이.. 2023. 11. 23.
순수 관계 연산자 관계 데이터베이스에 적용할 수 있도록 특별히 개발한 관계 연산자 종류는 총 4가지 이며 각각 아래 설명과 같다. 연산자 특징 Select - 릴레이션에 존재하는 튜플 중에서 선택 조건을 만족하는 튜플의 부분집합을 구하여 새로운 릴레이션을 만듬 - 릴레이션의 행(가로)에 해당하는 튜플을 구하는 것이므로 수평 연산이라고도 함 - 연산자의 기호는 그리스 문자 시그마(σ)를 사용 Project - 주어진 릴레이션에서 속성 List에 제시된 Attribute만을 추출하는 연산 - 릴레이션의 열(세로)에 해당하는 Attribute를 추출하는 것이므로 수직 연산자라고도 함 - 연산자의 기호는 그리스 문자 파이(π)를 사용 Join - 공통 속성을 중심으로 2개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산.. 2023. 11. 22.
단일행 서브쿼리(Single Row SubQuery) / 다중행 서브쿼리(Multi Row SubQuery) / 다중 칼럼 서브쿼리(Multi Column SubQuery) / 연관 서브쿼리(Correlated Subquery) 서브쿼리는 쿼리 내에 쿼리가 또 존재한다고 생각하면 편하다. 이름이 각각 있는데 하나씩 살펴보도록 하면 단일행 서브쿼리(Single Row SubQuery) 리턴값이 하나 이하인 쿼리를 의미하며 단일행 비교연산자 ( =, , 2023. 11. 21.
반응형