[CS 개념 정리 - DB] 인덱스
·
면접 준비/DB
RDBMS에서 성능을 향상시킬 수 있는 대표적인 방법중에 하나이다.검색 속도 향상을 목적으로 만드는 하나 이상의 테이블 필드에 대한 자료구조이다.MySQL에서는 인덱스를 크게 클러스터형 인덱스와 세컨더리 인덱스(논클러스터형 인덱스)로 나뉜다.클러스터형 인덱스테이블당 하나씩 만들 수 있는 인덱스로, 우리가 사용하는 기본 키를 통해 클러스터형 인덱스가 생성된다.만약 기본 키가 지정된 필드가 없는 경우에는 NOT NULL 제약조건과 UNIQUE 제약 조건이 있는 필드를 클러스터형 인덱스로 간주한다.세컨더리 인덱스(논클러스터형 인덱스)세컨더리 인덱스는 테이블당 여러개가 존재할 수 있으나 클러스터형 인덱스보다 일반적으로 느리다.문법# 테이블 이름의 필드에 세컨더리 인덱스인 인덱스 이름 설정CREATE INDEX ..
[CS 개념 정리 - DB] 서브쿼리와 조인 간략정리
·
면접 준비/DB
SubQuery다른 SQL문이 포함된 SQL문을 뜻하는 서브쿼리는 소괄호로 감싸 외부 쿼리와 내부쿼리를 구분할 수 있다.SELECT문은 소괄호로 감싸진 서브 쿼리의 형태로, 다른 SELECT, INSERT, UPDATE, DELETE 문 안에 포함될 수 있다.대표적으로 2가지 유형으로 사용한다.SELECT문 안에 SELECT문이 포함된 서브 쿼리SELECT USERS.USERNAME, (SELECT COUNT(*) FROM POSTS WHERE POSTS.USER_ID = USERS.USER_ID) AS POSTS_COUNT FROM USERS;DELETE문 안에 SELECT문이 포함된 서브 쿼리DELETE FROM POSTSWHERE USER_ID=( SELECT USER_ID..
[CS 개념 정리 - DB] SQL 언어
·
면접 준비/DB
DDLData Definition Language라고하며 네 가지 대표적인 명령어가 있다.CREATE데이터베이스, 테이블, 뷰, 인덱스, 사용자등 데이터베이스에서 관리될 수 있는 다양한 대상을 정의할 수 있다.MYSQL에서는 다음과 같이 특정필드에 제약 조건을 함께 명시도 할 수 있다.create database TIL_DATABASE;use TIL_DATABASE;create table practice1( user_id int primary key auto_increment, name varchar(50) unique default 'human' not null , age int not null , registration_dtae timestamp default current_ti..
[CS 개념 정리 - DB] RDBMS 기본 개념
·
면접 준비/DB
테이블 구성RDBMS 내의 레코드들은 테이블의 형태를 이룬다.각 필드로 사용가능한 데이터 유형들이 정해져 있으며 이를 필드타입 이라고 한다.테이블 내의 특정 레코드를 식별할 수 있는 필드의 집합은 키라고 한다.키는 레코드의 식별뿐만 아니라 테이블 간 참조할때에도 사용된다.키테이블에서 특정 레코드를 식별할 수 있는 하나 이상의 필드를 키라고 한다.키는 다양한 종류가 있으며 이를 모두 암기하지 않아도 되지만 후보 키, 기본 키, 외래 키정도는 알고 있어야 한다. 후보키후보키는 테이블의 한 레코드를 식별하기 위한 필드의 최소한의 집합이다.특정 레코드를 유일하기 식별한다는 점으로 유일성을 갖추고 있다고 한다.하나 이상의 필드로 구성될 수 있으며, 후보 키에 포함된 필드 중 하나라도 생략하면 레코드를 고유하게 식..
[Logging] 로그 출력을 효율적으로 생성 및 추적하기 3편
·
Spring/Logging
2024.12.25 - [Spring] - [Logging] 로그 출력을 효율적으로 생성 및 추적하기 1편2024.12.25 - [Spring] - [Logging] 로그 출력을 효율적으로 생성 및 추적하기 2편 Logging Trace V3V2에서는 TraceId의 동기화 문제는 해결했지만 모든 파라미터에 대한 수정의 필요성이 생겨 유지 보수에 어려움이 발생한다는 문제와 beginSync메서드를 반드시 수행해야 한다는 문제가 있다.이러한 문제를 해결하기 위한 V3를 구현해보려 한다. 첫 번째 방법은 LogTrace라는 추상체로 중복되는 작업에 대한 메서드를 공통 모듈로 만들고 구현체를 사용하는 방법이다.목차TraceId 변경점LogTraceFieldLogTrace결과문제점TraceId 변경점create..
[Logging] 로그 출력을 효율적으로 생성 및 추적하기 2편
·
Spring/Logging
Logging Trace V2목차TraceV2TraceId에서 추가된 메서드TestControllerService결과문제점TraceV2V2에서는 beginSync() 메서드를 호출하여 TraceId 값을 일관적으로 사용할 수 있도록 동기화하고 depth를 설정해준다.@Slf4j@Componentpublic class TraceV2 { private static final String START_PREFIX = "-->"; private static final String END_PREFIX = "TraceId에서 추가된 메서드public TraceId createNextId() { return new TraceId(traceId, level + 1);} Test이전과 다른 점..