-
[Real Mysql 8.0] 유니크 인덱스아키텍처 및 기술 공부/MySql 2022. 4. 12. 00:30반응형
프라이머리 키는 기본적으로 NOT NULL인 유니크 속성이 부여되지만, 유니크 인덱스는 NULL을 허용할 수 있다. 게다가 NULL은 특정 값이 아니므로 2개 이상 저장될 수 있다.
1. 유니크 인덱스의 쓰기새로운 레코드가 INSERT 되거나, 인덱스 칼럼의 값이 변경되는 경우에는 인덱스 쓰기 작업이 필요하다. 그런데 유니크 인덱스의 키 값을 쓸 때는 중복된 값이 있는지 없는지 체크하는 과정이 한 단계 더 필요하다. 그래서 유니크하지 않은 세컨더리 인덱스보다 느리다.
게다가 유니크 인덱스에서 중복된 값을 체크할 때는 읽기 잠금을 사용하고, 쓰기를 할 때는 쓰기 잠금을 사용하는데 이 과정에서 데드락이 자주 발생한다.
2. 유니크 인덱스 사용 시 주의사항
꼭 필요한 경우라면 유니크 인덱스를 생성하는 것은 당연하다. 하지만 더 성능이 좋아질 것으로 생각하고 불필요하게 유니크 인덱스를 생성하지 않는 것이 좋다.
- 테이블의 같은 컬럼에 유니크 인덱스와 일반 인덱스를 각각 중복해서 생성해 둔 경우가 있는데, 유니크 인덱스는 일반 다른 인덱스와 같은 역할을 하므로 중복해서 인덱스를 생성할 필요는 없다.
- 똑같은 컬럼에 대해 프라이머리 키와 유니크 인덱스를 동일하게 생성한 경우도 있는데, 이 또한 불필요한 중복이므로 주의하자
반응형'아키텍처 및 기술 공부 > MySql' 카테고리의 다른 글
[Real Mysql 8.0] EXPLAIN ANALYZE 실행계획 (0) 2022.04.12 [Real Mysql 8.0] 클러스터링 인덱스 (0) 2022.04.10 [Real Mysql 8.0] B-Tree 인덱스 (0) 2022.04.08 [Real Mysql 8.0] 인덱스 개요 (0) 2022.03.28 [Real Mysql 8.0] Mysql의 격리 수준 (0) 2022.03.25