분류 전체보기 557

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

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

Database/Mysql 2023.11.26

[Real MySQL] 8-3. 인덱스: 알고리즘 - B-Tree Index

백은빈, 이성욱 님의 "Real MySQL" 책을 정리한 포스팅 입니다. 1. B-Tree Index가장 기본적인 인덱스 타입원래 값을 변형시키지 않는 인덱스 구성 요소항목설명트리 구조- 하나의 인덱스 = 하나의 B+ Tree- 루트 → 중간 노드 → 리프 노드- 깊이는 데이터 양과 키 크기에 따라 증가페이지 (Page)- InnoDB의 읽기/쓰기 최소 단위- 기본 크기: 16KB (innodb_page_size)- 하나의 노드 = 하나의 페이지노드 (Node)- B+ Tree를 구성하는 단위- (인덱스 키 값 : 자식 노드 주소) 형태로 저장됨- 리프 노드는 실제 데이터 주소를 가짐- 리프 노드- Primary Key Index: key → record 주소- Secondary Key Index: ke..

Database/Mysql 2023.11.25

[Real MySQL] 8-2. 인덱스

백은빈, 이성욱 님의 "Real MySQL" 책을 정리한 포스팅 입니다. 1. 인덱스데이터를 빠르게 찾을 수 있도록 도와주는 자료구조항목설명형식key-value 형식정렬 방식특정 컬럼 값을 기준으로 정렬하여 저장 (항상 정렬 유지) 알고리즘알고리즘설명B-Tree- 기본 인덱싱 방식- 범위 검색 효율적Hash Index- 컬럼 값을 해시 계산하여 인덱싱- 매우 빠름 (주로 인메모리 기반의 데이터베이스에서 사용)- 정확히 일치하는 검색만 가능 (범위/부분 검색 불가) 2. 구분Key종류설명Primary Key- 행을 대표하는 컬럼- 유일성 보장- Not Null- "키 값 - 레코드 주소"로 구성Secondary Key- 보조 검색용 인덱스- 유일성 보장 ❌- Nullable- "키 값 - PK 값"으로 구..

Database/Mysql 2023.11.25

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

백은빈, 이성욱 님의 "Real MySQL" 책을 정리한 포스팅 입니다. 1. 트랜잭션하나의 논리적인 작업 단위로 실행되는 일련의 연산DML 문을 하나의 트랜잭션으로 묶어 실행할 수 있음 특징항목설명Atomicity (원자성)All or Nothing- 트랜잭션 내 모든 작업이 전부 수행되거나 전혀 수행되지 않음.- 오류 발생 시 전체 롤백. → Partial Update 방지, 데이터 정합성 보장Consistency (일관성)트랜잭션 전후로 데이터베이스의 무결성 제약조건이 항상 유지됨. 예: 외래 키, 고유 제약조건 등이 깨지지 않음Isolation (격리성)트랜잭션이 다른 트랜잭션의 영향을 받지 않고 독립적으로 수행됨. → 동시성 문제가 없도록 보장Durability (지속성)커밋된 트랜잭션의 결과는..

Database/Mysql 2023.11.24

[Real MySQL] 4-4. 아키텍쳐: MySQL 로그 파일

백은빈, 이성욱 님의 "Real MySQL" 책을 정리한 포스팅 입니다. 1. 에러 로그 파일실행되는 도중에 에러나 경고로 인해 출력되는 메시지 파일을 의미합니다.datadir에 .err 확장자로 생성됨 서버 시작 관련변수명을 인식하지 못한 경우특정 변수가 무시된 경우 트랜잭션 복구 메시지 (비정상적으로 종료된 경우)재처리 작업 과정서버가 비정상적으로 종료된 경우 재시작 시, 트랜잭션 복구를 시도함 완료되지 못한 트랜잭션을 정리서버가 종료되기 전에 완료되지 못한 트랜잭션을 정리하여 데이터 무결성을 유지함 디스크 기록서버가 정상적으로 재시작되었을 때, 복구하는 과정이 로그에 남음 쿼리 에러 메시지쿼리 도중 발생하는 문제점이 기록 커넥션 메시지 (비정상적으로 종료된 경우)클라이언트가 애플리케이션에 접속하지..

Database/Mysql 2023.11.24

[Real MySQL] 4-2. 아키텍쳐: InnoDB 스토리지 엔진 아키텍쳐

백은빈, 이성욱 님의 "Real MySQL" 책을 정리한 포스팅 입니다. 1. InnoDB 스토리지 엔진기능기능 항목설명레코드 기반 잠금행(레코드) 단위 잠금 → 충돌 최소화, 정밀한 동시성 제어 가능ACID 트랜잭션 지원원자성, 일관성, 격리성, 지속성을 보장 → 신뢰성 높은 데이터 처리 가능MVCC (다중 버전 동시성)읽기/쓰기 작업 간 충돌 없이 처리 가능 → 비차단 읽기(Non-locking read) 지원크래시 복구 기능로그 기반 자동 복구→ 장애 발생 시에도 데이터 복구 가능외래 키 제약 조건데이터 참조 무결성 보장→ 복잡한 관계형 데이터 설계 가능 장점장점 항목설명높은 동시성 처리여러 트랜잭션이 동시에 다른 레코드에 접근 가능 → 병렬 처리 효율적우수한 성능필요한 레코드에만 잠금 적용 → 불..

Database/Mysql 2023.11.24

[Real MySQL] 4-1. 아키텍쳐: MySQL 엔진 아키텍쳐

백은빈, 이성욱 님의 "Real MySQL" 책을 정리한 포스팅 입니다. 1. ArchitectureMySQL Engine클라이언트가 보낸 쿼리를 받아서 실행하는 역할구성 요소역할 설명Connection Handler클라이언트와의 연결을 관리하며, 클라이언트로부터 받은 요청을 SQL Parser에 전달SQL ParserSQL 쿼리를 파싱하여 내부적으로 처리 가능한 형태로 변환하고, 문법 유효성을 검사Optimizer실행 계획을 분석하고, 가능한 실행 경로 중 가장 효율적인 계획을 선택하여 성능 최적화 Storage Engine실제 데이터 읽기와 쓰기를 담당하는 엔진성능 향상을 위한 기능 제공 (InnoDB: 버퍼 풀, MyISAM: 키 캐시) 예시) 사용법더보기CREATE TABLE test_table ..

Database/Mysql 2023.11.23

[Real MySQL] 3. 사용자 및 권한

백은빈, 이성욱 님의 "Real MySQL" 책을 정리한 포스팅 입니다. 1. 사용자 식별'svc'@'127.0.0.1''svc'@'%'홀따옴표로 감싸 식별자 표시를 합니다. 고유 사용자 계정아이디와 호스트의 결합호스트사용자의 접속 원점을 의미합니다.사용자가 특정 서버에 접근할 수 있도록 허용된 위치로그인 시에 계정의 접속지점이 호스트 정보와 불일치하다면 접속할 수 없습니다. 2. 사용자 계정 관리시스템 계정과 일반 계정SYSTEM_USER 권한을 가지고 있느냐에 따라 시스템 계정과 일반 계정으로 구분됩니다. 시스템 계정mysql.admin (데이터베이스 서버 관리자를 위한 계정)권한계정 관리 (CREATE USER, GRANT 명령어)다른 세션 강제 종료 (KILL 명령어)스토어드 프로그램 생성 시, ..

Database/Mysql 2023.11.23

[Real MySQL] 2. 설치와 설정

백은빈, 이성욱 님의 "Real MySQL" 책을 정리한 포스팅 입니다. 1. MySQL 설치2. MySQL 서버의 시작과 종료실행mysqld --defaults-file=/usr/local/etc/my.cnf --initialize-insecure--defaults-filemysql 서버를 기동하는데 사용되는 기본 옵션 파일을 전달하는 옵션 --initialize-insecuremysql 서버를 실행하는데 필요한 초기설정 관련 파일들을 자동 생성하는 옵션초기 데이터 파일로그 파일root 계정 (비밀번호 없음) 설정my.cnf[mysqld]# Only allow connections from localhostbind-address = 127.0.0.1mysqlx-bind-address = 127.0.0...

Database/Mysql 2023.11.22

[Real MySQL] 1. 소개

백은빈, 이성욱 님의 "Real MySQL" 책을 정리한 포스팅 입니다. 1. 소개Oracle 사에 인수된 오픈소스 RDBMS 입니다. 2. EditionCommunity Edition오픈 소스 라이선스별도의 라이선스 계약 없이 사용자가 사용할 수 있습니다. Enterprise EditionCommercial License를 사용합니다.상업적으로 사용하는 버전입니다.MySQL 운영팀에게 공식적으로 기술 이슈에 대해 지원받을 수 있습니다.고급 기능을 제공합니다. (보안, 모니터링, 백업 등) 3. LicenseMySQL은 에디션에 따라 각각의 라이선스를 가지고 있습니다. GPL (GNU General Public License)오픈 라이선스 입니다.제품과 함께 번들로 배포할 경우, 해당 제품은 GPL 라이..

Database/Mysql 2023.11.22