본문 바로가기

📘 DataBase10

[DB] 옵티마이저 (1) Mysql 서버로 요청한 쿼리는 최적으로 실행 되기 위해 최적의 실행 계획을 수립하는 작업이 필요.대부분의 DBMS 에서는 옵티마이저가 이런 기능을 담당한다.Explain 명령으로 쿼리의 실행 계획 확인 가능. Mysql 에서는 비용 기반 최적화 (Cost-based optimizer, CBO) 를 사용한다. 기본 데이터 처리풀 테이블 스캔 조건- 테이블 레코드 건수가 작아, 인덱스를 택하기 보다 풀 테이블 스캔 하는 편이 더 빠른 경우- where 절이나 on 절에 인덱스를 이용할 수 있는 적절한 조건이 없을 경우- 인덱스 레인지 스캔을 사용할 수 있는 쿼리더라도, 옵티마이저가 판단한 조건 일치 레코드 건수가 많은 경우 위와 같은 조건에서 Mysql 옵티마이저는 풀 테이블 스캔을 시도한다.풀 테이블 스.. 2024. 8. 11.
[DB] 트랜잭션과 락 간략 정리 트랜잭션트랜잭션은 애플리케이션 개발 입장에서, 고민해야 할 문제를 풀어주는 필수적인 DBMS 의 기능.트랜잭션 사용 시 주의사항DBMS 의 커넥션과 동일하게 꼭 필요한 최소의 코드에만 적용하는 것이 좋다. 트랜잭션의 범위를 최소화하라는 의미. 각 단위프로그램이 커넥션을 소유하는 시간이 길어질 수록 사용 가능한 여유 커넥션의 개수는 줄어든다. 메일 전송이나, 파일 전송 작업 등, 네트워크를 통해 원격 서버와 통신하는 작업은 트랜잭션 내에서 제거하라. 웹 서버뿐 아니라 DBMS 서버까지 위험한 상황 발생 저장 데이터의 단순 조회의 경우도 트랜잭션에 포함할 필요가 없다.락레코드 락레코드 자체만을 잠그는 것 InnoDB 스토리지 엔진은 레코드 자체가 아니라, 인덱스의 레코드를 잠근다. 인덱스가 없을 경우, 내부.. 2024. 6. 27.
[빅데이터 저장 및 분석을 위한 NoSQL & Redis] Chapter 6 - Redis Cluster 시스템 & 로그 모니터링 6.1 복제 & 분산 시스템 개요 자원 공유 서버 자원 제한적, 과부하 시 다른 서버 자원 활용으로 효율성 증가 성능 향상 과부하 발생 시 로드 밸런싱을 통해 자원 분배 가능 안정성 복제 서버로 장애 대체하여 작동 데이터 참조 가능해 위험 분산 가능 Redis: 마스터-슬레이브, 마스터-슬레이브-센티널, 파티션 클러스터로 복제, 분산처리 가능 Partition 유형 범위 파티션 (Range Partition) Key-Value를 서버에 분산 저장 서버 대수 결정에 따라 저장 위치 결정 서버에 저장할 데이터 양 불균형 문제 발생 가능 해시 파티션 (Hash Partition) Hash 알고리즘으로 데이터 분산 저장 Partition 구현 방법 Client Side Partitioning 사용자가 데이터 분.. 2023. 8. 20.
[빅데이터 저장 및 분석을 위한 NoSQL & Redis] Chapter 5 - Redis 아키텍처 5.1 Redis 아키텍처 1. 메모리 영역 Resident Area 사용자의 작업이 먼저 저장되는 영역 실제 작업 수행 공간 "WorkingSet" 영역으로도 표현 Data Structure 상태 정보 저장을 위한 메모리 공간 Redis Server 운영 및 모니터링에 필요 2. 파일 영역 AOF 파일 중요한 데이터 지속 저장 스냅샷 데이터 DUMP 파일 소량 데이터 일시적 저장 3. 프로세스 영역 Server Process Redis 인스턴스 관리 및 사용자 작업 수행 4개의 멀티 쓰레드로 구성 Main thread, Sub thread 1(BIO-Close-File), Sub thread 2(BIO-AOF-Resync), Sub thread 3(BIO-Lazy-Free) Client Process .. 2023. 8. 20.
[빅데이터 저장 및 분석을 위한 NoSQL & Redis] Chapter 4 - Redis Data Modeling 4.1 키-밸류(Key-Value) 데이터 모델링 개념 4.1.1 용어 설명 테이블(Table): 관계형 DB에서 데이터를 저장하는 논리적 구조를 테이블(table)이라고 표현하는 것처럼 Key-Value DB에서도 테이블(Table)이라고 함. 필드(Field) 또는 엘리먼트(Element): 하나의 테이블을 구성하고 있는 요소들을 관계형 DB에서는 컬럼(column)이라고 하는데 Key-Value DB에서는 필드(Field) 또는 엘리먼트(Element)라고 말함. Key-Value DB에서는 하나의 Key와 하나 이상의 필드 또는 엘리먼트로 구성됨. Key-Value DB에서는 제약 조건 기능이 제공되지 않지만, HyperLogLogs 데이터 속성을 통해 원하는 조건의 데이터를 저장, 관리할 수 있.. 2023. 8. 20.
[빅데이터 저장 및 분석을 위한 NoSQL & Redis] Chapter 3 - 트랜잭션 제어 & 사용자 관리 3.1 Isolation & Lock 모든 NoSQL 제품이 트랜잭션을 제어하지는 않지만, Redis는 트랜잭션 제어 가능. Redis는 Read Commited 타입의 트랜잭션 제어도 가능함. Redis 4.0 버전에서 Data Sets 락 매커니즘 제공. 3.2 CAS (Check and Set) CAS는 데이터 일관성 공유를 위한 기술로 동시 처리 시 충돌을 피함. Watch 명령어를 사용하여 충돌 감지 가능. 3.3 commit & rollback EXEC: 변경한 데이터 최종 저장에 사용. DISCARD: 변경한 데이터 최종 저장하지 않고 취소. 3.4 Index 유형 및 생성 Redis는 Primary Key Index와 Secondary Key Index를 제공. Exact Match와 Ra.. 2023. 8. 20.
[빅데이터 저장 및 분석을 위한 NoSQL & Redis] Chapter 2 - Redis 설치 및 데이터 처리 Redis의 주요 특징 Redis는 NoSQL 데이터베이스로 분류되며 Key-Value 형태로 데이터를 관리합니다. Key-Value DB인 동시에 In-Memory 데이터 처리와 저장 기술을 제공하므로 빠른 Read/Write 성능을 가지고 있습니다. 다양한 데이터 유형을 지원하며 String, Set, Sorted Set, Hash, List, HyperLogLogs 등을 저장할 수 있습니다. 메모리 상의 데이터를 Dump 파일과 AOF(Append Of File) 방식으로 디스크에 저장할 수 있습니다. Master/Slave Replication을 통해 데이터의 분산 복제를 지원하며 Query Off Loading을 통해 Master는 Read/Write 작업, Slave는 Read 작업을 수행할 .. 2023. 8. 20.
[빅데이터 저장 및 분석을 위한 NoSQL & Redis] Chapter 1 - NOSQL 개념 Chapter1 - NOSQL 개념 NOSQL Not Only SQL 기존 SQL 뿐만 아니라, SQL 이 할 수 없는 영역의 기술도 제공하는 대체, 보완 기술 장점 클라우드 컴퓨팅 환경에 적합하다. RDBMS 에 비해 비용 및 성능 지연 문제에 적합 구축 단계에 비용 발생이 덜하다. 유연한 데이터 모델 RDBMS 는 데이터 베이스를 설계하기 위해 필요한 선수 개념들이 많다. 비정형 구조인 컬렉션, 테이블, 노드는 구체적이고 까다롭지 않기 때문에, 설계하기 쉽다. 빅데이터 처리에 효과적 RDBMS 보다 빅데이터 처리에 효과적이다. 빅데이터 처리에 대응하기 위해 나온 데이터베이스이기 때문. NOSQL 종류와 선정 기준 순차적으로 조건을 만족하며 선정 기준을 세분화한다. 1. 초당 5만건 이상의 데이터가 발.. 2023. 7. 23.
쿼리 작성 및 최적화 요새 스프링 프로젝트, DB, 자소서 수정, 토비 스프링, 코테 준비 등등을 하고 있다. 하루가 너무 짧기도 하고 잠을 적게 자도 괜찮은 체질이 되고 싶은 요즘이다. DB공부는 Real Mysql을 읽고 있다. 읽기 너무 어려운 책인데.. DB 질문도 신입 개발자 면접에서 디테일한 질문까지 필수라고 하기 때문에 열심히 정리하면서 읽고 있다. 쿼리 작성 및 최적화 부분을 공부중인데 이 부분에서 헷갈리는 개념을 정리해볼 생각이다. Join 기법 Nested Loop Join 중첩된 반복문과 유사한 방식으로 조인을 수행 반복문 외부의 테이블을 선행 테이블 & 외부 테이블이라 칭함 반복문 내부의 테이블은 후행 테이블 & 내부 테이블이라고 칭한다. 조건을 만족하는 선행 테이블 행을 추출 후 후행 테이블을 읽으며 .. 2022. 5. 17.
Flyway & DB Migration 을 적용시켜 보자 스프링 프로젝트를 진행하면서 나는 DB 테이블을 한 번에 다 생성하고 시작하는 것이 아닌 필요한 것을 만들어가면서 진행하고 있었다. 그러고 Front를 만들지 않기 때문에 DB data를 직접 mysql을 열어 넣어주고 수정하는 작업을 반복하게 되었다. 참 비효율적이라 생각했다. 그러던 도중 Flyway라는 Tool을 알게 되었다. 새로운 기술을 마주하면 항상 낯선 기분이지만 DDL을 자바에서 직접 관리를 하게 해주는 툴이라는 것을 알게 되었고, 나처럼 스키마의 잦은 변경이 일어날 경우에 사용해보면 좋겠다는 생각이 들었다. 그래서 한번 정리해보고 사용해 볼 생각이다. 혹시나 해서 Schema 가 뭐야? 데이터베이스의 구조와 제약조건에 관해 전반적인 명세를 기술한 것! 1. 개념 스키마 - 전체적인 뷰 2.. 2022. 5. 3.
반응형