데이터베이스

    [Database] 트랜잭션 격리수준(Transaction Isolation Level)

    트랜잭션 ACID 중 I(Isolation)에 해당하는 격리성에 관한 격리 수준을 의미합니다. 병렬처리되는 트랜잭션을 완전한 격리가 아닌 격리의 수준을 지정해서 작동을 하게됩니다. DIRTY READ, NON-REPEATABLE READ, PHANTOM READ와같이 각각 격리 단계에서 발생할 수 있는 부정합이 있습니다. SERIALIZABLE(직렬화) 가장 엄격한 격리 수준으로 완벽한 읽기 일관성 모드 제공합니다. 한 트랜잭션에서 읽고 쓰는 레코드를 다른 트랜잭션에서는 절대 접근할 수 없습니다. 교착상태가 많이 발생하여 DB성능이 떨어집니다. REPEATABLE READ 한 트랜잭션이 접근하는 데이터에대해 다른 트랜잭션이 수정하지 못하는 격리수준을 의미합니다. 하지만 새로운 데이터를 추가하는 INSER..

    [Database]MySQL 인덱스

    [Database]MySQL 인덱스

    INDEX란? 색인 (검색을 위해)임의의 규칙대로 부여된, 임의의 대상을 가리키는 무언가 기능으로써는 무언가를 빠르게 찾기위해 존재하는것이라고 생각하면 될 것 같습니다. 흔히들 개발자들이 알고 있는 Index는 배열,리스트의 인덱스입니다. 배열에서 인덱스의 역할은 실제 메모리상의 주소를 추론할 수 있어 O(1) 시간에 데이터에 접근 가능하게 합니다. Index가 없다면 배열에서는 처음부터 끝까지 뒤져보며 O(n)시간을 소요하지만 O(1)로 접근할 수 있게 해주는 엄청난 효과를 주죠 Database에서 INDEX란? 데이터베이스의 인덱스도 똑같은 역할을 합니다. Full Scan하는 대신 더욱 효과적으로 조회(Select)를 하기위해 만들어진 것이죠. 인덱스는 지정한 컬럼들을 기준으로 메모리 영역에 일종의..

    [Database] 트랜잭션(Transaction) 과 ACID

    [Database] 트랜잭션(Transaction) 과 ACID

    트랜잭션이란? 하나의 논리적 작업 단위를 구성하는 일련의 연산들의 집합, 작업단위 트랜잭션의 4가지 특징 ACID 원자성(Atomicity) - 트랜잭션은 DB에 모두 반영되거나, 전혀 반영되지 않아야 합니다. - Commit & Rollback을 활용합니다. 일관성(Consistency) - 트랜잭션의 작업 처리 결과는 항상 일관성 있어야 합니다. - 허용된방식으로만 데이터를 변경하는것을 의미합니다. - 데이터베이스에 기록된 모든 조건, 제약들을 적용하며 수행하는것을 의미합니다. 독립성(Isolation) - 둘 이상의 트랜잭션이 동시에 병행 실행되고 있을때, 어떤 트랜잭션도 다른 태랜잭션 연산에 끼어들 수 없습니다. 지속성(Durability - 성공적으로 수행된 트랜잭션은 영원히 반영되어야 함을 의..

    [SQL] 데이터베이스 정규화 (1nf,2nf,3nf,bcnf)

    [SQL] 데이터베이스 정규화 (1nf,2nf,3nf,bcnf)

    정규화(Normalization)란!? 정규화는 이상현상이 있는 릴레이션을 분해하여 이상현상을 없애는 과정이 됩니다. 이상현상이 존재하는 릴레이션을 분해하여 여러 개의 릴레이션을 생성하게 됩니. 이를 단계별로 구분하여 정규형이 높아질수록 이상현상은 줄어들게 됩니다. 이상현상(Anomaly)이란? 이상현상이란, 테이블 내의 데이터들이 불필요하게 중복되어 테이블을 조작할 때 발생되는 데이터 불일치 현상입니다. 이상현상은 크게 삽입이상,삭제이상,갱신이상 3가지로 분류됩니다. 삽입 이상(insertion anomalies) - INSERT - 원하지 않는 자료가 삽입된다든지, 삽입하는데 자료가 부족해 삽입이 되지 않아 발생하는 문제점을 말합니다. 삭제 이상(deletion anomalies) - DELETE -..