본문 바로가기

CS/DB & SQL7

[기술면접] DB | 데이터베이스 정규화 💡 정규화란 무엇이고 장점과 단점은 무엇이 있을까요? 정규화는 ERD 내에서 중복 요소를 찾아 제거해나가는 과정이다 정규화 방법 : 1) 1차. 2차 3차. 보이스코드 정규화는 함수적 종속성에 근거 2) 4차 정규화는 다치 종속을 제거 3) 5차 정규화는 조인에 의한 이상현상을 제거하여 정규화를 수행합니다. 👍장점 : 정규화를 통해 입출력 데이터의 양을 줄여 성능을 향상시킵니다. 입력/수정/삭제 시 성능은 항상 향상됩니다. 유연성 증가: High Cohesion & Loose Coupling 원칙에 충실해짐 재활용 가능성 증가: 개념이 세분화됨 데이터 중복 최소화 👎단점 : 정규화로 인해 조회 시 처리 조건에 따라 성능 저하가 발생할 수도 있습니다 데이터 조회 시 조인을 유발하여 CPU와 메모리를 많이 .. 2023. 9. 10.
[기술면접] DB | Nested Loop, Sort-Merge, Hash Join 💡 Nested Loop, Sort-Merge, Hash Join JOIN연산 SQL명령문에 의해 여러 테이블에 저장된 데이터를 한 번에 조회할 수 있게 해주는 DBMS의 기능 Nested-Loop Join 2개 이상의 테이블에서 하나의 집합을 기준으로 다른 row를 조합하는 방식 선행 테이블의 row를 하나씩 액세스하여 연결된 값을 조인한다 ⭐️특징 : 좁은 범위에 유리한 성능 순차처리, random access위주 후행 테이블에는 조인을 위한 인덱스가 생성된다 실행 속도 = 선행테이블 크기 * 후행 테이블 접근횟수 📌주의 : 데이터 랜덤 액세스 = 결과가 많으면 느려짐 Join index가 없거나, 검색 조건이 join범위를 줄여주지 않으면 비효율적임 row가 적은 쪽을 선행(Driven)테이블로 설.. 2023. 9. 7.
[기술면접] DB 문답 | index 상세 💡 index를 어느 column에 사용하는 것이 좋을까요? INDEX는 어떤 컬럼에 설정해야할까? 인덱스는 where 절에서 자주 조회하고 수정 빈도가 낮으며 데이터 중복이 적은 컬럼을 선택하는 것이 좋다. join 조건으로 자주 사용되는 컬럼도 인덱스로 사용하면 좋다. index는 데이터의 양이 많을수록 성능이 향상된다. 단, 한 테이블에 인덱스가 너무 많으면 데이터 수정 시 소요시간이 커지므로 주의. 또한 성별처럼 데이터 중복이 높은 값은 인덱스를 생성하는 것이 크게 의미가 없다. 왜냐하면 인덱스의 이점보다 추가 저장공간이나 데이터 수정에 대한 성능 저하가 더 크기 때문이다. '클러스터형 인덱스'와 '보조 인덱스' Clustering index : 특정 컬럼을 기본키로 지정하면 자동으로 인덱스가 생.. 2023. 9. 5.
[기술면접] DB 문답 | Transaction의 Lock, Index 💡 Transaction과 비관적 락, 낙관적 락 DB를 조작하며 동시에 같은 데이터 row에 접근할 때, 서로 충돌하여 데이터의 무결성을 해치는 상황이 발생할 수 있다. 이를 방지하는 것이 transaction이고, transaction은 해당 데이터에 lock을 거는 방식으로 동작한다. lock에는 두가지 방법이 있는데, 말그대로 자원 경쟁을 비관적으로 보는 것이 비관적 락. 낙관적으로 보는 것이 낙관적 락이다. 비관적 락(pessimistic lock) 문제가 발생할 것이라고 미리 생각하고 트랜잭션이 시작될 때 예방책의 Lock을 걸어주는 방식 비관적락 에는 Shared Lock, Exclusive Lock이 있다 Shared Lock 공유락 : = Read Lock 트랜잭션이 읽기를 할때 사용하는.. 2023. 9. 4.