OZIIJIN.log
로그인
OZIIJIN.log
로그인
[내일배움캠프 Spring 4기] 74일차 TIL - 외래키 | 클러스터 인덱스와 논클러스터 인덱스
서예진
·
2024년 3월 17일
팔로우
0
TIL
내일배움캠프 Spring 4기
스파르타내일배움캠프
0
[Spring_4기] 스파르타 내일배움캠프
목록 보기
45/62
오늘의 학습 키워드
외래키
클러스터 인덱스와 논클러스터 인덱스
외래키
외래키는 관계형 데이터베이스에서 나오는 개념
한 테이블의 필드(또는 여러 필드)가 다른 테이블의 기본키(PK)를 가리키는 제약조건이다.
데이터 일관성 유지를 가능하게 해주고 데이터의 무결성을 지켜준다.
하지만, 외래키를 가진다는 것은 DB 입장에서는 제약조건이다. 즉, 제한을 의미한다.
외래키를 사용하지 않는다.
1. 성능상의 문제
외래키를 건다는 것은 DB 입장에서는 제약조건이기 때문에
comment에 userId가 있을 텐데 이 userId가 실제로 존재하는 userId인지를 검사하는게 외래키
데이터 무결성에 도움을 주지만 넣지않는다.
유저가 80억이 있다고 치면 실제로 80억번의 검사를 해야만 데이터 무결성을 알 수 있다.
index라는 개념이 등장
2. 아키텍처적인 문제
서버도 여러대, DB도 여러개를 사용하기 때문에 애초에 외래키를 걸 수 없다.
장점
cascade를 사용하지 않는다. -> 외래키가 없어서 사용할 수 없다.
클러스터 인덱스와 논클러스터 인덱스
클러스터 인덱스
클러스터 인덱스는 테이블마다 1개씩 존재한다.
바로 PK
왜 이름이 클러스터 인덱스? - 물리적으로 배열을 만듦 → 클러스터링 → 클러스터 인덱스
물리적으로 정렬되기 때문에 일반적으로 검색속도가 빠르다.
논클러스터 인덱스
클러스터 인덱스를 제외한 나머지 인덱스는 모두 논클러스터 인덱스이다.
인식하고 있지 않고 있지만, 사실 우리는 논클러스터 인덱스를 이미 사용하고 있었다.
Unique Key
Foreign Key(DB 마다 정책이 다르지만 MySQL은 인덱스가 걸림)
따라서 유니크 키는 인덱스지만, 인덱스라고 해서 유니크 키이거나 FK인건 아니다.
복합키를 왜 쓸까? - 속도 상승(성능) ⇒ 복잡한 기능에서 효과가 있으나 그때가서는 ElasticSerch를 사용하는 것이 좋음
서예진
안녕하세요
팔로우
이전 포스트
[내일배움캠프 Spring 4기] 73일차 TIL - 통합테스트 | @Transactional | @Rollback
다음 포스트
[내일배움캠프 Spring 4기 - 칸반보드 프로젝트] 77일차 TIL - 연관관계 없이 테이블 설계
0개의 댓글
댓글 작성