분류 전체보기 498

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

백은빈, 이성욱 님의 "Real MySQL" 책을 정리한 포스팅 입니다. 1. 저장공간CHAR선언한 길이만큼 고정된 크기로 저장됨부족한 공간은 공백으로 채움검색 속도가 빠름 (오버헤드 없음) VARCHAR입력한 데이터 크기 만큼만 저장됨 길이 접두사데이터별 길이 접두사가 추가됩니다.255 바이트 이하: 1바이트256 바이트 이상: 2바이트 저장공간최대 64KB를 저장할 수 있습니다. (길이 접두사 포함)전체 row에 크기 제한이 있습니다.다른 컬럼에서 40KB 이상 사용하고 있다면 나머지 컬럼에선 24KB만 사용할 수 있습니다.24KB를 초과할 경우 TEXT 혹은 BLOB 타입으로 변환됩니다. 2. 대용량 문자열가변 길이 타입입니다.64KB 이상의 데이터를 저장할 때 사용64KB 이상의 데이터는 별도의 ..

Database/Mysql 2023.11.26

[Real MySQL] 8-3. 인덱스: B-Tree

백은빈, 이성욱 님의 "Real MySQL" 책을 정리한 포스팅 입니다. 1. 특성가장 기본적인 인덱스 타입원래 값을 변형시키지 않는 인덱스B-Tree 형태 리프 노드primary key index: key - recordsecondary key index: key - rowID (PK) 2. 키 추가 및 삭제균형 트리 구조를 유지하면서 데이터를 정렬된 상태로 저장하여 성능을 높임 추가과정저장될 키 값을 이용하여 추가될 위치를 검색루트 노드에서 시작하여 브랜치 노드를 따라가며 적절한 리프 노드까지 이동리프 노드에 저장 예외 처리노드 분할리프 노드가 가득 찰 경우, 키를 반으로 나누어 상위 노드로 승격하여 트리를 균형있게 유지 삭제과정삭제할 키를 검색하여 리프 노드에서 삭제 표시즉시 삭제하지 않고 지연 삭..

Database/Mysql 2023.11.25

[Real MySQL] 8-2. 인덱스

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

Database/Mysql 2023.11.25

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

백은빈, 이성욱 님의 "Real MySQL" 책을 정리한 포스팅 입니다. 1. 트랜잭션하나의 논리적인 작업 단위로 실행되는 일련의 연산DML 문을 하나의 트랜잭션으로 묶어 실행할 수 있음 특징AtomicAll 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. Architecture기능잠금 (레코드 기반) 장점성능높은 동시성 처리안정적 2. 클러스터링프라이머리 키 기준프라이머리 키는 다른 보조 인덱스에 비해 가중치가 높게 설정됨 3. 외래 키 지원제약슈퍼타입-서브타입서브타입 테이블에 슈퍼타입 테이블의 기본 키를 참조하는 외래 키 컬럼을 설정해야 함 잠금이 여러 테이블로 전파됨외래 키 제약이 활성화 되면 부모 테이블과 자식 테이블에 대해 잠금을 수행하게 됨자식 테이블에서 데이터를 업데이트 하거나 삭제할 때 부모 테이블도 잠김여러 테이블이 잠금 상태에 놓이게 되므로 데드락 발생 가능성이 발생함 foreign_key_checks참조 무결성 제약 원칙 활성화 OFF외래 키 관계의 부모 테이..

Database/Mysql 2023.11.24

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

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

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