최신글
-
[Database] Cursor란 무엇인가?
오늘은 DBMS의 cursor에 대해 알아보려고 한다.이번 프로젝트에서 Oracle을 사용하면서 "Cursor is Closing"이라는 오류 메시지를 본 적이 있다.100건 이상의 데이터를 조회할 때 이런 케이스가 발생했는데이 Cursor가 뭐고 왜 Cursor를 사용하는지에 대해 알아보고자 한다. Cursor란 무엇인가?Cursor는 Query의 결과로 반환된 여러 행의 집합을 순차적으로 처리하기 위해 사용하는 포인터이다.좀 더 쉽게 풀어서 이야기하면위와 같이 고객명을 조회하는 쿼리를 실행했을 때현재 내가 읽고 있는 고객이 어떤 고객인지 가리키고 있는 포인터가 Cursor인 것이다.Cursor의 동작원리Cursor는 프로그램의 for, while과 같은 Loop문과 비슷한 과정을 거치는데 Decla..
2026.08.23
-
[DataBase] Delete vs Truncate
오늘은 Truncate와 Partition에 대해 공부해 보려고 한다.이번 프로젝트에서 Truncate와 Partition을 사용할 일이 생겨서Truncate가 왜 Delete보다 빠른지, Partition은 어떤 구조로 이루어졌는지에 대한 궁금증이 생겨서이에 대해 조사해 보았다. Delete와 TruncateDelete와 Truncate는 둘다 데이터를 삭제한다는 기능을 가지고 있지만동작방식은 살짝 다른데, 이에 대해 이해하기 위해서는 RDBMS의 저장 구조를 알면 좋을거 같다. RDBMS의 논리적 저장구조RDBMS는 Table Space, Segment, Extent, Block으로 구성되어 있다.Block (Page)Block은 디스크와 메모리 간 I/O 처리를 위한 최소 단위 이다.Block은 여..
2026.08.09
-
[Database] 인덱스(Index)란 무엇인가? : B+Index의 구조
이전에 쿼리튜닝을 공부하면서 인덱스에 대해 살짝 알아봤었다. 쿼리 튜닝에 대하여(기초)이번 프로젝트에서 쿼리를 다룰일이 많다. DB를 많이 사용하다보니 select할 때 시간이 많이 걸리기 때문에 쿼리튜닝이 필수였다.쿼리튜닝은 DBA가 해주지만 DBA가 바빠서 그런지 응답 시간이 오래ytlive.tistory.com오늘은 인덱스란게 어떻게 데이터 조회 속도를 향상시키는지그 구조와 종류에 대해 알아보려고 한다. Index 너는 누구인가?인덱스(Index)란 정확히 무엇인가?인덱스는 테이블에서 데이터를 빠르게 읽을 수 있도록 도와주는 자료구조 이다.흔히 책의 목차 정도로 이해하면 될 것이다.테이블의 특정 컬럼에 대해 별도의 자료구조를 만들어 데이터베이스에서 테이블의 모든 테이블을 검색하지 않고, 원하는 데이..
2026.07.24
-
DB PK(유일값) 일련번호 채번방식에 대하여
이번 프로젝트에서는 데이터 보관을 위해DELETE 사용을 금지하고 삭제여부 컬럼을 추가하여 삭제 데이터를 관리하고 있다.그래서 중복 방지를 위해 SEQ즉 일련번호 컬럼을 추가할 필요가 있었다.때문에 오늘은 일련번호를 채번하는다양한 방법에 대해 알아보고 비교해보려고 한다. 일련번호 채번방법 4가지일련번호 채번방법으로는 크게 4가지가 있다.1️⃣ Max + 12️⃣ DB Sequence (시퀀스 객체)3️⃣ 채번 테이블 방식4️⃣ 프레임워크 UUID (Universally Unique Identifier)하나씩 예시를 들어서 확인해보겠다. 1️⃣ Max + 1가장 간단한 채번방법은 Max + 1이다.현재 테이블에 저장된 ID 값 중 가장 큰 값을 조회하여거기에 + 1을 더해 새 번호를 부여한다.Max + 1..
2026.07.05
-
[Spring Batch] Batch에서의 Tasklet과 Chunk
오늘은 배치에 대해 알아보겠다.배치란 무엇일까.배치란?배치는 대용량 데이터를 사용자 개입 없이 컴퓨터가 일괄적으로 처리하는 프레임워크이다.주로 대용량 데이터 처리, 자동화 등에서 사용된다. 배치의 실행 방식배치는 배치 실행 시점과 동작방식에 따라 아래와 같이 크게 3가지 종류로 나뉜다.- 정기배치- 이벤트 배치- On-Demand 배치정기 배치 (Scheduled Batch)정기 배치는 정해진 주기에 따라 자동으로 실행되는 배치이다.우리가 알고 있는 배치는 대부분 정기 배치일 것이다.주로 스케줄러 툴과 연동하여 사용한다.예를 들어 매일 새벽 2시에 통계를 생성한다든지, 매달 25일에 월급 명세서를 발급한다는 등의 작업을 할 수 있다. 이벤트 배치 (Event-Driven Batch)이벤트 배치는 특정 이..
2026.06.13
-
Oracle Join이란 무엇인가? : Outer Join에서 (+)가 없다면?
내가 지금 진행하는 프로젝트에서ASIS 에서 사용하던 oracle 쿼리를 postgreSQL 쿼리로 변경하는 작업을 하고 있는데사용하는 쿼리 중의 많은 양이 오라클 조인을 사용하고 있다.그래서 Oracle Join에 대해 알아보려고 한다. 오라클 조인이란?다른 DBMS에서 Join을 위해서는 INNER JOIN, LEFT OUTER JOIN, CROSS JOIN 등과 같은 ANSI JOIN을 사용할 것이다.하지만 Oracle에서는 Oracle Join이라는 조인을 위한 한가지 방법이 더 있다.ANSI JOIN은 JOIN과 ON구문으로 명시하여 조인컬럼을 구분하지만 오라클 조인은 WHERE 절에 조인 컬럼과 조회 조건이 공존한다.예시를 들어보자.학생 ID와 이름이 있는 학생 테이블과과제ID, 학생 ID, ..
2026.05.31
-
Stateful과 Stateless는 무엇인가?
웹 개발을 하다보면 Stateless 같은 말을 한번씩 들어봤을 것이다.오늘은 Stateless가 뭐고 Stateful과의 차이는 무엇인지 알아보려고 한다. State(상태)Stateless는 말 그대로 State(상태)가 없는 것이고 Stateful은 State(상태)가 있는 것이다.그럼 State가 무엇인가?서버의 State는Server가 Client와 주고 받은 정보를 저장한 것이다.예를 들면 "로그인 정보, 장바구니 상품 리스트" 등이 있을 것이다.Stateful (상태유지)Stateful은 아까 말한 상태를 서버가 보존하는 것이다.서버가 클라이언트와 통신하면서 이전에 통신한 값을 저장하는 것이다.홈페이지에서 로그인을 한번 하면 페이지를 이동해도 로그인 정보가 남는 것이 대표적인 Stateful의..
2026.05.05
-
SQL 튜닝을 위한 6가지 기본 방법
안녕하세요지난 포스트에서는 쿼리튜닝이 무엇이고쿼리 실행 계획(Query Plan)을 어떻게 보는지에 대해 알아봤습니다. 쿼리 튜닝에 대하여(기초)이번 프로젝트에서 쿼리를 다룰일이 많다. DB를 많이 사용하다보니 select할 때 시간이 많이 걸리기 때문에 쿼리튜닝이 필수였다.쿼리튜닝은 DBA가 해주지만 DBA가 바빠서 그런지 응답 시간이 오래ytlive.tistory.com 이번 포스트에서는 지난 포스트에 이어서 SQL 튜닝을 위한 6가지 방법에 대해 알아보도록 하겠습니다. 쿼리 튜닝의 기본원칙 6가지 쿼리 튜닝을 하는 방법은 다양하지만많이 알려져 있는 6가지 방법을 소개시켜드리려고 합니다.간단하게 먼저 말씀드리자면1. 좌변 가공 지양2. 복잡한 WHERE절 OR 대신 UNION 사용3. 필요한 Row..
2026.04.11
-
쿼리 튜닝에 대하여(기초)
이번 프로젝트에서 쿼리를 다룰일이 많다. DB를 많이 사용하다보니 select할 때 시간이 많이 걸리기 때문에 쿼리튜닝이 필수였다.쿼리튜닝은 DBA가 해주지만 DBA가 바빠서 그런지 응답 시간이 오래걸리고 있어서내가 공부해서 튜닝해보자! 라는 생각으로 쿼리 튜닝에 대해 공부하게되었다. 쿼리 튜닝은 무엇인가?쿼리 튜닝은 DB에서 데이터를 꺼낼때 사용할 수 있는 '지름길'을 찾는 과정이다.즉, 쿼리를 최적화 하는 과정을 쿼리 튜닝이라고 한다.같은 결과를 가진 쿼리라도 더 빠르게 조회할 수 있는 길이 있다. 쿼리 실행 계획쿼리 튜닝을 위해서는 쿼리 실행 계획을 확인해봐야한다.쿼리 실행 계획은 DB엔진이 어떻게 해당 SQL문을 실행할지를 확인하는 기능이다.SELECT * FROM event;위 쿼리에 대한 실행..
2026.03.29
-
Kafka를 활용한 비동기 시스템
이번 프로젝트에서 Apache Kafka를 활용하여 MSA(MicroService Architecture)에서 비동기처리를 한다고 한다.근데 Kafka.. AWS 자격증 시험에서 본거 같은데 왜 얘로 비동기 처리를 하지 궁금해서Kafka가 뭐하는 친구인지 어떻게 왜 비동기처리를 얘로 할 수 있는지 공부해보려고한다. Kafka란 무엇인가Apache Kafka는 실시간으로 스트림 데이터를 수집하고 처리하는데 최적화된 분산 이벤트 스트리밍 플랫폼(Distributed Data Streaming Platform)이다. Kafka란? - Apache Kafka 설명 - AWSApache Kafka란? 기업에서 Apache Kafka를 사용하는 이유, AWS에서 Apache Kafka를 사용하는 방법.aws.ama..
2026.03.14