TIL
-
2025.10.16 쿼리 튜닝, 인덱스TIL 2025. 10. 16. 23:53
2024.07.10~11 Query Tuning쿼리 튜닝을 해야 하는 일이 있다. 쿼리에서 불필요한 join이 있는지 확인하고 삭제 처리를 하자.group by 절까지 삭제가 가능할 수 있다.임시 테이블 사용 가능성이 있어 삭제할 수 있음 하자group bgisungcu.tistory.com 2025.04.16 huge table어제 이야기했던 것을 마저 이야기해 보겠습니다.로우가 많아져서 느려지는 원인에 대한 이야기를 했습니다.조회 검색 시 데이터를 읽을 때, 가령 인덱스가 커서 버퍼 풀에 전부 적재되지 않아gisungcu.tistory.com 이전에도 몇 번 다뤘던 주제.인덱스의 데이터 타입이 클수록 한 데이터 페이지(보통 16KB)에 들어가는 인덱스 수가 줄어들어 더 많은 i/o 발생할 수 있다...
-
2025.09.10 북마크 정리 3TIL 2025. 10. 2. 00:01
빅뱅 배포, QA는 어떻게 살아 남았나: GMS 프로젝트 테스트 전략 백서 | 올리브영 테크블로그물류 시스템 구축 성공의 열쇠: 설계부터 E2E 테스트, 실시간 품질 모니터링까지oliveyoung.tech 제로베이스 WMS 구축기: Kafka 기반 분산 물류 시스템 설계와 Out-of-Order Events 해결 | 올리브영 테크해외 고객에 이븐하게 K-뷰티를 보급하기 위한 자체 글로벌 물류 시스템의 기술적 여정oliveyoung.tech 올리브영 물류 시스템의 진화 - 고객 경험의 시작과 끝을 함께하다 | 올리브영 테크블로그올리브영의 물류와 재고 그리고 배송 이야기oliveyoung.techOMS, WMS 등 물류에 대해서 이야기하고 있다.WMS내제화에 대한 이야기가 많은데, 같은 도메인이라 재미있..
-
2025.09.06 쿼리 튜닝 / Virtual ColumnTIL 2025. 9. 6. 18:04
MySQL :: MySQL EXPLAIN ANALYZEMySQL 8.0.18 was just released, and it contains a brand new feature to analyze and understand how queries are executed: EXPLAIN ANALYZE. What is it? EXPLAIN ANALYZE is a profiling tool for your queries that will show you where MySQL spends time on your quedev.mysql.com 쿼리 실행계획을 볼 때 Explain만 사용했다가.ANALYZE를 알게 되었다.실제 실행을 통해 몇 번의 loop를 도는지 where절이 언제 실행되는지를 알 수 있어서 병목 ..
-
2025.09.04 북마크 정리 2TIL 2025. 9. 4. 23:59
이번 북마크 정리는 트래픽과 대용량 구성이다.예전에는 많은 트래픽을 겪어보고 싶다는 생각을 가졌다. 그러다 현재 회사 구조에서 어떻게 대규모 트래픽을 핸들링해야 할지 혼자 고민하고 글을 써보니, 막연했던 것이 할만하다는 생각을 했다.그래서 지금은 그걸 쫒기보다는 모든 일에 재미만 있으면 해보고 싶다는 마음이 드는 것 같다.다는 못 읽고 일단 카테고리별로 모아보았다. '대규모 트래픽 경험' 이라는 환상 - 1부어떤 기대가 있었는지는 모르겠지만, 다 듣고나면 환상이 깨질지도velog.io 지루한 코드로 10억 웹 요청을 처리한 경험 | GeekNews미국 메디케어 건강보험 플랜 비교 시스템을 재구축하며, 검증된 기술(Postgres, golang, React 등) 로만 구성된 단순한 구조로 10억 건 ..
-
2025.09.03 북마크 정리 1TIL 2025. 9. 3. 23:21
북마크를 정리하면서 읽어야지~ 하고 남겨놨던 애들을 읽어버리고 있다. Steve Wozniak: 나에게 인생은 성취가 아니라 행복에 관한 것이었음 | GeekNews나는 애플에서 얻은 부를 모두 기부했다. 왜냐하면 부와 권력은 내가 살아가는 이유가 아니기 때문이다. 나는 많은 즐거움과 행복을 누린다. 내가 태어난 도시인 산호세에서 중요한 박물관과 예news.hada.io 멋진 포인트.행복은 미소에서 찡그림을 뺀 값이라는 말은 좋은 말인 거 같다.돈에 대한 생각은 좀 다른데, 돈은 많은 문제를 해결해주고 갈등과 고난에서 쉽게 빠져나올 수 있게 해 준다.행복은 자기 자신이 정하는 것이긴 하지만.. 매일메일 - 기술 면접 질문 구독 서비스기술 면접 질문을 매일매일 메일로 보내드릴게요!www.maei..
-
2025.09.03 lru cacheTIL 2025. 9. 3. 00:09
LRU Cache (Part II- implementation)Introductionmedium.com 구현 시 head와 tail에 더미 노드를 넣는다.null로도 구현할 수 있는데, 예외 처리등이 들어가고 코드가 복잡해진다.첫 노드를 넣을 때 head와 tail이 모두 동일 노드가 되고, 잘 처리하지 않으면 루프에 갇히게 된다. 이런 것을 처리하기보다 더미 노드를 넣어 버그를 줄일 수 있다. 이걸 sentinel node라고 부르더라.고집하기보다 더 좋은 방향이 있다면 선택을 해야 한다. linked list로 처리하면 헤드와 테일에 추가할 때 O(1)이 된다.이 구조로 LRU를 알 수 있다.linked list만으로는 값을 찾을 때 O(N)이 되므로 Map을 사용해 O(1)을 충족하도록 한다. 요..
-
2025.07.14 분산 트랜잭션 구조로 생각TIL 2025. 7. 14. 22:33
이전 이야기를 이어서 해보면..재고 트래픽을 처리하기 위해서 레디스를 전면에 배치했다.주문 전에 재고를 확인하고 재고 확인이 되면 주문 서비스로 이벤트가 전파되는 식이었다.근데 구조를 다시 생각해 보니 역으로 주문 서비스에서 재고 서비스를 호출하는 것이 맞아 보인다. 만약 결제까지 생각해보자.지금 구조에서는 재고 차감 후 결제 이벤트를 호출하거나, 결제 API를 호출해야 하는데, 이상한 구조이다.결제와 재고는 동기적으로 처리하고 주문완료 후 예약한 재고를 마감하고, RDB에도 반영하는 절차가 되어야 할 거 같다. 결국 분산 트랜잭션을 주문 서비스 내부에서 직접 처리하거나, 앞단에 오케스트레이터를 두어 재고 차감 => 결제 => 주문 완료 이벤트 흐름을 관리해야한다.주문 서비스가 오케스트레이터의 역할까지 ..