2023/11 34

[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

[고급 알고리즘] Dynamic Programming

1. Dynamic Programming복잡한 문제를 작은 문제로 나누어 푸는 알고리즘 입니다.작은 문제의 해를 저장해 나중에 같은 부분 문제를 계산하지 않도록 합니다. 조건중복 부분 문제 구조 (Overlapping Subproblems)전체 문제를 작은 부분 문제들로 나누었을 때, 같은 부분 문제들이 반복됨 Memoization: 작은 문제들의 해를 저장 및 재사용함으로써 중복계산을 방지할 수 있습니다. 최적 부분 구조 (Optimal Substructure)전체 문제의 해가 부분 문제의 해를 이용해 구해질 수 있는 성질부분 문제와 전체 문제간에 의존성이 존재합니다.이러한 의존성을 점화식으로 도출하여 전체 해를 작은 문제의 해의 조합으로 표현할 수 있습니다.작은 문제부터 해결해 나가면서, 점진적으로 ..

Algorithm 2023.11.10

[기초 알고리즘] String

1. Anagram길이가 같고, 같은 문자로 구성된 두 문자열을 가리킴 예시stressed→dessertsElvis→lives Permission to dance → Stories on Pandemic 코드더보기private static int CHARACTER_RANGE= 256;public boolean isAnagramCounting(String string1, String string2) { if (string1.length() != string2.length()) { return false; } int count[] = new int[CHARACTER_RANGE]; for (int i = 0; i  2. Palindrom문자열의 중심으로부터 모든 쌍이 대칭되는 ..

Algorithm 2023.11.08

[기초 알고리즘] 수학: 소수

소수란?1과 자기 자신으로만 나누어지는 수 입니다. 판정법for (int i = 2; i 2부터 N-1까지 반복합니다.반복하는 숫자가 N으로 나머지 연산하여 0인지 확인합니다. 에라토스테네스의 체특정 범위 내의 소수판정법입니다.반복하면서 합성수를 소거하는 방식입니다. 더보기boolean[] nums = new boolean[N+1];Arrays.fill(nums, true);for (int i = 2; i answer = new ArrayList();for (int k = 2; k  2부터 N까지 반복합니다.현재 방문한 수의 배수를 소수가 아닌 수로 처리합니다. 골드바흐의 추측2보다 큰 모든 짝수는 2개의 소수 합으로 표현 할 수 있음  출처BaaaaaaaarkingDog - 수학

Algorithm 2023.11.08