반응형
- MySQL Query Plan2021-10-24 01:50:52오늘은 제가 프로젝트중 작성했던 쿼리들을 실행 계획을 통해 index를 타고 있는지 확인해 보겠습니다. Docker로 MySQL을 띄우고 procedure를 만들어서 1만건 씩 dummy 데이터를 적재하고 조회하겠습니다. (데이터베이스 툴로는 DBeaver를 사용하고 있습니다.) 먼저 코스와 연관된 정보를 함께 조인해서 출력하는 쿼리를 보겠습니다. type column을 보면 locatoin 테이블과 course 좋아요에 대한 쿼리는 인덱스를 타고 있지만 course에 경우 type column이 all로 index를 타지 못하고 있습니다. 풀 테이블 스캔으로 1만건을 다 스캔하고 있는데요 사실 이것은 쿼리도 문제지만 전체 데이터를 다 끌고 오는것도 문제라 생각됩니다. 예시로 1만건으로 들었지만 실제 p..
- Docker MySQL Master - Slave2021-10-15 18:26:20오늘은 MySQL 복제에 대해 블로깅해보겠습니다. 우선 데이터베이스를 왜 복제해야 할까? 라는 생각을 먼저 해볼 수 있을 것 같습니다. 만일 여러대의 서버에서 한 대의 물리 DB를 가리키고 있고 그러한 구조에서 클라이언트의 DB 요청이 많아짐에 따라 데이터베이스 한 대로는 그 부하를 전부 감당하지 못 할 가능성도 있고, 최악의 경우 DB 다운시에 여러 서버에서 해당 DB에 대한 요청이 모두 fail이 날 수 있겠죠 이런 부분에서 SPOF가 될 수 있습니다. 이런 SPOF에 대한 대처로 AWS에서는 master DB 다운시에 slave DB를 master로 승격시켜주는 서비스도 존재하죠 하지만 가장 좋은건 애초에 데이터베이스 한 대가 모든 부하를 감당하지 않도록 분산시키는 것 입니다. 그러기 위해 Read..
- mongoose 색인 오류2020-12-22 23:34:08youtube-clone을 만드는 와중에 동영상과 썸네일 제목을 입력 받는 과정에서 스키마를 2,3번 수정했다. 근데 문제는 이 과정에서 drop collection을 하지않아서 mongodb에서 색인 오류가 나타났다;; 분명 upload폴더에는 사진과 동영상이 업로드되는데 중복 색인이라는 오류를 보고 캠퍼스에서 documents만 지우고 실행해도 되는줄 알았다. 이 오류를 발생시키는 색인은 현 상황에서는 더 이상 보이지 않는 이전 코드에 의해 생성되었을 가능성이 높다 그래서 컬렉션을 drop하니 문제가 되는 색인 지워져서 다시 db insert가 정상 작동되었다. 맨처음에는 몽고db에서 자동으로 생성해주는 id(ObjectId)의 옵션을 혹시 추가로 auto:true로 지정해줘야 하는줄 알았다,,;
반응형