DB 8

[MySQL] Boolean vs Enum

MySQL에서 Boolean과 Enum 사용에 대한 고찰Boolean 타입MySQL에는 BOOLEAN이라는 타입 자체가 존재하지 않는다.MySQL 공식 문서 - Data Types MySQL :: MySQL 8.4 Reference Manual :: 13 Data TypesMySQL supports SQL data types in several categories: numeric types, date and time types, string (character and byte) types, spatial types, and the JSON data type. This chapter provides an overview and more detailed description of the properties ..

DB/MySQL 2025.11.24

[MySQL] DETERMINISTIC vs NOT DETEMINISTIC

🔹 의미DETERMINISTIC = “같은 입력값에 대해서 항상 같은 결과를 반환한다”CREATE FUNCTION double_value(x INT)RETURNS INTDETERMINISTICBEGIN RETURN x * 2;END;NOT DETERMINISTIC = “같은 입력값이라도 상황(시간, 환경 등)에 따라 결과가 달라질 수 있다”CREATE FUNCTION random_value()RETURNS DOUBLENOT DETERMINISTICBEGIN RETURN RAND();END;두 함수가 동일한 동작을 해도 함수 호출 시에 호출 횟수 등에 차이가 발생할 수 있다.→ 이전에 계산된 값을 재사용할 수 있다면 굳이 함수를 다시 호출할 필요가 없기 때문이다.인덱스 사용 시 DETERMIN..

DB/MySQL 2025.10.11

[MySQL] VARCHAR vs TEXT

해당 내용은 인프런 Real MySQL 시즌1 - PART 1 강의를 참고하여 작성한 것입니다.공통점문자열 속성 값을 저장최대 65,535 Bytes까지 저장 가능차이점VARCHAR 타입 컬럼에는 지정된 글자 수만큼만 데이터 저장 가능VARCHAR(10) → 10글자 이하만 저장 가능TEXT 타입 컬럼은 인덱스 생성 시 반드시 Prefix 길이 지정 필요CREATE INDEX ix_text_column on table(text_column(100));위와 같이 사용하면 앞의 100글자까지만 인덱스로 사용하겠다는 뜻지정하지 않으면 에러 발생TEXT 타입 컬럼은 표현식으로만 디폴트 값 지정 가능CREATE TABLE tb1 (col TEXT DEFAULT ‘abc’) → 에러 발생CREATE TABLE tb..

DB/MySQL 2025.10.11

[MySQL] CHAR vs VARCHAR 타입 선정

해당 내용은 인프런 Real MySQL 시즌1 - PART 1 강의를 참고하여 작성한 것입니다. 공통점문자열 저장용 컬럼최대 저장 가능 문자 길이 명시바이트 수 X → CHAR(10)이면 문자 종류 관계없이 10글자차이점값의 실제 크기에 관계없이 고정된 공간 할당 여부최대 저장 길이 : CHAR(255) vs VARCHAR(16383) → (65535바이트)저장된 값의 길이 관리 여부 (VARCHAR와 가변 길이 문자셋 사용하는 CHAR는 저장된 값 길이 관리)0~255 bytes → length-bytes : 1256~65535 bytes → legnth-bytes : 2저장 방식Latin1CHAR(10)4바이트를 넣으면 6바이트를 공백으로 관리한다.VARCHAR(10)4바이트를 넣으면 길이 저장용 1..

DB/MySQL 2025.10.11

[MySQL] Spatial Query Index 최적화(공간 쿼리 최적화)

🤔 문제의식개발을 하다 보니 좌표를 사용하는 경우가 꽤 있었다.필자의 경우 대다수의 상황을 프론트가 지도를 연동하는 과정 속에 대부분 String으로 좌표값만 저장 후 전달해 주었던 것 같다.새로운 프로젝트에서 사용자 위치 기반으로 가게를 거리별로 페이징 해주어야하는 부분이 있었고, 직접 처리해보고자 하였다.String으로 처리하고자 하니 인덱싱이 되지 않는 문제가 있었다. 사용자의 위치를 기반으로 일정한 거리를 계산하고자 하니 풀 테이블 스캔이 필연적으로 발생하는 문제였다.→ 프로젝트 규모상 위도 경도를 일정 범위로 제한한 뒤에 다시 원형으로 거리를 측정하는 방식을 도입하는 것만으로도 충분했지만 더 좋은 정보가 없나 찾아보았고 Spatial Query라는 것을 알게 되었다.💡Spatial Query..

DB/MySQL 2025.08.31

[MySQL] DATE 자료형 정리

MySQL의 날짜 시간 타입 Mysql에는 시간에 대한 다양한 자료형이 있다. 대표적으로 TIMESTAMP , DATE , DATETIME 같은 것들이 있다. JAVA를 주로 사용하는 나를 기준으로 하자면 LocadDate -> DATE, LocalDateTime -> DATETIME 로 바뀌게 된다. 그렇다면 각자 무엇을 어떻게 나타내주는 것인지 알아보자.DATE 와 DATETIME주로 사용되는 자료형이다. 둘 다 타입명 자체에서 알 수 있듯이 날짜와 날짜+시간을 저장하기 위한 타입이다. DATE : 'YYYY-MM-DD' 포맷으로 표현되고, DATETIME : 'YYYY-MM-DD hh:mm:ss' 의 포맷으로 표현된다.이 때 구분자는 다른 구두점으로도 변경 가능하나 주의를 하며 변경해야한다.DAT..

DB/MySQL 2024.11.20

[MySQL] 날짜, 시간 표기 방식 DATE_FORMAT()

MySQL DATE_FORMAT 활용MySQL은 DATE, DATETIME, TIMESTAMP 같은 다양한 시간 자료형을 지원합니다. 하지만 SQL문으로 출력할 때 원하는 형식이 아닐 수 있습니다. 예를 들어, DATETIME 자료형에서 시간을 제외하고 출력하려면 어떻게 해야 할까요?이 글을 참고하면 문제를 해결하기 위해 DATE_FORMAT을 사용하는 것을 볼 수 있습니다. 이제 DATE_FORMAT을 사용하는 다양한 방법을 알아봅시다.지시자설명%a요일 이름 축약형 (일..토)%b월 이름 축약형 (1월..12월)%c월 숫자형 (0..12)%D날짜에 영어 접미사 추가 (0th, 1st, 2nd 등)%d날짜 숫자형 (00..31)%e날짜 숫자형 (0..31)%f마이크로초 (000000..999999)%H시..

DB/MySQL 2024.11.19

[Redis] Redis란?

Key - Value 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터 베이스 관리 시스템이다.데이터베이스, 캐시, 메시지 브로커로 사용되는 인메모리 데이터 구조를 가진 저장소다.Redis의 특징?Key - Value 구조이기 때문에 쿼리를 사용하지 않는다.데이터를 디스크에 쓰는 구조가 아니라 메모리에서 처리되기 때문에 속도가 빠르다쓰기 성능 증대를 위한 클라이언트 측 샤딩 지원String, Lists, Sets, Sorted Sets, Hashes 자료 구조를 지원한다Single Thread다. 즉, 한번에 하나의 명령만 처리할 수 있다. 다만 중간에 처리 시간이 긴 명령이 들어오게 된다면 뒤 명령어들이 지연될 수 있다.AOF, RDB 방식을 통해 백업 기능 제공AOF(A..

DB/Redis 2024.09.03