1. NL Join (Nested Loop)NL 조인은 두 테이블이 조인할 때, 드라이빙 테이블(Outer 테이블)에서 읽은 결과를 Inner 테이블로 건건이 조인을 시도하는 방식이다. 즉, 아래와 같이 동작한다.for(i = 0; i - 사용 쿼리 예시SELECT /*+ ORDERED USE_NL(E) */ *FROM DEPT D, EMP EWHERE 1 = 1AND D.DEPTNO = E.DEPTNO; ORDERED: FROM 절에서 나열된 순서로 테이블을 읽도록 지시USE_NL(E): E와 조인할 때 NL 조인을 사용하도록 지시DEPT 테이블에서 데이터를 한 건 읽어서 EMP 테이블로 조인을 시도하고, 조인에 성공하는 만큼을 결과 집합에 담는다.다시 DEPT 테이블로 돌아가서 다음 한 건을 ..
Clustering Factor- 데이터가 모여 있는 정도를 수치로 보여주는 것- 데이터 분포도에 따라서 데이터 블록에 접근하는 횟수가 달라지기 때문에 성능 측면에서 중요한 요소이다.- 클러스터링 펙터 출력 쿼리SELECT T.TABLE_NAME, I.INDEX_NAME, T.BLOCKS, T.NUM_ROWS, I.CLUSTERING_FACTORFROM USER_TABLES T, USER_INDEXES IWHERE I.TABLE_NAME = T.TABLE_NAME AND T.TABLE_NAME IN ('ORD_ITEM', 'ORD_ITEM_RANDOM');- 클러스터링 팩터는 테이블 자체로는 좋다 나쁘다고 할 수 없다. 특정 인덱스를 이용할 때, 해당 인덱스으 클러스터링 팩터가 좋은지 나쁜지를 ..
이번에는 인덱스의 스캔 방식에 어떤 종류들이 있는 지 알아보자.Index Unique Scan루트 블록에서 시작하여 브랜치 블록을 거쳐 리프 블록까지 내려가서 최종 데이터가 저장된 테이블 목록을 읽어 단 한 건을 찾는 방식이다.이 스캔 방식은 오직 수직적 탐색으로만 데이터를 찾는다.Unique Scan을 사용하려면 Unique 인덱스를 = 조건으로 탐색해야 하며, 중복 값이 없어야 한다. 예시:SELECT * FROM ITEM WHERE ITEM_ID = 11; -- PK 컬럼의 ID로 탐색 (Unique Scan)SELECT * FROM UITEM WHERE ITEM_ID = 89; -- FK 컬럼이기 때문에 Range Scan Index Range Scan인덱스 스캔 중 가장 일반적으로 사용되는 방식..
Oracle 인덱스는 데이터베이스의 성능을 최적화하기 위해 자주 사용되는 데이터 구조이다. 인덱스의 구조와 탐색 원리를 이해하면, 데이터베이스에서 효율적으로 데이터를 찾고 관리하는 데 큰 도움이 된다. 아래에서는 인덱스의 기본 개념과 인덱스의 구조적 요소들에 대해 더 깊이 알아보자.1. 인덱스의 기본 개념인덱스(Index)는 테이블의 열(컬럼)에 대한 정렬된 데이터 구조이다. 테이블의 데이터는 특정 순서 없이 저장되지만, 인덱스는 데이터베이스가 더 빠르게 검색할 수 있도록 특정 열의 값을 기준으로 정렬하여 별도로 관리한다. 인덱스는 책의 색인처럼 작동하여, 데이터베이스가 특정 데이터를 빠르게 찾을 수 있도록 돕는다. B-Tree 인덱스는 Oracle에서 가장 일반적으로 사용되는 인덱스 구조이다. ..
DBMS_XPLAN.DISPLAY_CURSOR는 오라클에서 SQL 실행 계획을 조회하기 위해 사용되는 함수이다. 이 함수는 특히 실행된 SQL 문에 대한 실행 계획과 그에 대한 성능 통계를 제공하는 데 유용하다. 이를 통해 SQL 문이 어떻게 실행되었는지, 그리고 성능을 개선할 여지가 있는지 확인할 수 있다. 실행 계획 조회: DBMS_XPLAN.DISPLAY_CURSOR는 커서와 관련된 실행 계획을 보여준다. 이를 통해 쿼리가 실행된 방식과 각 단계에서 사용된 접근 방법을 확인할 수 있다.실행 통계 제공: 실행된 쿼리에 대한 통계 정보를 제공한다. 이 통계에는 실제로 읽은 블록 수, 사용된 CPU 시간, 실행된 행의 수 등이 포함된다. 이러한 정보는 쿼리 성능을 분석하고 병목 지점을 찾아내는 데 도..
요즘 회사에서 오라클 DB 성능 튜닝에 대한 공부를 좀 하고 있는데, Obsidian만 사용하다가 유기된 블로그도 좀 살릴 겸.. 여기에도 정리를 해보려고 한다. 간단하게 오라클 DB의 데이터 저장 구조와 SELECT 문을 실행했을 때 어떤 순서로 쿼리를 수행하는 지 먼저 알아보고 넘어가자.오라클 아키텍처의 데이터 저장 구조오라클 데이터베이스의 데이터 저장 구조는 물리적 구조와 논리적 구조로 나뉜다.물리적 구조:데이터 파일 (Data Files): 실제 데이터가 저장되는 파일이다. 테이블의 데이터, 인덱스, 블록 등이 이 파일에 저장된다.컨트롤 파일 (Control Files): 데이터베이스의 상태와 구조를 관리하는 파일이다. 데이터 파일과 리두 로그 파일의 위치 정보, 데이터베이스 이름, 백업 정보 등..
한 동안 너무 바쁘다고 블로그를 거의 유기하고 있었다는 생각이 들어서... 회사에서 클라우드 서버 견적을 내다가, CIDR표기가 갑자기 좀 헷갈려서... 정리를 좀 하려고 한다.CIDR(Classless Inter-Domain Routing, 무분류 도메인 간 라우팅)은 IP 주소를 할당하고 라우팅하는 방법 중 하나이다. 1993년에 도입된 이 방식은 기존의 IP 주소 클래스(A, B, C 클래스 등)보다 훨씬 더 유연한 IP 주소 할당을 가능하게 해주는 방식이다.CIDR 표기법CIDR 표기법은 IP 주소와 슬래시(/) 및 숫자로 구성된다. 이 숫자는 서브넷 마스크의 길이를 나타내며, 네트워크 부분과 호스트 부분을 구분하는 역할을 한다. 예를 들어:192.168.0.0/24라는 CIDR 블록은 IP 주소..
64비트 x86-64 아키텍처에서는 레지스터들이 여러 크기의 값을 처리할 수 있도록 설계되어 있으며, 이는 크게 64비트, 32비트, 16비트, 그리고 8비트 레지스터로 구분된다. 여기서 큰 레지스터는 작은 레지스터들을 포함하고 있어, 작은 레지스터들은 큰 레지스터의 하위 부분을 차지한다. 다음은 일반적인 64비트 레지스터와 그에 연결된 하위 레지스터들의 호환표입니다:64비트 레지스터 (General Purpose)rax : 64비트 전체 레지스터eax : 하위 32비트ax : 하위 16비트ah : 상위 8비트 (상위 바이트 of ax)al : 하위 8비트 (하위 바이트 of ax)rbxebxbxbhblrcxecxcxchclrdxedxdxdhdl추가 64비트 레지스터 (General Purpose)rsi..
날씨가 슬슬 따듯해지면서 여름이 걱정되긴 하지만, 일단은 옷이 가벼워져 기분은 참 좋다..ㅎㅎ 이번 주 복습이 조금 늦긴 했는데, 시작해보자. 직접 만났어! 직접 봤어! 누군가가 직접, 현장에서, 또는 직접적으로 어떤 장소에 가서 사람들과 만나는 상황을 묘사할 때는 in person 이라는 표현을 자주 사용한다. 콘서트에 가서 좋아하는 가수를 직접 봤어! 등에서도 사용할 수 있는 표현이다. - The meeting was supposed to be online, but I thought it was important, so I attended in person. - The interview will be conducted in person, so make sure to prepare thoroughly...
지난주에 회사 일 때문에 참석을 못해서... 바로 11주 차로 넘어왔다. - 어부바! 아기를 업다. 는 영어로 뭘까? 수업 때, 딱 질문을 받자마자 "어.... 진짜 뭐지..?" 하면서 황당하였는데, 업다는 영어로 Give someone a piggyback. 이다. 즉, 아기를 업다 => Give a baby a piggyback. piggy back은 업다. 라는 물리적 행위에 대하여도 사용되지만, 비유적인 표현으로도 사용이 되는데 예를 들어, 한 회사가 다른 동일한 업종의 회사의 성공을 기반으로 발전한다면, 그 회사가 다른 회사의 성공에 piggyback 하여 성공했다고 말하기도 한다. ex) 1. 업다. : After the long hike, the tired child asked her fat..
- javascript
- 인천 구월동 맛집
- react
- 맛집
- 인천 구월동 이탈리안 맛집
- AsyncStorage
- 정보보안기사 #실기 #정리
- await
- redux
- 파니노구스토
- redux-thunk
- 이탈리안 레스토랑
- Async
- react-native
- Promise
- Total
- Today
- Yesterday