Real MySQL 8.0 - 8.3.2에서 인덱스 키 추가 및 삭제 과정에 대한 설명이 쭉 나와 있는데, 시각화된 자료가 없어서 동작 과정이 와닿지 않았다. 그러던 중 B-Tree Visualization이라는 좋은 사이트를 알게 되어서 직접 조작하여 눈으로 확인해보고자 한다. B-Tree란? 자식 노드의 개수가 2개 이상인 트리 하나의 노드가 최대 `M`개의 자식을 가질 수 있는 B-Tree를 `M차 B-Tree`라고 부른다. 각 노드는 최대 `M - 1`개의 key를 가질 수 있다. 노드의 데이터 수가 `N`개라면, 자식 노드의 개수는 `N + 1`개이다. 노드의 데이터는 항상 정렬된 상태여야 한다. 노드의 자식 노드들은 노드 데이터를 기준으로 더 작은 값을 왼쪽 서브 트리에, 더 큰 값들은 오른쪽..
Real MySQL 8.0 - 7.1.1 2단계 키 관리에서 MySQL 서버의 TDE에서 지원되는 암호화 알고리즘에 대해 설명하였는데,이와 관련하여 몇 가지 궁금증이 있어서 작성하게 되었다. MySQL 서버의 TDE에서 지원되는 암호화 알고리즘은 AES 256 비트이며, 이외의 알고리즘은 지원되지 않는다. 테이블스페이스 키는 AES-256 ECB(Electronic CodeBook) 알고리즘을 이용해 암호화되고, 실제 데이터 파일은 AES-256 CBC(Cipher Block Chaining) 알고리즘을 이용해서 암호화된다. Q1. 다양한 암호화 알고리즘 중 왜 AES 256만 지원할까? Q2. 테이블스페이스 키는 AES-256 ECB, 실제 데이터 파일은 AES-256 CBC 알고리즘을 이용하여 암호화..
Real MySQL 8.0 - 4.2.3 MVCC에서 "MVCC가 격리 수준에 따라 동작하는 방식이 다를 수 있다"라고 하는데 직접 실습을 통해 더 알아보고 싶어서 작성하게 되었다. MVCC(Multi-Version Concurrency Control) 데이터베이스가 동시성을 제어하기 위해 사용하는 방법 중 하나로, 여러 트랜잭션이 동시에 데이터베이스에 접근할 때 발생할 수 있는 갱신 충돌을 방지하고 데이터 일관성을 유지하는데 도움을 준다. MySQL의 InnoDB에서는 Undo log를 활용하여 MVCC를 구현한다. 하나의 레코드에 대해 `여러 개의 버전(Multi Version)`이 동시에 관리된다. 트랜잭션의 격리 수준 여러 트랜잭션이 동시에 처리될 때, 특정 트랜잭션이 다른 트랜잭션에서 변경하거나..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/181921 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 정수 `l`과 `r`이 주어졌을 때, `l` 이상 `r` 이하의 정수 중에서 숫자 "0"과 "5"로만 이루어진 모든 정수를 오름차순으로 저장한 배열을 return하는 solution 함수를 완성해 주세요. 만약 그러한 정수가 없다면, -1이 담긴 배열을 return 합니다. 제한사항 1 ≤ `l` ≤ `r` ≤ 1,000,000 입출력 예 l r result 5 555 [5, 5..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/181926 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 정수 `n`과 문자열 `control`이 주어집니다. `control`은 "w", "a", "s", "d"의 4개의 문자로 이루어져 있으며, `control`의 앞에서부터 순서대로 문자에 따라 `n`의 값을 바꿉니다. "w" : `n`이 1 커집니다. "s" : `n`이 1 작아집니다. "d" : `n`이 10 커집니다. "a" : `n`이 10 작아집니다. 위 규칙에 따라 `n..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/181935 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Code def solution(n): if n % 2 == 0: return sum(i * i for i in range(2, n + 1, 2)) else: return sum(range(1, n + 1, 2))