분류 전체보기
-
Lock에 대해 알아보기: Gap Lock 2글또 2024. 8. 30. 00:37
0. 들어가며이전 글에서 Gap Lock에 대해 알아보았습니다.단순 INSERT 문은 Gap Lock을 걸지 않는다는 것을 알게 되었습니다.다만, INSERT 문은 Gap에 대해 Insert Intention Lock을 건다는 사실도 확인했습니다.Insert Intention Lock은 Gap Lock과 유사하지만, 범위가 겹치지 않는다면 INSERT가 가능한 Lock입니다. 공식 문서를 살펴보던 중, INSERT로 인해 Deadlock이 발생하는 예제를 발견했습니다. INSERT가 Gap Lock을 사용하지 않는다고 알고 있었는데, 어떤 이유로 문제가 발생했는지 궁금해졌습니다. 오늘은 공식 문서의 예시를 통해 이 문제를 이해해보도록 하겠습니다 💡 LOCK_MODE 데이터 확인S, X : 넥스트 키..
-
2024.08.28 system design interviewsTIL 2024. 8. 28. 23:50
I conducted system design interviews at Meta. Here’s how to prep.When coordinating your interview at Meta (formerly Facebook), you’ll be asked whether you want to do a System Design Interview (“Pirate”)…grokkingtechinterview.com시스템 디자인 면접에서는 커뮤니케이션이 중요합니다. 커뮤니케이션을 통해 명확한 요구사항을 파악해야 하고 특정 컴포넌트에 대해서 깊이 있는 지식을 가지고 있다고 어필해야 합니다.디자인 후 질문 시간을 충분히 남겨둬야 깊은 커뮤니케이션을 할 수 있다고 한다. 질문과 예제를 보면 요구사항을 정리하고 기능적 ..
-
2024.08.23 Deadlock on rollback, but not on commit, when using ON DUPLICATE KEYTIL 2024. 8. 23. 22:37
MySQL :: MySQL 8.4 Reference Manual :: 17.7.3 Locks Set by Different SQL Statements in InnoDB17.7.3 Locks Set by Different SQL Statements in InnoDB A locking read, an UPDATE, or a DELETE generally set record locks on every index record that is scanned in the processing of an SQL statement. It does not matter whether there are WHERE conditions indev.mysql.com오늘은 insert on duplicate key update를 봤습..
-
재고 정합성이 걱정되어서 써보는 글(MVCC)글또 2024. 8. 21. 23:36
0. 들어가며안녕하세요.이번에는 회사에서 개발하고 있는 재고 시스템에서 고민했던 점을 써보려고 합니다.내용적으로는 MVCC와 lock에 대한 이야기입니다. 전체적인 개념이 아닌 제가 궁금했던 점만 기술하니 참고 바랍니다.이 글은 MySql 5.6의 기본설정인 innodb와 repeatable read를 전제로 합니다. 갑자기 궁금해졌다MVCC의 목적Update Where... / Delete Where... (Consistent Nonlocking Reads)우리의 재고 정합성을 위해 무엇을 해야 하는가 1. 갑자기 궁금해졌다.새로 개발하고 있는 재고 관리 시스템에서 여러 명이 동시에 재고를 이동시키면 문제가 없을까? 문제가 없는 경우는 유저가 한 명이고 순차적으로 기능을 실행시켜야만 가능한 이야기입니..
-
2024.08.20 foreign keyTIL 2024. 8. 20. 23:35
foreign key 에 의한 부모, 자식 테이블의 잠금관계http://blog.naver.com/parkjy76/220588832494 에서도 잠깐 언급을 했는데 foreign key 제약을 사용할 경우...blog.naver.com오늘도 외래키에 대해서 봤습니다..외래키로 인해서 dead lock이 나는 경우가 있습니다.쿼리에 사용된 외래키에 s lock을 걸기 때문입니다.서로다른 트랜잭션이 서로 부모,자식 테이블에 잠금을 획득하려할 때 발생할 수 있습니다.잠금 해결법에는 트랜잭션 시작시 사용될 잠금을 모두 획득한 후 쿼리를 진행하는 방법이 있을 거 같습니다.
-
2024.08.19 foreign keyTIL 2024. 8. 19. 22:50
MySQL :: MySQL 8.4 Reference Manual :: 1.7.2.3 FOREIGN KEY Constraint Differences1.7.2.3 FOREIGN KEY Constraint Differences The MySQL implementation of foreign key constraints differs from the SQL standard in the following key respects: If there are several rows in the parent table with the same referenced key value, InnoDB performs adev.mysql.com 다는 못 읽었습니다. 주변 사례를 보면 테이블에 외래키 제약조건을 걸지 않고 운영하..
-
2024.08.16TIL 2024. 8. 16. 23:00
좋은 코드 설계를 위한 답없는 고민들 - Yun Blog | 기술 블로그좋은 코드 설계를 위한 답없는 고민들 - Yun Blog | 기술 블로그cheese10yun.github.io 안티패턴이라고들 하지만 사내에서 사용하는 이유가 명확하고 약속되어 있다면 괜찮다고 생각합니다.(근데 거의 관성이죠..)오히려 그런 패턴을 지키다 회사의 성장을 가로막을 수도 있다고 보기 때문입니다.제가 스타트업에서 일해서 그럴 수도 있습니다.회사가 큰 회사, 성장을 하면 언젠간 바퀴를 갈아끼우는 일을 해야하지 않나?라는 생각입니다 ..
-
2024.08.13 ~ 14 Multiple-Column IndexesTIL 2024. 8. 14. 22:15
https://dev.mysql.com/doc/refman/8.4/en/multiple-column-indexes.html MySQL :: MySQL 8.4 Reference Manual :: 10.3.6 Multiple-Column Indexes10.3.6 Multiple-Column Indexes MySQL can create composite indexes (that is, indexes on multiple columns). An index may consist of up to 16 columns. For certain data types, you can index a prefix of the column (see Section 10.3.5, “Column Indexes”). Mdev.mysql...