DB/Mysql
-
🔐 MySQL Lock 이해하기 – 데이터 일관성과 성능 관리를 위한 필수 개념DB/Mysql 2025. 4. 10. 16:32
MySQL과 같은 데이터베이스에서는 Lock(락)이 중요한 역할을 합니다. 락은 동시에 여러 사용자가 데이터를 읽거나 수정할 때 발생할 수 있는 충돌을 방지하며, 데이터 무결성과 일관성을 보장합니다. 이번 글에서는 MySQL의 Lock 개념을 쉽게 풀어 설명하고, 주요 락 종류와 실무에서 고려해야 할 점들을 알아보겠습니다.1. Lock이란 무엇인가?Lock은 데이터베이스에서 동시성 제어를 위해 사용되는 메커니즘입니다. 여러 사용자가 동일한 데이터에 동시에 접근할 때 발생할 수 있는 데이터 충돌이나 일관성 문제를 방지하기 위해 사용합니다. 쉽게 말해, 락은 “누가 언제 데이터를 읽거나 수정할 수 있는가”를 결정하는 규칙입니다.2. 왜 락이 필요한가? 데이터 무결성 보장: 여러 사용자가 동시에 데이터를 수..
-
✅ MySQL 테이블 간 관계 설정 – 물리적 FK vs 논리적 FK, 그리고 Lock 이슈까지!DB/Mysql 2025. 4. 10. 16:28
MySQL에서 여러 테이블을 연관시키는 방법에는 두 가지가 있습니다. 물리적으로 Foreign Key 제약조건(FK)을 설정하는 방법 논리적으로만 관계를 유지하는 방법각 방식은 장단점이 뚜렷하고, 시스템의 구조나 규모에 따라 적절한 선택이 중요합니다. 이번 글에서는 두 방식의 차이점과 함께, 물리적 FK 사용 시 발생할 수 있는 Lock 이슈까지 실무 관점에서 자세히 살펴보겠습니다.📌 예시 테이블 – 사용자와 게시글설명을 돕기 위해 사용자(User)와 게시글(Post) 테이블을 사용하겠습니다.💡 물리적으로 FK 제약조건을 설정한 경우CREATE TABLE User ( user_id INT PRIMARY KEY, username VARCHAR(50) NOT NULL);CREATE TABL..
-
MySQL Replication과 AWS Aurora MySQLDB/Mysql 2025. 4. 8. 17:45
MySQL Replication(복제)란?MySQL Replication은 하나의 MySQL 서버에서 발생한 변경 사항을 다른 서버로 실시간 혹은 지연 복제하는 기능입니다. 이를 통해 읽기 부하 분산, 백업, 고가용성 아키텍처 구현이 가능합니다.🔗 기본 구조MySQL Replication은 아래와 같은 구조로 동작합니다.Primary Server (Master) → Binary Log 생성 ↓Replica Server (Slave) → I/O Thread → Relay Log → SQL Thread🛠️ 복제 방식Statement-Based Replication (SBR): SQL 문장을 그대로 복제Row-Based Replication (RBR): 변경된 행 자체를 복제Mixed: 상황에..
-
🔍 MySQL 실행 계획(Execution Plan)DB/Mysql 2025. 4. 8. 17:33
MySQL에서 쿼리 성능을 분석하고 최적화할 때 반드시 알아야 할 것이 실행 계획(Execution Plan) 입니다.이 글에서는 실행 계획이 무엇인지, 어떻게 확인하고 해석하는지, 그리고 성능 향상을 위한 팁까지 상세히 설명합니다.📌 실행 계획이란?MySQL이 쿼리를 어떻게 실행할지 내부적으로 결정한 전략입니다.예를 들어 어떤 인덱스를 사용할지, 어떤 테이블부터 읽을지, 조인은 어떤 방식으로 할지 등을 포함합니다.실행 계획은 옵티마이저(Optimizer)에 의해 자동으로 결정되며, 쿼리를 최대한 빠르게 수행하기 위한 로드맵 역할을 합니다.✅ 실행 계획 확인 방법: EXPLAIN아래처럼 EXPLAIN 키워드를 붙이면 쿼리의 실행 계획을 확인할 수 있습니다.EXPLAIN SELECT * FROM empl..
-
🎨 MySQL 인덱스 알아보자!DB/Mysql 2025. 4. 8. 11:36
🎨 MySQL 인덱스 심층 분석: 데이터 검색 성능 향상을 위한 여정, 함께 떠나보시죠!오늘 우리가 함께 살펴볼 MySQL 인덱스는 데이터베이스 성능 향상의 핵심 중의 핵심입니다!이 중요한 개념을 더욱 깊이 이해하고, 실제 데이터 처리에 적용해서 효율을 확 끌어올려 보는 건 어때요?📚 인덱스를 사용하는 이유: 데이터 접근 속도, 이제 혁신을 만들어봐요!데이터베이스에서 원하는 정보를 찾는 과정, 마치 드넓은 도서관에서 딱 맞는 책 한 권을 찾는 것과 같지 않나요?인덱스가 없다면 모든 책장을 일일이 뒤져야 하니 얼마나 비효율적이겠어요!책갈피와 목차처럼, 인덱스를 활용해보자!🧠 인덱스의 핵심 특징과 성능 트레이드오프인덱스는 단순한 위치 정보 이상의 역할을 합니다.항상 정렬된 상태를 유지해주기 때문에 빠른..
-
[mysql] Public Key Retrieval is not allowed 발생DB/Mysql 2023. 7. 18. 10:39
Docker 컨테이너로 mysql 8.0을 실행시키고 springboot 실행시키려는데 에러가 발생했다. 2023-07-18T10:26:15.152+09:00 ERROR 23296 --- [ restartedMain] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Exception during pool initialization. java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:111) ~[mysql-connector-j-8.0.33...
-
mysql5.7 설치 & 계정 추가DB/Mysql 2022. 10. 12. 18:17
- centos7 OS 기준이며 package manager는 yum 으로 진행. - yum 사용시 root 권한이 필요하므로, sudo -s 이후 진행하도록 추천. Mysql 설치방법 # 1. yum 패키지 매니저 업데이트 $ yum update -y # 2. wget 설치 (다운로드 툴) $ yum install wget # 3. mysql 5.7 repo 다운로드 & 등록 $ wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm $ rpm -ivh mysql57-community-release-el7-11.noarch.rpm # 4. mysql 5.7 설치 후 실행 $ yum install mysql-server $ s..