Database 33

[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

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

"Real MySQL" 책을 정리한 포스팅 입니다.에러 로그 파일실행되는 도중에 에러나 경고로 인해 출력되는 메시지의 로그 파일.err 확장자로 datadir에 생성됨. 서버 시작 관련변수명을 인식하지 못한 경우특정 변수가 무시된 경우 트랜잭션 복구 메시지 (비정상적으로 종료된 경우)재처리 작업 과정완료되지 못한 트랜잭션을 정리디스크 기록 쿼리 에러 메시지쿼리 도중 발생하는 문제점이 기록 비정상적으로 종료된 커넥션 메시지클라이언트의 애플리케이션에서 접속하지 못할 경우 발생커넥션 갯수가 max_connect_errors 값이 넘어가면 연결 불가 상태 조회 명령의 결과 메시지테이블 모니터링락 모니터링InnoDB 스토어드 엔진 조회 종료 메시지정상 종료될 경우"Received SHUTDOWN from use..

Database/Mysql 2023.11.24

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

"Real MySQL" 책을 정리한 포스팅 입니다. 아키텍쳐기능잠금 (레코드 기반) 장점성능높은 동시성 처리안정적 클러스터링 (by primary key)프라이머리 키를 기준으로 데이터가 정렬되어 저장됨프라이머리 키는 다른 보조 인덱스에 비해 가중치가 높게 설정됨 외래 키 지원슈퍼타입-서브타입 모두 해당 컬럼에 인덱스 생성 필요잠금이 여러 테이블로 전파됨 (데드락 발생 가능성 O)foreign_key_checks(참조 무결성 제약원칙 체크 활성화)OFF: 외래 키 관계의 부모 테이블에 대한 작업 무시 (cascade) MVCC (Multi Version Concurrency Control)레코드 레벨의 동시성 제어 기법 Non-Locking Consistent Reads하나의 레코드에 대해 두 개의 버..

Database/Mysql 2023.11.24

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

"Real MySQL" 책을 정리한 포스팅 입니다. ArchitectureMySQL EngineSQL 분석 (파싱, 최적화)Connection Handler, SQL Parser, Optimizer Storage Engine데이터 읽기 + 쓰기 (from Disk) 특징성능 향상을 위한 기능 제공MyISAM: 키 캐시InnoDB: 버퍼 풀여러 개 사용 가능테이블 별 지정 가능CREATE TABLE test_table (fd1 INT, fd2 INT) ENGINE=INNODB; Handler데이터 읽기 + 쓰기쿼리 실행기에서 호출됨STATUS: 핸들러 API 별 사용 정보SHOW GLOBAL STATUS LIKE 'Handler%'; 스레딩 구조스레드 기반으로 동작 (Foreground or Backgr..

Database/Mysql 2023.11.23

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

"Real MySQL" 책을 정리한 포스팅 입니다. 1. 사용자 식별 'svc'@'127.0.0.1' 'svc'@'%' 홀따옴표로 감싸 식별자 표시를 합니다. 사용자의 접속지점도 계정의 일부가 됩니다. 아이디와 호스트를 함께 명시해야 합니다. 로그인 시에 계정의 접속지점이 호스트 정보와 불일치하다면 접속할 수 없습니다. 2. 사용자 계정 관리 시스템 계정과 일반 계정 SYSTEM_USER 권한을 가지고 있느냐에 따라 시스템 계정과 일반 계정으로 구분됩니다. 시스템 계정 데이터베이스 서버 관리자를 위한 계정 기능 계정관리 다른 세션 강제 종료 스토어트 프로그램 생성시 DEFINER를 타 사용자로 설정 일반 계정 개발자를 위한 계정 내장 계정 잠겨있는 계정입니다. SELECT user, host, accou..

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-file mysql 서버를 기동하는데 사용되는 기본 옵션을 파일로 전달할 때 사용합니다. 보통의 상황에 공통적으로 쓰이는 옵션이 주로 사용됩니다. --initialize-insecure mysql 서버를 실행하는데 필요한 초기설정 관련 파일들을 자동 생성하는 옵션입니다. 초기 데이터 파일 로그파일 root 계정 (비밀번호 없음) 설정 my.cnf 기본 옵션이 작성된 설정 파일입니다. 서버에서 경로들을 확인하여 순서대로 해당 파일을 찾습니다. /etc/my..

Database/Mysql 2023.11.22

[Real MySQL] 1. 소개

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

Database/Mysql 2023.11.22