Database 81

[Real MySQL] 8-6. 인덱스: 함수 기반 인덱스

백은빈, 이성욱 님의 "Real MySQL" 책을 정리한 포스팅 입니다. 1. 함수 기반 인덱스칼럼의 값을 변형해서 만들어진 값에 대해 구축된 인덱스계산 과정의 차이만 있을 뿐 내부 구조 및 유지관리 방법은 B-Tree 인덱스와 동일 가상 칼럼을 이용한 구현현재 존재하는 컬럼을 사용하여 가상 컬럼 및 인덱스 생성 가능단, 테이블의 구조가 변경됨ALTER TABLE user ADD full_name VARCHAR(30) AS (CONCAT(first_name, ' ', last_name)) VIRTUAL, ADD INDEX ix_fullname (full_name); 함수를 이용한 구현함수를 직접사용하는 인덱스테이블의 구조를 변경하지 않음CREATE TABLE user ( first_name VA..

Database/Mysql 2024.09.07

[Real MySQL] 8-8. 인덱스: 클러스터링 인덱스

백은빈, 이성욱 님의 "Real MySQL" 책을 정리한 포스팅 입니다. 1. 클러스터링 인덱스프라이머리 키 값을 기준으로 정렬하여 저장하는 방식InnoDB 에서는 테이블 자체가 클러스터링 인덱스 구조로 관리됨 (InnoDB 전용 기능) B+Tree 자료구조레코드 저장 방식클러스터링 인덱스는 인덱스 알고리즘이 아니라 테이블의 저장 방식임테이블 자체가 프라이머리 키를 기준으로 정렬된 하나의 거대한 인덱스 구조로 관리됨프라이머리 키 값 기준 가까운 레코드들이 물리적으로 인접하여 저장됨 프라이머리 키를 기준으로 레코드가 묶여서 저장됨범위 검색이나 프라이머리 키 기반 조회가 매우 빠름 쓰기 성능 고려프라이머리 키 순서대로 입력하면 성능이 좋음키 값이 변경되면 물리적으로 리프 노드의 위치가 변할 수 있음 장점프라..

Database/Mysql 2024.09.07

[Real MySQL] 8-9. 인덱스: 유니크 인덱스

백은빈, 이성욱 님의 "Real MySQL" 책을 정리한 포스팅 입니다. 1. Unique Index유니크 제약테이블에 특정 컬럼의 값이 중복되지 않도록 보장하는 제약유니크 제약이 설정된 컬럼은 같은 값이 두 번 이상 저장되지 않도록 함인덱스와 밀접한 연관이 있음MySQL에서는 인덱스 없이 유니크 제약을 설정할 수 없음내부적으로 인덱스를 자동으로 생성하여 중복 값 체크를 수행함 Nullable해당 컬럼에 NULL 값이 허용된다는 의미NULL은 특정 값이 없다는 표시이며, 다른 값들과 다르게 취급됨 즉 NULL은 값 없음을 의미할 뿐, 다른 값들과는 비교할 수 없음NULL이 여러 번 있을 수 있음NULL은 특정 값이 아니기 때문에 같은 컬러멩서 두 개 이상의 NULL값이 허용될 수 있음 유니크 인덱스와 일..

Database/Mysql 2024.09.07

[Redis] 2. Understanding Data Types

cachingqueuingevent processing 1. Stringbyte sequence 저장문자열 매핑에 주로 사용됩니다. (key, value 모두 문자열) Data StructureTextSerialized objectBinary array(image, video, audio) Usagecachecountersbitwise operation 더보기SET bike:1 Deimos # key(namespace:id) - valueGET bike:1 # Deimos 2. JSONSyntax: JSONPath UsageAPI Response (cached) 더보기JSON.SET user:1001 $ '{"name": "John Doe", "email": "john.doe@example.com", ..

Database/Redis 2024.09.05

[NoSQL] NoSQL

1. NoSQL이란?Not Only SQL (SQL 지원)RDBMS보다 덜 제한적인 일관성 모델을 사용하는 데이터 매커니즘 유연한 데이터 모델스키마가 고정되어 있지 않음 대규모 분산 데이터클라우드 컴퓨팅 등장에 맞춰 생긴 기술데이터 공유 및 시스템 운용의 효율성 좋음 2. 장점성능latency: 빠르게 데이터 읽고 쓸 수 있음throughput: 다수의 요청을 효율적으로 처리할 수 있음 (수평적 확장) 단순성설계: 논리적, 물리적 설계 스킵clustering: 분산환경에서 사용하기 용이하도록 지원partitioning (horizontal): 분산환경에서 사용하기 용이하도록 지원 3. 종류key-value데이터: key-value 쌍빠른 데이터 접근 가능Redis, DynamoDB, Riak wide c..

Database 2024.09.05

[Real MySQL] 5-2. 트랜잭션과 잠금: 격리 수준

백은빈, 이성욱 님의 "Real MySQL" 책을 정리한 포스팅 입니다. 4. 격리 수준여러 트랜잭션이 동시에 처리될 때, 특정 트랜잭션이 얼마나 독립적으로 실행될 수 있는지 정의다른 트랜잭션의 중간 결과에 얼마나 영향을 안받을 지다른 트랜잭션에서 변경한 데이터를 얼마나 볼 수 있게 허용할지뒤로갈수록 고립도는 높아지고, 동시성과 성능은 떨어집니다. 종류격리 수준설명허용되는 현상성능일관성READ UNCOMMITTED커밋되지 않은 데이터도 읽기 가능Dirty Read매우 높음매우 낮음READ COMMITTED커밋된 데이터만 읽기 가능. 동일 쿼리 결과가 다를 수 있음Non-Repeatable ReadPhantom Read높음중간REPEATABLE READ(InnoDB 기본값)트랜잭션 내에서는 항상 동일한 데..

Database/Mysql 2024.08.10

[Real MySQL] 15-4. 데이터 타입: JSON

백은빈, 이성욱 님의 "Real MySQL" 책을 정리한 포스팅 입니다. 1. JSON이진 형태일반적인 문자열 저장 방식보다 빠른 검색 및 업데이트 가능 BSON (Binary JSON)NoSQL에서 사용하는 JSON의 바이너리 표현내부적으로 JSON 데이터를 BSON 형식으로 변환하여 읽고 씀 BLOB데이터가 작을 경우, 하나의 페이지에 저장됨데이터가 클 경우, 여러 페이지로 나뉘어 저장됨 (최대 4GB까지) 구조JSON 정보JSON 타입, 애트리뷰트 수, 총 데이터 길이 Key - Value주소(offset), 길이, 값, (타입) 2. 명령어생성CREATE TABLE employees ( id INT AUTO_INCREMENT PRIMARY KEY, info JSON NOT NULL); ..

Database/Mysql 2023.11.26

[Real MySQL] 15-3. 데이터 타입: 날짜와 시간

백은빈, 이성욱 님의 "Real MySQL" 책을 정리한 포스팅 입니다. 1. 날짜와 시간타입설명저장 크기 (byte)YEAR연도만 저장 (YYYY)1 byteDATE날짜 (YYYY-MM-DD)3 byteTIME시간 (HH:MM:SS)3 ~ 5 byteTIMESTAMP날짜 + 시간 (UTC 기준)4 ~ 7 byteDATETIME날짜 + 시간 (로컬 시간 기준)5 ~ 8 byte 2. 밀리초 저장괄호괄호안의 숫자는 밀리초 자리 수를 의미함최대 6자리까지 표현할 수 있습니다.2자리당 1바이트씩 공간이 필요합니다. 예더보기DATETIME(6) 3. 타임존날짜 타입타임존 정보가 포함되지 않음클라이언트로부터 입력된 값을 그대로 저장하고 조회합니다. 시간 타입항목TIMESTAMPDATETIME타임존 처리✅❌저장 기..

Database/Mysql 2023.11.26

[Real MySQL] 15-2. 데이터 타입: 숫자

백은빈, 이성욱 님의 "Real MySQL" 책을 정리한 포스팅 입니다. 1. 정확도구분설명대표 타입참값입력한 값을 정확히 그대로 저장하고 조회INTEGER, DECIMAL근삿값 (부동소수점)저장된 값이 입력값과 유사하지만 정확하지 않을 수 있음FLOAT, DOUBLE 2. 포맷포맷 종류설명대표 타입이진 표기법숫자를 2진수(binary)로 변환하여 저장메모리 효율 높음INTEGER, FLOAT, DOUBLE십진 표기법숫자의 각 자릿값을 4비트(BCD) 또는 1바이트 단위로 저장정밀도 높음DECIMAL 3. 정수타입크기 (byte)최솟값최댓값TINYINT1–128127SMALLINT2–32,76832,767MEDIUMINT3–8,388,6088,388,607INT4–2,147,483,6482,147,483..

Database/Mysql 2023.11.26

[Real MySQL] 15-1. 데이터 타입: 문자열

백은빈, 이성욱 님의 "Real MySQL" 책을 정리한 포스팅 입니다. 1. 저장 공간타입항목CHARVARCHAR저장 방식고정 길이가변 길이 (입력한 데이터 길이 + 길이 접두사 저장)남는 공간 처리부족한 공간은 공백으로 채움남는 공간 없음검색 속도빠름느림 (길이 접두사로 인한 오버헤드)길이 접두사없음있음 (255B 이하: 1바이트, 256B 이상: 2바이트)저장 공간 제한최대 255자row 최대 크기내에서 가능 (길이 접두사 포함)전체 Row 크기 제한상대적으로 영향 적음다른 컬럼 사용량에 따라 제한됨 (여유 공간 내에서 사용 가능) 2. 대용량64KB 이상의 데이터를 저장할 때 사용가변 길이 타입별도의 공간에 저장됨 타입항목TEXTBLOB데이터 용도문자열 데이터이진 데이터 (이미지, 파일 등)문자 ..

Database/Mysql 2023.11.26