본문 바로가기
반응형

CS19

RDB Join 방식 Join 두 테이블을 합치는 과정 대부분 정규화를 거치게 되면 1:N(OneToMany/ManyToOne), 1:1(OneToOne)관계를 가지게 됩니다. 이런 연관관계를 DB측에서는 relation관계라고 표현합니다. Join 방식 Nested Loop방식 mysql이 많이 사용하는 방식 8.0.18버전 이전에는 mysql 의 유일한 join 방식입니다 먼저 처리될 table(drivinig table)의 row수가 작을 수록 성능적인 이점을 가져갑니다 이유 nested loop에서는 index가 없을 경우 2중 for문 처럼 조회 하게 됩니다. 만약 driving table의 row가 커질 수록 outer table의 전체 조회 횟수가 증가 하기 때문입니다. index가 있을 경우 random acc.. 2021. 12. 9.
NamingLock을 이용한 동시성 이슈, Deadlock query 이슈 해결 동시성 이슈 + Deadlock query 이슈 해결 이슈 발생 종류 : deadlock, race condition 간단하게 Entity 연관관계를 설명하자면 Food User관계 입니다. 사용자가 음식사진과 정보를 보고 좋아요를 누르는 기능입니다. (facebook, instargram과 동일한 기능) 발생한 이슈는 동일한 food에 여러 사용자가 like를 누를 경우 dead lock 이슈와, like Entity에 적제된 row수와 food에 반정규화로 설정한 numberOfLikes 컬럼의 값과 불일치 이슈가 발생 비즈니스 로직 간단한 Table 구조 간단한 Entity 구조 @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) .. 2021. 12. 1.
DB Isolation 정의 동시에 여러 transaction을 처리될 때 특정 transaction에서 변경하거나 조회할 수 있도록 허용하는 level 종류 Read Uncommitted Read Commited Repeatable Read Serializable 특징 격리 수준이 높아질 수록 성능이 떨어집니다 트랜젝션을 순서대로 실행하면 문제가 생기지 않지만 성능 이슈로 하위 level의 격리 수준을 사용하고 있습니다. 잠금 시간을 최소화 하는 방식을 체택하는 것을 추천 -> 성능이슈가 발생 Transaction race codition으로 발생하는 문제들 종류 dirty read/write Non-repeatable read/Read skew 변경 유실 한 transaction의 결과가 다른 transaction의 쿼리에.. 2021. 10. 30.
Mysql Replication 기본 사용 기술 MySQL 5.7 Docker docker-composer Replication 정의 DB의 저장된 data가 손실될 경우를 대비해서 저장소(Storage)를 복제하는 것 특징 구성 master, slave 구조를 가짐 master : main db로서 실제 application 요청을 처리하는 DB slave : backup db 부하 분산 slave를 읽기 전용으로 설정하게 되면 부하를 분산시켜 DB에 부하를 줄일 수 있음 설치 방법 Docker와 docker-composer로 Mysql 설치 Docker로 사용하지 않고 docker-composer를 선택한이유 docker로 container 2개를 각각 생성할 경우 network를 생성해서 연동해야합니다. 이유 docker로 con.. 2021. 10. 6.
반응형