본문 바로가기

Database5

데이터베이스 트랜잭션 격리수준(Isolation Level)와 문제점 예시 정리 🔎 트랜잭션의 격리수준이란 ?트랜잭션의 4가지 특징, ACID중 고립성(isolation)을 보장하기 위해서는 트랜잭션은 분리 되어야 한다.트랜잭션 격리수준이란 동시에 여러 트랜잭션이 처리될 때, 트랜잭션끼리 얼마나 서로 고립되어 있는지를 나타내는 것이다. 격리수준은 크게 아래의 4개로 나뉜다.READ UNCOMMITTED (커밋되지 않은 읽기)READ COMMITTED (커밋된 읽기)REPEATABLE READ (반복 가능한 읽기)SERIALIZABLE (직렬화 가능) 👉 1. READ UNCOMMITTED (커밋되지 않은 읽기)각 트랜잭션에서의 변경 내용이 COMMIT이나 ROLLBACK 여부에 상관 없이 다른 트랜잭션에서 값을 읽을 수 있다.정합성에 문제가 많음Dirty Read 발생 ❓ Dir.. 2025. 1. 9.
슬로우 쿼리를 잡자! EXPLAIN, EXPLAIN ANALYZE 📑 EXPLAIN 1. explain의 정의explain Plan란  SQL을 수행하기전 데이터를 어떻게 가져올 건지에 대한 실행계획을 의미하며데이터 performance를 확인 하고자 할때 explain Plan 명령어를 사용한다. 2. 사용방법 2.1 )  SELECT 에서 explain 사용하기select explain을 사용하려면 SELECT 키워드 앞에 explain을 붙여주면된다. 간단하게 user라는 테이블과 author이라는 테이블이 있다라고 할때 두 테이블을 조인한 테이블에 대하여 explain을 주었다. 3. 사용 예시사용한 SQL문SELECT recruitment.id AS recruitment_id, company.name AS company_name, recrui.. 2024. 11. 13.
DBMS의 핵심? 옵티마이저 옵티마이저(optimizer)란?옵티마이저는 가장 빠르고 효율적인 방법으로 SQL을 수행할 최적의 처리 경로를 생성해주는 DBMS의 핵심 엔진이다.엥? 그게 뭔데?DBMS에는 개발자가 작성한 SQL을 어떻게 실행할 것인지실행 계획(Execution Plan)을 수립하고 SQL을 실행하게 되는데, 바로 이 실행 계획을 수립을 옵티마이저가 하게 됩니다.개발자가 작성한 SQL을 실행하면 DBMS에서는 옵티마이저를 기반으로 실행계획을 세워서 쿼리를 실행한다. 쿼리 처리 흐름 개발자가 SQL문을 작성하면Parser에서 개발자가 작성한 SQL문을 문법 검사와 구문 분석을 합니다.옵티마이저는 아래서 설명할 두 방법의 플랜을 생성하고, 카탈로그 매니저에 있는 각종 통계정보를 기반으로 비용을 평가하여 최소 비용의 실행 .. 2024. 11. 6.
VARCHAR와 TEXT의 저장방식 차이 🤔 VARCHAR 의문점우리는 왜 코드를 작성할 때 그 컬럼 타입을 VARCHAR(16) 처럼 정확히 맞춰서 설정할까?새로운 엔티티의 ENUM 타입을 만들던 중에 언제나 처럼 ENUM 타입중 가장 큰 값을 기준으로 설정을 했다. @NotNull @Enumerated(EnumType.STRING) @Column(columnDefinition = "VARCHAR(12)") private BannerType bannerType;  그러던 중 의문이 하나 들었다 “그냥 VARCHAR를 높은 값으로 설정하면 추후 ENUM 타입이 추가되었을 때를 대비해 더 유연해지는거 아니야? 아니면 아예 TEXT말고 VARCARH(9999)를 써버리는건?” 해당 궁금증을 해결하기 위해 한번 찾아보게 되었다.. 2024. 10. 22.
SQLite 사용기 노마드 코더에서 'DB고민 끝내드림' 이라는 영상을 보았다.SQLite와 PostgreSQL에 대해 호기심이 생기게 되었고 먼저 스타트업에서 MySQL과 함께 많이 사용하는 SQLite에 대해 알아보려 한다.📚각각의 Database들의 특징📖MySQL많은 기업, 사람들이 사용하는 많큼 문서화, 자료들이 많고 대부분의 프로그래밍 언어에서 지원한다.읽기 전용 명령을 관리하는 데 선호된다.대부분의 기능들을 지원하고, 초보자들이 사용하기에 좋다.가장 유명한 database이기에 다음 DB로 빠르게 넘어가겠다!📒PostgreSQLMySQL보다 좀 더 전문적인 데이터베이스로, 더 많은 기능들이 존재한다특징으로는 이러한 것들이 있다.확장자를 지원한다복잡한 쿼리에 탁월대용량 데이터 관리에 적합Catalog 기반임.. 2024. 10. 21.