mysql 6

MySQL 8.0의 GTID 복제(Replication) 및 mode 변경 실습

GTID(Global Transaction ID)란?원본 서버에서 Commit된 트랜잭션과 연결된 식별자를 말한다.GTID = server_uuid:transaction_id복제의 일관성 - 모든 트랜잭션에 대해서 전역 고유 식별자를 부여자동 복구 - Slave 서버가 손실된 트랜잭션을 자동 감지 및 복구 가능Master-Slave 전환 용이성 - 복제 위치를 명시적으로 지정하지 않고 페일 오버 가능트랜잭션 기반 복제 - 트랜잭션 단위로 복제해서 복제간 충돌 방지 및 데이터 일관성 유지 GTID 기반 복제(Replication)gtid 브랜치에서 my.cnf 변경사항 확인하기 https://github.com/downfa11/mysql-replication/tree/gtid GitHub - downfa..

mysql 2025.06.18

Master-Slave 노드간 복제(Replication) 실습 (feat. MySQL 8.0)

MySQL 8.0 기반 데이터베이스 복제 실습레포지토리에서 제공하는 자동화 스크립트들도 꼭 한번 확인해보길 바란다. docker-entrypoint-initdb.d에서 User 생성, 권한 부여, 복제 구성 설정 등을 자동화하고 있다.01-init-user.sql : 복제를 담당할 User 생성 및 권한 부여 (Master Node)02-configure-replication.sql : Slave Node에서 실행될 복제 구성 실습한 내용은 Github Repository에서 확인할 수 있다.https://github.com/downfa11/mysql-replication GitHub - downfa11/mysql-replication: MySQL 8.0 기반 데이터베이스 복제와 GTID mode 실습M..

mysql 2025.06.18

MySQL Full-text Search가 항상 LIKE보다 뛰어난 성능을 내는가?

부제 - 은탄환은 없다 알다시피, SQL문에서 LIKE 쿼리의 성능은 처참하다.%keyword% 형태의 문자열의 경우는 인덱스를 활용할 수 도 없어서 Full Table Scan을 해야한다. 당연히 결과값 데이터가 많을수록 성능이 더 떨어진다.아직 결과 수가 많지 않아서 LIKE 연산으로 괜찮지만 충분히 개선의 여지가 남아있다. 복잡한 텍스트 검색시 사용되는 ElasticSearch는 현재 서비스 성격상 맞지 않으며, 우리는 운영비 제로를 목표로 t2.micro를 쥐어짜내고 있는 상황이다. MySQL에서 Full-text Search라는 기능을 제공한다.Full-text Index를 사용해서 텍스트 기반 검색에 대해 더 빠르게 검색할 수 있다. Full-text Search 개요데이터베이스나 검색 시스템..

mysql 2025.06.13

Entity 계층 구조에 따른 상속 관계에 대하여 알아보자

아 상속 계층 전략별로 예시들어가면서 테이블 만들었는데 안이뻐서 지웠다. 시간 박았는데 속상하다   객체 지향에서는 각 클래스끼리의 상속 관계가 존재한다.그러나 관계형 데이터베이스에서는 상속을 지원하지 않는다. 대신 super 타입, sub 타입이라는 모델링 기법을 통해 객체의 상속 관계를 매핑할 수 있다.  Entity 계층 구조에 따른 상속 관계 매핑부모 테이블과 특수한 유형을 표현하는 자식 테이블 JPA에서는 이를 지원하기 위해 객체의 상속을 이용한 @Inheritance 어노테이션을 지원한다. 엔티티 상속 계층 전략SINGLE_TABLE (default)부모와 모든 자식 엔티티의 속성을 포함하는 하나의 테이블 사용TABLE_PER_CLASS부모와 자식 엔티티를 개별적인 테이블로 나누어 사용JOIN..

mysql 2025.04.01

데이터베이스 인덱스는 왜 B-tree를 사용하는가?

서론 - 인덱스에서 쓰이는 B tree가 뭔데? Tree 구조는 기본적으로 탐색시 시간복잡도 O(log N)을 가진다.  하지만 최악의 경우, 트리 노드가 한쪽 방향으로 쏠려서 O(N)을 가지게 된다.이런 경우를 방지하기 위해서 Balanced Tree를 이용한다.  balanced tree : 노드 삽입 및 삭제시 특정 규칙에 맞게 재정렬되어 양쪽 자식 수의 밸런스를 유지하는 트리최악의 경우에도 각 연산이 무조건 O(log N)를 보장하며 redblack-tree나 b-tree가 여기에 해당한다.   본론 - 각 자료구조간 비교를 통해 확인해보자데이터베이스의 인덱스에서는 위의 B tree와 B+tree 자료구조를 채택해서 사용하고 있다. 그렇다면 다른 자료구조도 많은데 왜 하필 저 녀석들을 사용할까? ..

mysql 2025.03.12

토이프로젝트 - 트랜잭션 관리를 통한 베타락(Exclusive Lock) 구현

트랜잭션(transaction)의 관리격리성(Isolation) : 일련의 트랜잭션을 작업 중에는 다른 트랜잭션의 연산 작업이 끼어들지 못하게 격리시킨다.동시에 공유 리소스에 접근시 독립성을 유지하기 위해 대기한다.​​트랜잭션의 isolation level 상승@Transactional(isolation= isolation.SERIALIZABLE)트랜잭션 내에서 선택(select)된 리소스는 공유 잠금(write제한)된다. 성능적으로 동시처리 성능이 가장 나지만 단순하고 가장 엄격한 관리 수준​SERIALIZABLE 만 해둔다면 쓰기 작업은 안되겠지만 읽기 작업이 동시에 가능하기에 비즈니스 로직에서는 잘 고려해야한다.​​트랜잭션 격리 수준의 종류repatable-Read(default) : 조회하는 데이..

mysql 2024.11.22