Database/Mysql 16

[Real MySQL] 16-1. 복제

"Real MySQL" 책을 정리한 포스팅 입니다 1. 복제한 서버에서 다른 서버로 동기화되는 것 Source Server원본 데이터를 가진 서버변경이 최초로 이루어짐 (데이터 및 스키마) Replica Server복제된 데이터를 가진 서버소스 서버 동기화:소스 서버로부터 데이터를 전달받아 자신의 리포지토리에 반영 목적scale-out트래픽 대응 목적scale-up보다 훨씬 더 유연한 구조 backup데이터 정합성이 깨질 경우 (개발자 실수 or 공격 등)백업 서버의 데이터로 사용함메인 서버가 터질 경우지리적으로 분산된 백업 서버가 메인 서버의 역할을 대신함 데이터 분석용백업 서버에서 대신 담당하여 최적화데이터 분석은 리소스 소모가 큰 연산메인 서버로 데이터를 분석할 경우 클라이언트 요청 처리에 영향을 ..

Database/Mysql 2024.09.07

[Real MySQL] 8-0. 인덱스: Disk

"Real MySQL" 책을 정리한 포스팅 입니다 HDD (Hard Disk Drive)기계식 (플래터)데이터 보관플래터 위를 헤드가 이동하면서 데이터 읽고 씀 인터페이스SATA(소비자용)SAS(고성능) SSD (Solid State Drive)반도체기계식 플래터에 비해 훨씬 빠릅니다. (기계식으로 플래터를 회전시킬 필요 없음)소음 X 플래시 메모리 (NAND)비휘발성: 전원이 공급되지 않아도 데이터 보관 가능 O

Database/Mysql 2024.09.07

[Real MySQL] 5-2. 트랜잭션과 잠금

"Real MySQL" 책을 정리한 포스팅 입니다. 4. 격리 수준특정 트랜잭션이 얼마나 독립적으로 실행될 수 있는지 정의 (여러 트랜잭션이 동시에 처리될 때)다른 트랜잭션의 중간 결과에 얼마나 영향을 안받을 지다른 트랜잭션에서 변경한 데이터를 얼마나 볼 수 있게 허용할지뒤로갈수록 고립도는 높아지고, 동시성과 성능이 떨어집니다. READ UNCOMMITTEDDirty Read 허용동시성 & 성능 높음데이터 일관성  & 정합성 보장 X (일반적인 DBMS에서 사용 X) Dirty Read다른 트랜잭션에서 커밋되지 않은 트랜잭션 내용 읽기 O READ COMMITTED다른 트랜잭션에서 커밋된 트랜잭션 내용만 읽기 O균형 좋음 (동시성 & 성능 - 데이터 일관성 & 정합성)데이터 일관성 문제 (NON-REPE..

Database/Mysql 2024.08.10

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

"Real MySQL" 책을 정리한 포스팅 입니다. 3. 날짜와 시간 날짜, 시간만 저장하거나 날짜와 시간 같이 저장할 수 있습니다. 설명 크기 YEAR 날짜(년도만) 1 byte DATE 날짜 3 byte TIME 시간(밀리초단위까지) 3 byte + (밀리초단위 저장공간) TIMESTAMP 시간(밀리초단위까지) 4 byte + (밀리초단위 저장공간) DATETIME 날짜 + 시간(밀리초단위까지) 5 byte + (밀리초단위 저장공간) 밀리초단위 저장공간 최대 6자리까지 표현할 수 있습니다. 2자리당 1바이트씩 공간이 필요합니다. 타입의 괄호에 몇 바이트를 사용할지 정할 수 있습니다. 타임존 날짜 타입 타임존 정보가 포함되지 않습니다. 클라이언트로부터 입력된 값을 그대로 저장하고 조회합니다. 시간 타입..

Database/Mysql 2023.11.26

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

"Real MySQL" 책을 정리한 포스팅 입니다. 2. 숫자 정확도 참값 정확히 그 값을 그대로 유지하는 것 (소수점 이하 값의 유무와 관계 X) INTEGER, DECIMAL 근삿값 (부동소수점) 정확하게 일치하지 않고 최대한 비슷하게 관리되는 값 (처음 컬럼에 저장한 값과 조회된 값이) FLOAT, DOUBLE 포맷 이진 표기법 (INTEGER) 프로그래밍 언어에서 사용하는 정수나 실수 타입 십진 표기법 (DECIMAL) 디스크의 십진 표기법을 의미합니다. 숫자 값의 각 자릿값을 표현하기 위해 4비트나 한 바이트를 사용해서 표기하는 방법 정수 저장공간 최솟값 최댓값 TINYINT 1 -128 127 SMALLINT 2 -32768 32767 MEDIUMINT 3 -8388608 8388607 INT..

Database/Mysql 2023.11.26

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

"Real MySQL" 책을 정리한 포스팅 입니다. 1. CHAR, VARCHAR 저장공간 CHAR (고정 길이) 선언한 길이만큼 크기가 정해집니다. 입력한 데이터 이외의 남은 크기의 공간은 빈 공간으로 채워집니다. 검색 속도가 빠릅니다. VARCHAR (가변 길이) 데이터가 정해진 크기보다 작은 값일 경우, 그만큼 저장공간에 할당됩니다. 최대 길이: 2byte 별도의 공간 필요 (길이 접두사) 255 이하: 1바이트 256 이상: 2바이트 저장공간 최대 64KB를 저장할 수 있습니다. (길이 접두사 포함) 전체 row에 크기 제한이 있으므로 varchar 필드도 제한에 적용됩니다. 다른 컬럼에서 40KB 이상 사용하고 있다면 나머지 컬럼에선 24KB만 사용할 수 있습니다. 24KB를 초과할 경우 TEX..

Database/Mysql 2023.11.26

[Real MySQL] 8-2. 인덱스: 구현 (B-Tree)

"Real MySQL" 책을 정리한 포스팅 입니다 1. 특성가장 기본적인 인덱스 타입원래 값을 변형시키지 않는 인덱스B-Tree 형태 리프 노드primary key index: key - recordsecondary key index: key - rowID (PK) 2. 키 추가 및 삭제레코드를 저장하거나 변경하는 경우 필요 추가저장될 키 값을 이용해 추가될 위치 검색 (B-Tree 인덱스 상에서)적절한 위치를 찾아내면, 리프 노드에 저장 삭제해당 키 값이 저장된 리프 노드를 찾아 삭제 표시지연 삭제 (버퍼링) 변경먼저 키 값을 삭제새로운 키 값 추가 검색루트 노드 -> 브랜치 노드 -> 최종 리프 노드 (비교 작업)빠름: 100% 일치 또는 앞부분만 일치느림: 키 값의 뒷부분으로 검색불가: 키 값 변형..

Database/Mysql 2023.11.25

[Real MySQL] 8-1. 인덱스

"Real MySQL" 책을 정리한 포스팅 입니다. 1. 인덱스데이터를 빠르게 찾아주는 자료구조특정 컬럼값을 정렬하여 보관합니다. (저장될 때마다 값이 항상 정렬됨)key-value 형식 KeyPrimary Key행을 대표하는 컬럼들로 이루어진 인덱스 (유일성)Not Null노드 구성: 키 값-레코드 주소 값 Secondary KeyPrimary Key와는 다른 컬럼 조합으로 생성된 인덱스 (유일성 필수 X)더 빠르게 검색하기 위한 기능 (보조적인 역할)Nullable노드 구성: 키 값-PK값 알고리즘B-Tree 알고리즘원래의 컬럼 값을 이용해 인덱싱하는 알고리즘 입니다. Hash Index 알고리즘컬럼 값을 가공해서 인덱싱하는 알고리즘 입니다. (해시 계산)매우 빠름부분 검색 or 범위 검색 X주로 인..

Database/Mysql 2023.11.25

[Real MySQL] 5-1. 트랜잭션과 잠금

"Real MySQL" 책을 정리한 포스팅 입니다. 1. 트랜잭션일련의 연산 (하나의 작업 단위 구성)(논리적)DML 묶음 AtomicAll or Nothing (작업 셋 적용: 100% or 0%)데이터 정합성 보장 (Partial Update 방지) Consistency트랜잭션 전후로 데이터베이스 상태가 항상 일관된 상태로 유지됨일관성: 데이터베이스의 규칙이 유지됨 (무결성 제약 조건 유지, 외래 키 관계 등) Isolation트랜잭션 실행 중에, 다른 트랜잭션으로부터 독립적으로 실행됨 (트랜잭션 격리 수준 제공)데이터 일관성 유지 Durability성공적으로 트랜잭션이 커밋되면, 모든 변경사항은 영구적으로 데이터베이스에 반영됨 MySQLEngineInnoDB(MyISAM, MEMORY 지원 X) 주..

Database/Mysql 2023.11.24