* 인덱스란
인덱스란 추가적인 쓰기 작업과 저장공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조이다. 데이터베이스에서 테이블의 모든데이터를 검색하면 시간이 오래걸리기 때문에 데이터와 데이터의 위치를 포함한 자료구조를 생성하여 빠르게 조회할 수 있도록 돕고있다.
만약, Index를 적용하지 않은 컬럼을 조회한다면, 전체를 탐색하는 full scan이 수행되어 처리속도가 떨어진다.
* 리플리케이션 / 클러스터링
- 리플리케이션
- 여러개의 DB를 권한에 따라 수직적인 구조로 구축하는 방식.
- 비동기 방식으로 노드들 간의 데이터를 동기화한다.
- 장점 : 비동기 방식으로 데이터가 동기화되어 지연 시간이 거의 없다.
- 단점 : 노드들 간의 데이터가 동기화 되지 않아 일관성있는 데이터를 얻지 못할수 있다.
- 클러스터링
- 여러개의 DB를 수평적인 구조로 구축하여 Fail Over한 시스템을 구축하는 방식이다.
- 동기 방식으로 노드들 간의 데이터를 동기화한다.
- 장점 : 1개의 노드가 죽어도 다른 노드가 살아있어 시스템을 장애없이 운영할 수 있다.
- 단점 : 여러 노드들 간의 데이터를 동기화하는 시간이 필요하므로 리플리케이션에 비해 쓰기 성능이 떨어진다.
* DB정규화란
- 불필요한 데이터를 제거하고 데이터를 논리적으로 저장하기 위해서 사용한다.
- 릴레이션 내에서 중복을 제거하는 과정.
* PK(Primary Key)란
- 데이터베이스 테이블의 설계를 고유하게 식별하는 키
* 대체키(Surrogate key)란
- 테이블을 이루는 컬럼들 가운데 유일하게 식별하기제 적합한 단일 후보키가 없을때 임의의 식별번호롤 이루어진 후보키를 추가할 수 있는데 이를 대체키라고한다.
- 서로게이트를 기본키로 잡을시 단점으로 메인테이블을 찾기 위해 조인을 많이 해야한다.
* 자연키(Natural key)란
- 테이블을 이루는 컬럼들 가운데 의미를 담고 있는 후보키
- 네츄럴키를 기본키로 잡을때 단점으로는 키가 바뀔때가 많다.
* 서브쿼리란?
- SQL문자의 하부절에 쿼리문을 사용하는 것.
- SELECT 결과 양에 따라서 FROM절이나 WHERE 절에 사용할지 선택하여 사용한다.
* 안시쿼리란?
- 표준쿼리 작성법을 뜻한다.
- FROM절에 JOIN을 사요하고 WHERE절에는 검색조건만 명시하여 누가봐도 한눈에 알 수 있는 클린코드이다.
* 트랜잭션이란?
- 하나 이상의 쿼리를 처리할 동안 동일한 커넥션 객체를 공유하여 에러가 발생한 경우 모든 과정을 되돌리기 위한 방법.
* 힌트(HINT)란?
- SQL을 튜닝하기 위한 지시구문. 예) /* ~~~~ */
* 데이터베이스 튜닝
- DB튜닝은 데이터베이스의 구조나 데이터베이스 자체, 운영체제 등을 조정하여 데이터베이스 시스템의 성능흘 향상시키는 작업을 의미한다.
- DB설계튜닝 -> DBMS튜닝 -> SQL튜닝
질문과 피드백은 언제나 환영입니다.
출처 https://mangkyu.tistory.com/93?category=761303 참고하여 작성하였습니다.