CS/DB

    [DB] Connection Pool

    [DB] Connection Pool

    * 의문 : https://sidorares.github.io/node-mysql2/docs/examples/connections/create-connection createConnection | QuickstartFor queries please see the Simple Queries and Prepared Statements examples.sidorares.github.io공식문서 연결방법에 createConnection vs createPool 두 방법이 있길래, 비교해보고자 한다.* create Connection의 단점 db 연결비용은 매우 비싸다.이를 요청이올때마다 연결을시작하고요청이 끝나면 연결을 끊고 ... 반복하는게 너무 비효율적이고 비싸다. * 해결 : 커넥션 풀 * 개념커넥션 풀 ..

    [DB] char VS varchar 선택기준

    [DB] char VS varchar 선택기준

    https://www.inflearn.com/course/lecture?courseSlug=real-mysql-part-1&unitId=226561&tab=curriculum 학습 페이지 www.inflearn.com* 잘못된상식 : 무조건 varchar이 좋다. * varchar로 저장 && 업데이트 하는경우ABCD 를 ABCDE로 수정 -> db는 implace로 해당자리그대로 수정가능한지 체크 -> 불가능하면 delete marking && 새로운 빈공간탐색후 저장단점 : 단편화문제 * 해결 : char(10) 으로 선언미리 10칸이 할당되므로 그대로 해당자리에 ABCDE로 수정가능함. * 결론 길이가 제한적이고 (7~10자) && 자주 변경되는 컬럼의경우(ex: indexed 컬럼)char로 선언..

    where IN 절의 한계, 해결

    where IN 절의 한계, 해결

    * 한계 : 100개가 넘는경우, 풀스캔을함* 해결 : In절에 담는 값을 Promise.all을 이용해 분할처리(20개씩) ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ이전과는 달리 이번에는 where id in (ID) 에 포함되는 ID의 개수가 100개를 초과해서 인덱스를 사용하지 못하고 테이블 풀 스캔을 하는 쿼리의 문제였습니다.위 쿼리는 장바구니, 구매완료, 결제페이지 등에서 신청하는 강의들의 정보를 가져오는 쿼리입니다.(수강바구니)이 쿼리가 평소에는 문제가 없었지만, 이번 이벤트의 경우 125개의 강의를 100% 할인하는 것이 원인이 되었습니다.한번에 125개 강의를 모두 담아서 일괄 결제 (어차피 0원이니) 하는 수강생분들이 급증했기 때문입니다.이 문제..