[요청내용]
- 2개의 아이템코드의 4년치 리뷰를 전부 뽑아라
[WorkLog]
- 불필요한 필드제거 & 주석입력
- 조회쿼리 중 불필요한 필드에 서브쿼리 오라클 펑션이 조회쿼리 속도를 늦출거라 생각해서 뽑을 데이터 필드만 두고 다 제거함
- 컬럼명으로 필드 역할 구분이 힘들어서 필드에 주석을 전부 달았다.
- 조회 후 암호화필드 확인
- 요청받은 필드 중 3~4의 필드가 암호화 되어있음을 확인
- 복호화할 수 있는 코드가 있는 지 살펴봄
- 암호화 되지 않은 허점있는 Table이 있는지 살펴봄
- => 복호화 할수 있는 방법도 암호화 되어있지 않은 Table도 없다는 것을 확인 (답변: 황M)
- 1시간 이상 날렸다.
- 기본적인 Tunnig
- 현재 요청 받은 내용에선 의미없는 CASE/NVL제거
- 조인 순서 변경 (데이터 많은건 -> 데이터 적은건)
- Where 조건 순서 변경
- => ORCLE에서 From의 Table 혹은 조건절의 순서가 속도에 영향을 미치는 지 확인 필요
- 복잡한 Tunnig
- Try1. 의미없는 Outer join 제거 시도
- Inner Join으로 바꿨을 때 데이터 건수가 미세하게(갯수로 봤을때 0.2~0.3 %) 맞지 않음
- 각 Table에 역할이 뭔지 정확히 몰라서 데이터 갯수가 틀리면 마음대로 바꾸지도 못함
- Index 걸려있나 Check
- Try1 데이터 조회의 주가 되는 Table들만 Index가 걸려있나 확인
- => 걸려있을 만한 거는 다 걸려 있음
- => 걸어야 하나 판단이 안되는 부분이 있음
- 필드가 뭔 역할인지 파악이 안됨
- Try1 데이터 조회의 주가 되는 Table들만 Index가 걸려있나 확인
- Try1. 의미없는 Outer join 제거 시도
- 데이터 조회 속도&데이터 조회 건수 확인
- 느리긴 하지만 일회성 쿼리이기 때문에 대충 시간걸려서 뽑자고 판단
- =>이게 미스였다(나중에 안 사실)
- 내가 궁극적으로 할일은 DB Tool을 이용해서 Data를 추출하는 것 데이터를 추출하게 되면 예를 들어 총데이터가 만건이고 한번에 조회되는게 500건이면 한번에 조회해서 CSV에 쓰는 것이 아니라 500건 조회해서 CSV에 쓰고 또 조회하고를 반복 즉, 5분 정도 걸리는 쿼리를 20번 돌려야 함
- =>이게 미스였다(나중에 안 사실)
- 쿼리의 속도자체를 빠르게 할 방법이 필요하다
- 방법을 못찾아서 도움을 받음(황M)
- 도움 내용 : where 조건에서 아이템를 통해서 조회하는 것이 아닌 아이템 코드를 통해 상품코드 조회 후 in절에 넣어서 쓰기
- notepad++ 정규식 표현 & 바꾸기 이용
- 이걸 어떻게 알았을까...?
- 시스템에서 아이템코드로 검색하는 것이 일반적이지 않음 상품코드로 검색하는 게 일반적임 아이템코드 필드가 추가된 인덱스들 보다 상품코드가 추가된 인덱스들의 우선순위가 높음 쿼리플랜에서도 메인테이블 조회에 cost가 많이 먹음
- 결론은 직관적으로...경험적으로...?
- 최M에게 Query전달 & 데이터 추출 요청
- 최M 님은 암호화된 테이블 조회권한이 있음
- DataGrip 으로 뽑은 CSV로 파일 전달받음
- 한글 다 깨짐
- 내용이 줄이 바뀌며 잘려서 나옴
- Try1. 메모장의 Charset / Notepad++ 정규식 교체 / Excel의 Data불러오기
- 기타등등 인터넷에 나와있는거 전부 시도했지만 데이터가 깔끔하게 안나옴
- 10만건의 데이터를 전부 다 확인하고 하나하나 고치는 거 불가
- 쿼리 다시 뽑는 요청은 죄송스러움
- 분명 DataGrip에서 CSV 추출 옵션이 있을 거라 생각함
- 기타등등 인터넷에 나와있는거 전부 시도했지만 데이터가 깔끔하게 안나옴
- Try2. DataGrip도 Intelli J도 Jetbrain 회사 거니까 뭔가 될거라 생각하고 구글링
- IntelliJ에서 CSV 파일열고 -> Edit>Edit as Table -> Export
- 데이터 이쁘게 잘 뽑힘
- IntelliJ에서 CSV 파일열고 -> Edit>Edit as Table -> Export
[Todo]
- 각 Table 및 필드가 이 무슨 역할을 하는 지 그리고 어떤 필드가 중요한지 대충은 알고 있어야 함
- Query plan을 보고 튜닝하는 법
- 서비스단 쿼리 튜닝
- ERD 찾아봐야함 =>
[느낀점]
- 업무와 Table을 정확히 모르니까 이런 한시간짜리 잡무를 8시간을 하고 있네 다음부터는 시간단축하자!
'70. 회사일 > 79. 잡다구리' 카테고리의 다른 글
[DEV] CDN 퍼지 주소가 일몰로 신규 주소 변경 : 생소한 단어들의 향연 (0) | 2022.12.26 |
---|---|
[Error]오래된 시스템 환경설정 (0) | 2022.12.13 |
[Error]iFrame과 jQuery 로딩 시점으로 인한 오류 (0) | 2022.12.13 |
[DEV]SmartEditor를 이용한 HTML Contents 입력 (0) | 2022.12.13 |