• [Real Mysql 8.0] 유니크 인덱스
    아키텍처 공부/MySql 2022. 4. 12. 00:30
    반응형

     프라이머리 키는 기본적으로 NOT NULL인 유니크 속성이 부여되지만, 유니크 인덱스는 NULL을 허용할 수 있다. 게다가 NULL은 특정 값이 아니므로 2개 이상 저장될 수 있다.


    1. 유니크 인덱스의 쓰기

     새로운 레코드가 INSERT 되거나, 인덱스 칼럼의 값이 변경되는 경우에는 인덱스 쓰기 작업이 필요하다. 그런데 유니크 인덱스의 키 값을 쓸 때는 중복된 값이 있는지 없는지 체크하는 과정이 한 단계 더 필요하다. 그래서 유니크하지 않은 세컨더리 인덱스보다 느리다.

     

     게다가 유니크 인덱스에서 중복된 값을 체크할 때는 읽기 잠금을 사용하고, 쓰기를 할 때는 쓰기 잠금을 사용하는데 이 과정에서 데드락이 자주 발생한다. 

     

    2. 유니크 인덱스 사용 시 주의사항

     꼭 필요한 경우라면 유니크 인덱스를 생성하는 것은 당연하다. 하지만 더 성능이 좋아질 것으로 생각하고 불필요하게 유니크 인덱스를 생성하지 않는 것이 좋다.

    1. 테이블의 같은 컬럼에 유니크 인덱스와 일반 인덱스를 각각 중복해서 생성해 둔 경우가 있는데, 유니크 인덱스는 일반 다른 인덱스와 같은 역할을 하므로 중복해서 인덱스를 생성할 필요는 없다.
    2. 똑같은 컬럼에 대해 프라이머리 키와 유니크 인덱스를 동일하게 생성한 경우도 있는데, 이 또한 불필요한 중복이므로 주의하자

    반응형

    댓글

Designed by Tistory.