SQL

    [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 -..

    이게 바로 개막장 ERD다.

    이게 바로 개막장 ERD다.

    ERD가 뭘까!? Entity Relationship Diagram : 개체-관계 다이어그램 DB 모델링 하는 과정에서 테이블간의 관계를 설명해주는 다이어그램이다. Entity : 테이블을 구성하는 객체의 구성성분 (DB에서는 칼럼이 될것이다.) Relationship : 관계를 의미하는데 1 대 1 / 1 대 다 / 다 대 다 로 구성되어있다. **ERM이란 Entity Relationship Modelling 을 의미한다. Starbucks 메뉴들에 관하여 ERD를 짠 것이다. 위에것은 내가 짠것이고 모범답안은 아래에 있다. 차이점을 보며 중요한것들을 알아보자 1. 각각의 네이밍은 어떤사람이 봐도 알아볼 수 있게 지어야한다. ERD관련해서 질문하러갔을때 상태는 신상을 sinsang으로 지어 놓고 카테..

    JOIN - 테이블을 합치게 해준다

    JOIN - 테이블을 합치게 해준다

    SELECT 문에서 사용한다 LEFT JOIN INNER JOIN FULL JOIN EXCLUSIVE JOIN 예제의 전제 topic , author , profile 3개의 테이블을 먼저 만들어준다. LEFT JOIN (LEFT OUTER JOIN) LEFT JOIN을 하면 기본적으로 기준테이블이 왼쪽에 표시된다. 왼쪽 기준 테이블에 있는 데이터들을 오른쪽으로 연장 대상테이블에 데이터가 없더라도 연장 왼쪽을 기준으로 오른쪽방향으로 테이블 및 속성을 더하기때문에 LEFT JOIN이다. SELECT * FROM 테이블1 LEFT JOIN 테이블1 ON 테이블1.속성 = 테이블2.속성 마지막에 나온 테이블1.속성 과 테이블2.속성은 서로 상응하는 관계여야 한다 (보통 뒤쪽의 테이블2.속성은 프라이머리키를 활..