데이터베이스
-
[MYSQL] MYSQL explain 알아보기데이터베이스/MYSQL 2023. 6. 26. 03:14
시작하며 프로젝트를 진행하면서 DB에 대한 기본적인 지식이 부족하다는 걸 너무 많이 느꼈으며, DB에서 어떻게 쿼리를 생성하고 실행하는지에 대한 의문점이 생겼습니다. 그러던 와중 MYSQL explain(실행계획)을 알게 되었고, explain을 어떻게 사용하는지를 기록하려 합니다. MYSQL EXPLAIN 이란? MYSQL EXPLAIN 은 MYSQL DATABASE가 어떻게 데이터를 찾을 것인가에 관련해 EXPLAIN 해주는 명령어이며, DB가 데이터를 찾아가는 과정을 알아보기 쉽게 DB결과 셋으로 보여주는 것입니다. MYSQL EXPLAIN을 쓰는 이유 DB스키마를 생성 후, 쿼리를 날렸을 때 성능상 문제가 있거나 속도가 저하되는 부분이 있다면 스키마를 수정할 수 있다. 하지만 스키마를 수정했을 때..
-
[typeORM] typeORM 넘어져보기 (1:1 관계와 1:N관계)데이터베이스/typeORM 2023. 6. 17. 09:52
시작하며 현재 진행 중인 프로젝트에서 OrderItem - Product엔터티의 관계설정 진행 중 마주친 문제와 해결 방법을 기록하려 합니다. 마주친 문제 OrderItem과 Product엔터티는 1:N관계를 맺고 있었고, OrderItem에 ProductId는 외래키로서 Product엔터티의 id를 참조하고 있었습니다. 개발 진행 중 OrderItem이 Product의 정보를 하나만 갖고 있으면 되는 상황이라 판단했고, 두 엔터티 간의 관계를 1:1로 수정하고 데이터를 삽입하여 테스트를 진행하는 도중 마주친 에러와 알게 된 사실, 해결한 방법을 기술하려 합니다. 두 엔터티 관계) 위 두 엔터티를 보면 OrderItem테이블에 FK가 생성될 것이고, FK의 필드 이름은 procudtId입니다. Produ..
-
[typeORM] typeORM 넘어져보기 (상속된 엔터티에서쿼리빌더 사용)데이터베이스/typeORM 2023. 6. 1. 12:40
시작하며 현재 모든 엔터티의 구조는 CoreEntity를 상속하고 있고, CoreEntity의 Column은 id, createdAt, updatedAt, deletedAt으로 구성되어 있습니다. typeORM를 사용하면서 다양한 방식으로 사용하는 방법을 기록하려 합니다. 마주친 문제 Product와 RewardSetting 엔터티는 1:1 관계를 맺고 있고, Product 테이블의 mall_id 칼럼은 RewardSetting의 id의 칼럼과 물려있습니다. 구현사항은 Product가 softdelete 되었을 때, RewardSetting도 함께 softdelete 되는 기능을 구현하던 중 쿼리에서 select를 2번 사용하는 현상이 발생했고, 쿼리 빌더를 사용했을 때 예상치 못한 에러를 맞닥트렸습니다..