profile
공부 정리

[DB] index, view

index 생성 index를 지정해주지 않으면 primary key를 기준으로 index가 적용이 되어 정렬함 (자동으로index걸린것) 결국 조건을 걸 column에 대해서 index를 생성해야 조건을 걸어 select 할 때 속도가 빨라질 수 있음 > create index index이름 on 테이블(원하는 속성) SALE 테이블에서는 조건문에 customerssn를 자주 사용하기 때문에 customerssn을 기준으로 index를 생성함 나머지 테이블들에는 자동적으로 primary key를 기준으로 index가 걸려있고 조회할 때 대부분 primary key인 속성을 조건으로 걸었기 때문에 따로 index를 생성해주지 않았음 View 생성 >가상의 테이블 생성 (특정 테이블에서 원하는 colu

2022년 12월 18일
·
0개의 댓글
·
post-thumbnail

[DB] 2PL

공용 로킹 규약 (shared locking protocol) >공용 lock 허용 시 따라야 하는 규약 ① 트랜잭션 T가 데이타 아이템 x에 대해 read(x) 연산을 실행하려면 먼저 lock-S(x)나lock-X(x) 연산을 실행해야 함 ② 트랜잭션 T가 데이타 아이템 x에 대해 write(x) 연산을 실행하려면 먼저 lock-X(x) 연산을 실행해야 함 ③ 트랜잭션 T가 lock-S(x)나 lock-X(x) 연산을 하려 할 때 x가 이미 다른 트랜잭션에 의해 양립될 수 없는 타입으로 lock이 걸려 있다면 그것이 모두 풀릴 때까지 기다려야 함 ④ 트랜잭션 T가 모든 실행을 종료하기 전에는 T가 실행한 모든 lock(x)에 대해 반드시 unlock(x)를 실행해야 함 ⑤ 트랜잭션 T는 자기가 lock을 걸지 않은 데이타 아이템에 대해 unlock을 실행할 수 없음 2PL (2단계 locking 규약) 확장단계 : 트랜잭션은 lock만 수행하고 unlock은

2022년 12월 11일
·
0개의 댓글
·

[DB] 동시성 문제

트랜잭션 격리성(Transaction Isolation) 앞서 트랜잭션의 4가지 특징인 ACID중에서 I(isolation=격리성)에 해당한다 격리성은 트랜잭션의 중간결과를 다른 트랜잭션이 접근할 수 없다라는 정의를 가지고 있다. 막연하게 접근할 수 없다라기 보다는 일반적으로 격리 레벨이 존재하며 DB에 따라 설정이 가능합니다. 이런 격리성은 강하게 처리할 수 있으며 반대로 약하게 처리할 수도 있습니다. 격리성 관련 이슈 Dirty Read commit되지 않은 데이터를 읽는 문제 예를들어 t1이 데이터에 접근하여 값을 'A'에서 'B'로 변경 후 아직 커밋하지 않은 상태에서, t2가 해당 데이터를 read하면 'B'를 읽게 됨. 이 때 t1이 최종 커밋을 하지 않고 종료되면, t2가 가진 데이터가 꼬이게 됨 Non-repeatable Read 하나의 트랜잭션에서 두 번의 동일한 조회를 하였을 때, 서로 다른 결과가 조회되는 현상 -> 같은 row가 선택은 되

2022년 12월 11일
·
0개의 댓글
·

[DB] 트랜잭션(Transaction)

트랜잭션(Transaction) 트랜잭션이란 데이터베이스의 상태를 변화시키기 위해서 수행하는 작업의 단위를 말한다. 데이터베이스의 상태를 변화시킨다는 의미는 SQL문을 통해 데이터베이스에 접근하는 것을 의미한다 작업의 단위는 sql문 한 문장이 아니고 여러 문장이 합쳐진것이다 예를 들어 내가 게시글을 올리면 DB에 insert가 되고 다시 select를 해서 보여줘야한다 이런 작업단위를 하나의 트랜잭션이라고 한다 트랜잭션의 특징(ACID) 원자성(Atomicity) 하나의 원자마냥 All or nothing 즉, 중간에 하다 마는 경우는 없다는 말 -> 다 반영되거나 아예 반영안하거나 일관성(Consistency) 트랜잭션을 수행하기 전이나 수행한 후나 데이터베이스는 항상 일관된 상태를 유지해야 한다 고립성(Isolation) 수행 중인 트랜잭션에 다른 트랜잭션이 끼어들어 변경 중인 데이터 값을 훼손하는 일이 없어야 한다 지속성(Durabilit

2022년 12월 7일
·
0개의 댓글
·
post-thumbnail

[DB] IN, NOT IN, EXISTS, NOT EXISTS

주의사항 동작의 차이 우선 in과 exists의 차이점을 알고있어야한다 in을 사용할 때는 in뒤의 쿼리문을 먼저 실행하고 그 이후에 in앞의 쿼리문을 실행한다 exists을 사용할 때는 exists 앞의 쿼리문을 먼저 실행하고 그 이후에 exists뒤의 쿼리문을 실행하게 된다 In > select * from t1 where id in (select id from t2); t2의 id를 먼저 가져오고 t1의 id가 그곳에 속하는지 비교 NOT IN >select * from t1 where id not in (sele

2022년 10월 23일
·
0개의 댓글
·

[DB] mysql-ER diagram

단일 직사각형은 강한엔티티(strong entity) 이중 직사각형은 약한엔티티(weak entity) 밑줄이 실선으로 그어져 있으면 primary key 밑줄이 점선으로 그어져 있으면 partial key (weak entity) 단일 마름모는 Relationship(관계)이고 이중 마름모는 indentifying Relatonship(식별관계)를 의미함 entity와 relationship사이에 실선 한개는 부분참여를 의미하고 실선 두개는 전체참여를 의미한다 그리고 참여에서 (min,max)로 범위를 정할 수 있다 (아래 보충설명) 관계 구조적 제약조건 ![](https://velog.velcdn.com/images/97gkswn/post/269aa8e0-0a81-4e1a-9636-

2022년 10월 23일
·
0개의 댓글
·
post-thumbnail

[DB] mysql - sql문(join 등)

CREATE TABLE 프라이머리 키, 외래키 지정방법 CREATE TABLE Employee () () 안에 PRIMARY KEY (DNUMBER,DLOCATION), -> 프라이머리 키 지정 FOREIGN KEY (DNUMBER) REFERENCES DEPARTMENT(DNUMBER) ->외래키 지정방법 ON DELETE SET NULL ->참조대상의 필드값이 삭제되면 참조하고있는 필드는 NULL값으로 ON DELETE SET CACADE ->참조대상의 필드값이 삭제되면 참조하고있는 필드도 삭제 ON UPDATE SET CASCADE ->참조대상의 필드값이 업데이트되면 참조하고있는 필드도 자동으로 업데이트 위의 ON DELETE SET~ 부분은 외래키 쓰는 부분인 REFERENCES ~ 바로뒤에 ,(COMMA) 없이 이어서 써주고 다 써준후에 괄호를 닫아주면 (CREATE TABLE EMPLOYEE 하고 열어준 괄호를 이때 닫아준것 join (일단 흐름 이해

2022년 10월 22일
·
0개의 댓글
·