[정규화, join] ∙정규화 -데이터 중복을 최대한 줄여 데이터를 구조화하고 논리적으로 저장하는 방법 ∙무결성 -테이블에 있는 모든 행들이 유일한 식별자를 갖는 특성 ∙join -두 개 이상의 테이블이나 데이터베이스를 연결하여 검색하는 방법 ➀INNER JOIN ➁LEFT OUTER JOIN ➂RIGHT OUTER JOIN ➃FULL OUTER JOIN ➄CROSS JOIN ➅SELF JOIN [인덱스] ∙인덱스 -자주 사용하는 데이터의 주소를 메모리에 비트리 자료구조로 색인화해서 올림 ∙인덱스를 조회하는 과정(레인지 스캔<->풀 스캔) -인덱스 페이지를 참조해가며 리프 노드에 도착해 적은 범위의 데이터에서 탐색 (루트 노드->브랜치 노드->...->리프 노드) ∙인덱스를 선정하는 기준 -기수성이 높은 것. 종류의 수가 많은 컬럼. 범위를 잘게 나눠 레인지 스캔에 유리 ∙인덱스가 유리/분리할 때 ➀SELECT(유리): 대용량 데이터에서 풀스캔을 레인지스캔하게 해서 유리 ➁INSERT(분리): 인덱스도 수정해줘야돼서 분리 ➂DELETE(분리): 실제 삭제되는 것이 아니라 사용 안함처리해서 불필요한 용량 증가 ➃UPDATE(분리): DELETE하고 INSERT를 사용해야 해서 분리 |
[트랜잭션] ∙트랜잭션 -데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위 -작업 단위에 속하는 쿼리 중 하나라도 실패하면 모든 쿼리문을 취소하고 Rollback ∙이론적인 특징 ➀원자성: 트랜잭션이 DB에 모두 반영되거나 혹은 전혀 반영되지 않아야 된다 ➁일관성: 트랜잭션의 작업 처리 결과는 항상 일관성 있어야 한다 ➂독립성: 둘 이상의 트랜잭션이 동시에 병행 실행되고 있을 때 어떤 트랜잭션도 다른 트랜잭션에 끼어들 수 없다 ➃지속성: 트랜잭션이 성공적으로 완료되었으면 결과는 영구적으로 반영되어야 한다 ∙로그 ➀Undo 로그: 변경 전의 값을 기록 ➁Redo 로그: 변경 후의 값을 기록 ∙회복 ➀롤백: Undo 로그를 보고 이전 값으로 변경 ➀예상치 못한 오류: Redo 로그를 보고 일관성 있게 만들고 롤백 [트랜잭션 격리수준] ➀read uncommitted: 다른 트랙잭션에서 수정중인 데이터 읽기 dirty, non-repeatable, phantom read 발생 ➁read committed: 커밋 단위로 데이터 읽기 non-repeatable, phantom read 발생 ➂repeatable read: 한 트랙잭션에서 동일한 값 읽기 phantom read 발생 ➃serializble: 다른 트랜잭션에서 아예 접근을 허용하지 않음 완벽한 읽기 일관성 모드 제공 |