2024. 8. 21. 16:52ㆍTIL
한 테이블에 많은 칼럼들이 존재할 경우 데이터가 물리적으로 저장되는 디스크 상에 넓게 분포할 가능성이 커지게 되어 디스크I/O가 대량으로 발생할 수 있고, 이로 인해 성능이 저하될 수 있다. 따라서 트랜잭션이 접근하는 칼럼유형을 분석해서 자주 접근하는 칼럼들과 상대적으로 접근 빈도가 낮은 칼럼들을 구분하여 1:1테이블로 분리하면 디스크I/O가 줄어들어 성능을 향상 시킬수 있다.
트랜잭션은 항상 전체를 통합하여 분석 처리하는데 슈퍼-서브타입이 하나의 테이블로 통합되어 있으면 하나의 테이블에 집적된 데이터만 읽어 처리할 수 있기 때문에 다른 형식에 비해 더 성능이 우수하다.(조인 감소)
데이터 조작어 (DML): SELECT,INSERT,UPDATE, DELETE
데이터 정의어 (DDL): CREATE, ALTER,DROP,RENAME
데이터 제어어(DCL): GRANT, REVOKE (DB에 접근하고 객체들을 상요하도록 권한을 주고 회수하는 명령어)
트랜잭션 제어어(TCL): COMMIT,ROLLBACK
PK는 NULL값을 가질수 없지만 FK는 NULL값을 가질수 있다.
Cascade: Master 삭제시 Child 같이 삭제
Set Null:Master 삭제시 Child 해당 필드 NULL
Set Default:Mster 삭제시 Child 해당 필드 Default 값으로 설정
Restrict: Child 테이블에 PK값이 없는 경우에만 Master 삭제 허용
No Action: 참조 무결성을 위반하는 삭제/수정 액션을 취하지 않음
Automatic: Master 테이블에 PK가 없는 경우 Master PK를 생성 후 Child 입력
Set Null: Master 테이블에 PK가 없는 경우 Child 외부키를 NULL 값으로 처리
Set Default: Master 테이블에 PK가 없는 경우 Child 외부키를 Default 값으로 입력
Dependent: Master 테이블에 PK가 존재할 때만 Child 입력 허용
No Action: 참조 무결성을 위반하는 입력 액션을 취하지 않음
TRUNCATE,DROP을 상요하여 테이블의 데이터를 삭제하면 삭제 데이터에 대한 로그를 남기지 않는다.
TRUNCATE: 데이터를 모두 삭제, 테이블을 최초 생성된 초기상태로 만든다
DROP: 테이블 자체를 삭제
DB 트랜잭션에 대한 격리성이 낮은 경우 발생할 수 있는 문제점
Dirty Read: 다른 트랜잭션에 의해 수정되었지만 아직 커밋되지 않은 데이터를 읽는 것
Non-Repeat: 한 트랜잭션에서 같은 쿼리를 두번 수행하였는데, 그 사이에 다른 트랜잭션이 값을 수정 , 삭제를 함으로써 두 쿼리 결과가 다르게 나타나는 것
Phantom Read: 한 트랜잭션 내에서 같은 쿼리를 두번 수행하였는데 첫번째 쿼리에서 없던 유령 레코드가 두번쩨 쿼리에서 나타나는 것
NULL 값이 포함된 사칙연산의 결과는 무조건 NULL이다
단일행 함수: UPPER(),ROUND() 같이 각 값들에 대해 함수 적용
다중행 함수: SUM(),AVG() 같이 여러개의 값들을 하나의 결과값으로 나타내는 것
COALESCE: 첫번째로 NULL이 아닌 값을 반환하는 함수
SELECT문장의 실행순서
FROM->WHERE->GROUPBY->HAVING->SELECT->ORDERBY
DBMS 옵티마이저는 FROM절에 나열된 테이블이 아무리 많아도 항상 2개의 테이블씩 짝을 지어 JOIN을 수행한다.
'TIL' 카테고리의 다른 글
𝙎𝙌𝙇 (3) (0) | 2024.08.23 |
---|---|
𝙆𝙊𝙏𝙇𝙄𝙉 최종 프로젝트 마무리 (0) | 2024.08.22 |
정규화 ,͎ 반정규화 (0) | 2024.08.20 |
𝙎𝙌𝙇 (1) (0) | 2024.08.19 |
𝑬𝑳𝑩 (𝑬𝒍𝒂𝒔𝒕𝒊𝒄 𝑳𝒐𝒂𝒅 𝑩𝒂𝒍𝒂𝒏𝒄𝒆𝒓) (0) | 2024.08.18 |