분류 전체보기
-
2024.09.16 JDBC Internal - 타임아웃의 이해TIL 2024. 9. 16. 23:23
https://d2.naver.com/helloworld/1321 음 회사 로그에 이상한 부분이 있다. 먼저 설정은 socket timeout은 10초이고 statement timeout은 30초이다. 위의 글대로 이해하면 statement timeout은 나와서는 안 되는 예외인데 로그가 찍혀있다.socket timeout과 statement timeout 둘 다 종종 찍혀있지만, statement timeout이 더 길게 되어있으면 socket timeout 보다 먼저 동작한다고 이해했는데..slow쿼리가 뭔가 패킷을 보내고 있는 것인가? 음 StreamingResult라서 의미가 있나? 대용량 쿼리긴 했는데..https://stackoverflow.com/questions/24676111/stre..
-
2024.09.13 hikaricp autoreconnectTIL 2024. 9. 14. 21:19
HikariCP/src/main/java/com/zaxxer/hikari/pool/HikariPool.java at 0a6ccdb334b2ecde25ae090034669d534736a0de · brettwooldridge/Hik光 HikariCP・A solid, high-performance, JDBC connection pool at last. - brettwooldridge/HikariCPgithub.com hikari cp는 커넥션을 얻을 때, 커넥션이 유효하지 않으면 다시 do while로 커넥션을 얻으려고 한다.매 쿼리마다 커넥션을꺼내서 사용할 텐데(저장 위치는 mybatis의 경우는 springManagedTransaction안에 있는데 이건 sqlSession안에 들어있다. 쿼리를 실행할 때..
-
2024.09.12 Check If a UsernameTIL 2024. 9. 12. 00:19
How to Efficiently Check If a Username Exists Among Billions of UsersHow to Efficiently Check If a Username Exists Among Billions of Usersmedium.com 데이터가 수백만 수십억을 넘어가면 RDB의 쿼리만으로는 원하는 성능을 얻을 수 없다. 확장에도 비용적인 한계가 존재하고..레디스를 쓰자니 메모리 비용을 생각할 때 효과적이지는 않다. 여기서는 Bloom filter를 추천.가끔 값이 없어도 있음을 나타낼 수 있음.필터는 비트배열로 이루어져 있고.이름을 작은 집합으로 만들고 이를 필터와 비교해 모든 값이 1이 나오면 유저가 존재한다고 칠 수 있겠습니다. 음 Bloom filter 자료 구조는 ..
-
2024.09.09 Architecture DisadvantagesTIL 2024. 9. 9. 23:38
Lessons Learned From The Trenches Developing Event-Driven SystemsPeople hear phrases like “modern microservices architectures” and jump bandwagons without knowing what they’re getting intoblog.stackademic.com Microservices Architecture, The Hard Parts : Trap of Distributed MonolithWhen conversing with seasoned Senior Software Engineers who leverage Microservices Architecture for their product d..
-
Lock에 대해 알아보기: Foreign key카테고리 없음 2024. 9. 5. 23:04
0. 들어가며안녕하세요.이번에는 Foreign Key로 인해 발생하는 Lock들에 대해 알아보겠습니다.사실, 재고 관리와 관련된 Gap Lock을 공부하다가 이 주제까지 다다르게 되었습니다. 현업에서는 성능상의 이유로 Foreign Key를 사용하지 않는 경우가 있습니다.데이터의 일관성보다는 성능상의 이점을 더 중시하는 선택입니다.관리되는 테이블이 적거나, 데이터베이스 관리자가 있고 데이터 일관성을 충분히 유지할 수 있다고 판단하는 경우라고 생각됩니다.(휴먼 에러는..) 그럼 이제 Foreign Key를 사용했을 때 발생하는 Lock에 대해서 알아보겠습니다. Foreign Key란Foreign Key 사용 시 걸리는 Lock예제데드락마무리 1. Foreign Key란Foreign Key란 두 테이블..
-
2024.09.03 Double ChargesTIL 2024. 9. 3. 23:03
How To Prevent Double Charges In eCommerce PaymentsSeveral topics like this are discussed on my YouTube channel. Please visit. I appreciate your support.medium.com커머스 서비스에서 네트워크 이슈등으로 여러번 결제요청이 들어올때 중복결제가 이뤄질 수 있다는 것 입니다.글에서 제시한 해결법으로는 멱등성을 활용하는 것 입니다.클라이언트에서 uuid를 서버에 제공하면 서버는 uuid를 기반으로 멱등성을 유지합니다.글을 읽다 우려되는 것은 새로고침등으로 uuid가 바뀌면 의미없다는 생각입니다..음 새로고침은 새결제로 판단하는 것이 맞을까요
-
2024.09.02 data replicatedTIL 2024. 9. 3. 00:14
https://medium.com/@_sidharth_m_/how-is-data-replicated-in-distributed-systems-0fe7dd8af904 How is Data Replicated in Distributed Systems?Understanding Single Leader, Multi-Leader, and Leaderless Replicationmedium.com 데이터베이스 복제 관련 글을 읽었습니다. 단일 리더, 멀티 리더, 리더 없음의 방식을 소개합니다. 단일리더는 노드 하나만 업데이트문을 수신하는 것 입니다. 리더 다운 시 리더의 복구를 기다리거나 새 리더를 선출합니다. 그 간격동안은 장애시간이 됩니다. 복제 방법도 동기복제와 비동기 복제가 있습니다. 멀티 리더는 모드 노드..
-
Lock에 대해 알아보기: Gap Lock글또 2024. 9. 1. 13:55
0. 들어가며 안녕하세요. 오늘은 Gap Lock에 대해 알아보려고 합니다.Gap Lock에 관심을 갖게 된 이유는 재고 관련 Locking을 공부하다가 궁금한 점이 생겼기 때문입니다. 재고 정합성을 위해 SELECT FOR UPDATE를 사용하고 있었는데, 이에 대해 참고 자료를 살펴보던 중 SELECT FOR UPDATE를 사용할 때 발생할 수 있는 Deadlock에 관한 설명을 보았습니다.이 Deadlock은 단순한 자원 경합에 의한 것이 아니라, MySQL의 고유한 Lock 특성으로 인해 발생하는 것이었습니다. 그래서 이 문제의 원인인 Gap Lock에 대해 더 깊이 알아보고 공부해 보려고 합니다. Gap Lock 이란 무엇인가?Gap Lock 의 필요이유는 무엇인가?PK, UK예제당근 글 분석 ..