본문 바로가기

Backend/MySQL

(5)
[MySQL] partitioning 구성 파티셔닝은 대용량 데이터셋을 나누는 것이다. 이는 하나의 데이터 베이스 서버의 부하를 나누는 데 목적이 있다. 자세한 내용은 일전의 블로그에 정리한 바 있다.  아래에서는 하나의 서버 내 하나의 테이블에서 partitioning 하는 예제를 다룰 것이다. 이 후 다음 블로그에서는 여러 개의 서버에서 하나의 테이블이 분산되어 있는 구조를 다룰 것이다.  Create a Partitioned table기본적인 테이블 구조에 Partition을 더했다. event date의 년도의 범위에 따라 파티션을 나누었다. (Range partitioning) 아래는 mysql 8.4.0 에서 동작하는 코드이다. CREATE TABLE my_table ( id INT NOT NULL AUTO_INCREMENT, ..
[MySQL] replication 구성 MySQL에서 replication을 구성했습니다. replication은 간단히 이야기하자면 확장성 및 내결함성을 위해 여러개의 데이터 베이스의 복사본을 둔 것입니다. 아래의 블로그에서 보다 자세히 정리했습니다.  https://ji-seung.tistory.com/65 [DB] 분산 데이터 - 복제여러 장비 간 데이터를 분산하는 이유는 다음과 같다. 확장성 내결함성/ 고가용성 지연시간 수직확장 vs 수평확장 수직확장은 용량확장이라고도 불리며 더 강력한 장비(CPU, 메모리 칩, 디스크)를ji-seung.tistory.com 리더(master)와 팔로워(replica, slave)로 구성되어 있으며 오늘 블로그에서는 하나의 리더, 하나의 팔로워가 있는 단일 리더 구조를 구현할 것입니다. 기본적으로 각각..
[MySQL] 기본 구조와 show databases MySQL 전체 코드는 36 MB이다. 일일이 모든 코드를 보는 것은 힘들다. 그래서 우리가 흔히 쓰는 쿼리들을 입력하였을 때, 어떤 방식으로 동작하는지를 파악하려고 한다.  아래와 같은 쿼리들에 대해서 어떤 식으로 동작하는지 알아볼 것이다. SHOW DATABASES;CREATE DATABASE mydatabase;USE mydatabase;CREATE TABLE mytable ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), age INT);INSERT INTO mytable (name, age) VALUES ('John', 30), ('Alice', 25), ('Bob', 35);SELECT * FROM mytable; 우선 comma..
[MySQL] git clone MySQL MySQL을 github에서 clone하였다. 기본적으로 cmake를 통해 빌드 프로세스가 구축되었다. cmake는 크로스 플랫폼 빌드 시스템으로, 소스 코드에서 빌드 프로세스를 자동화하는 도구이다.  Docs/README.build 에는 빌드하는 방법에 대한 설명이 있었다. The recommended way to build MySQL for developers: cd cmake make 설명대로 디렉토리 내부에 build 디렉토리를 만들었고 해당 디렉토리에서 cmake .. 를 호출하였다.그런데 자꾸 bison의 버전이 맞지 않다는 에러가 나왔다.  확인 결과, 버전은 2.3이었고 업그레이드가 필요하였다. 그런데 업그레이드를 하였음에도 bison version은 변하지 않았다. ..
[MySQL] Hello MySQL! 를 읽으니 해당 내용들이 실제 database에서 코드로써 어떻게 나타나는지 궁금하다. 실제 database 코드를 한번 까봐야겠다. 우선, MySQL 코드를 볼 예정이다. 세부 자료구조가 b-트리로 b+트리 기반 db를 구현해본 경험이 있기에 코드를 읽기 더 수월하다고 판단했다. 또한 스타트업부터 대기업까지 MySQL을 주로 사용한다는 현실적인 이유도 있다. 기회가 된다면 contribute도 해보고 싶다. 물론 contribute가 상당히 힘든 일인 것은 알고 있다. 그렇지만 그것이 충분히 의미있고 개발자로서 큰 성장의 기회라는 것을 알고 있다. contribute를 하기 위해서는 우선 코드의 전반을 파악하고, 세부 내용은 깊게 파악할 것이다. 이 과정에서 배운 것들을 정리한다면 그 과정 자체로 의미..