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): 데이터베이스의 상태와 구조를 관리하는 파일이다. 데이터 파일과 리두 로그 파일의 위치 정보, 데이터베이스 이름, 백업 정보 등..
만들고 있는 어플 기능 중에 실시간으로 데이터의 변경 사항을 뿌려줘야 하는 기능이 필요한데, push & pull 방식보다는 DB의 실시간 변경 사항을 추적하여 ws으로 뿌려주는 게 낫겠다 싶어서, 어떻게 해야 하나... 하고 고민을 좀 하고 있었다. node의 mongoose에서 마침 해당 기능을 제공하고 있길래, "이거야! 당장 사용해보자!!!!"하고 바~로 예제 코드를 주어왔다. ◎ express.js의 main code #!/usr/bin/env node /** * Module dependencies. */ const app = require('../app'); const debug = require('debug')('happiness-stock-rest-api:server'); const htt..
find에서 사용하는 쿼리 연산자와 insert, update, delete 시 사용할 수 있는 업데이트 연산자를 한번 정리해보려고 한다. 쿼리 연산자 $eq: 지정된 값과 동일한 값을 찾는 연산자이다. $gt: 지정된 값보다 큰 값을 찾는 연산자이다. $gte: 는 지정된 값보다 크거나 같은 값을 찾는 연산자이다. $lt: 지정된 값보다 작은 값을 찾는 연산자이다. $lte: 지정된 값보다 작거나 같은 값을 찾는 연산자이다. $ne: 지정된 값과 다른 값을 찾는 연산자이다. $in: 지정된 배열 안에 있는 값을 찾는 연산자이다. $nin: 지정된 배열에 없는 값을 찾는 연산자이다. $exists: 지정된 필드가 문서에 존재하는지 여부를 체크하는 연산자이다. $type: 지정된 타입과 일치하는 필드의 데..
MongoDB는 문서 지향적 NoSQL 데이터베이스이다. 데이터를 JSON과 유사한 형식인 BSON(Document)으로 저장하고 관리한다. 다양한 데이터 구조를 효율적으로 저장하고 쿼리 할 수 있으며, SQL 데이터베이스에 비해 더 유연한 데이터 모델을 제공한다. MongoDB의 특징: 스키마가 없다: MongoDB는 고정된 스키마를 갖지 않는다. 같은 컬렉션 내의 문서들은 서로 다른 구조를 가질 수 있다. 문서 지향적이다: 데이터는 문서 형식의 BSON 파일로 저장된다. 이는 JSON과 유사하며, 데이터의 읽기와 쓰기가 용이하다. 확장성이 뛰어나다: 데이터가 증가함에 따라, MongoDB는 샤딩을 통해 데이터베이스를 수평으로 확장할 수 있다. 인덱싱을 지원한다: MongoDB는 다양한 형태의 인덱싱을..
MongoDB와 아침부터 조금씩 친해져보려고 하는데, 이 친구 외부 접속이 default로 막혀있는 거 같다.(그걸 30분 동안 삽질하고 나서 알아챈...) 그래서 좀 뒤져보니까 config 파일에서 외부 접속을 따로 설정해줘야 한다는 내용이 있길래 정리해보려고 한다. 우선 db와 해당 db에 접속 권한을 가진 계정을 생성해야 한다. db는 기존에 있는 db를 사용한다고 치면, use database_name; db.createUser({ user: "user", pwd: "password", roles: [{role: "dbOwner", db: "database_name"}] // 모든 권한, 최소 권한 원칙에 위배되나, 테스트용도이니 신경쓰지 않겠다. }); 이후에 MongoDB가 설치되어 있는 디렉..
- 인천 구월동 이탈리안 맛집
- 이탈리안 레스토랑
- 맛집
- Async
- javascript
- 정보보안기사 #실기 #정리
- react
- 인천 구월동 맛집
- AsyncStorage
- redux-thunk
- react-native
- redux
- await
- Promise
- 파니노구스토
- Total
- Today
- Yesterday