전체 글 40

[논문리뷰] Controlled Lock Violation (SIGMOD’13)

학부연구생을 시작하면서 처음 읽은 논문입니다. 그때 작성한 리뷰라 풋풋한 맛이 있는 것 같습니다. 전문적인 시선보다는 그냥 학생이 썼다 생각하고 봐주시길 바랍니다.Locking에 관심있는 사람이라면 꼭 읽어보길 추천드립니다.하지만 아무도 관심 없겠죠......    너무 길어서 노션으로 첨부합니다https://hjinu.notion.site/Controlled-Lock-Violation-71c9cadb29ce4fdc9fdab2ef39110a0e?pvs=4 Controlled Lock Violation | Notion정보hjinu.notion.site  참고https://dl.acm.org/doi/pdf/10.1145/2463676.2465325

DB 2024.09.30

[논문리뷰] Releasing Locks As Early As You Can: Reducing Contention of Hotspots by Violating Two-Phase Locking (SIGMOD ’21)

논문:https://dl.acm.org/doi/pdf/10.1145/3448016.3457294 옛날엔 노션에서 복붙이 됐는데 이젠 안 되네요... 어쩔 수 없이 마크다운으로 내보낸 다음 복붙했습니다.가독성이 좀 안 좋아도 이해 부탁드립니다! # Introduction### 문제 상황 - Hotspot- Hotspot: 작은 수의 레코드(tuples)가 집중적으로 읽히거나 쓰이면서 동시에 여러 트랜잭션이 해당 레코드를 경쟁하는 상황 - 이런 hotspot은 전체 실행 시간 중 일부만 차지하지만, 그 전체 트랜잭션은 Blocking 상태로 만들어 병렬성 저하### 한계 - 2PL- Hotspot은 잠깐 쓰이고 끝나더라도, strict 2PL에서는 트랜잭션이 커밋될 때까지 모든 락을 유지해야 함 - ..

DB 2024.09.30

[MySQL] ERROR: Another process with pid ~ is using unix socket file.

갑자기... 뜬 에러... 진짜 갑자기... 아침부터 급 당황했지만 쉽게 해결할 수 있었다.다른 프로세스가 해당 socket을 쓰고 있다는 뜻.ps -ef 명령어를 쳐도 해당 pid의 프로세스가 뜨지 않는다. 프로세스는 종료됐는데 socket이 release 되지 않는 건 아닐까 싶음. 해결법$ mysql_config --socket$ cd /tmp$ rm mysql.sock.lockmysql_config --socket 명령어를 입력하면 socket 파일의 주소를 알려준다.내 경우에는 /tmp/mysql.sock 였음. 여기로 이동해서 sock.lock 파일을 삭제해준다. 나는 sock 파일도 삭제했다.삭제하면 알아서 다시 생성해준다. 끝! 참고https://velog.io/@ounols/docker%..

DB 2024.09.30

[MySQL] Rollback Pointer 기반의 MVCC 이해하기 - 코드 중심으로

DB의 concurrency control 분야를 연구하면서, innodb의 mvcc 로직을 코드 수준으로 이해할 필요가 있다고 생각하여 공부한 내용을 블로그에 작성해보려 합니다.아래 내용은 제가 직접 찾아보면서 나름의 이해를 바탕으로 쓴 글입니다.저는 일개 학부연구생으로 전문가가 아닙니다. 그냥 워낙 innodb 관련된 글이 없으므로(특히 한국어는) 조금이라도 도움이 되었으면 해서 블로그로 남기는 것이니 참고만 하시는 게 좋을 것 같습니다. 코드 기준은 MySQL-5.7.24 입니다.아래 모든 코드는 실제 코드를 쉽게 이해하기 위해 임의로 작성한 수도코드입니다. Flow만 참고하면 됩니다.    더보기더보기0. 관련 용어 정리 0.1. Clustered Index와 Secondary Index 개념- ..

DB 2024.02.06

[SpringBoot] JPA 오류: No converter found capable of converting from type - 2

JPA native query에서 DTO로 매핑할 때 호환이 잘 안 되면 이런 문제가 발생한다. 그래서 구글링한 결과 Interface로 받아야 한다고 해서, JPA -> Interface -> DTO -> Service 로 받아서 사용하였다. 근데 그냥 Interface만 사용해도 괜찮을 것 같아서 수정했다.사실 위에처럼 DTO, Interface 두 개의 파일이 있는 게 너무 불편했다.. 이전에 시도했던 방법https://kongjino.tistory.com/25 [SpringBoo] JPA 오류: No converter found capable of converting from typeNative Query로 Join 후 두 테이블 이상 select 할 때, entity를 DTO로 매핑하지 못해 발..

SpringBoot 2023.09.11

[VScode] ssh 접속 시, 전체 검색이 안 되고 계속 무한로딩이 될 때

ssh로 우분투에 접속했을 때, 실수로 무한 루프를 돌려버려서 log 파일에 엄청난 양의 로그가 쓰인 적이 있다. 이걸 중지시키는 것도, 파일을 삭제하는 것도 엄청난 에러가 먹었으나... 더 문제는 그 뒤로 vscode가 검색이 안 된다. 전체 검색이 안 된다. 그냥 계속 계속 무한 로딩이 된다. 열려있는 윈도우만 검색이 됐다 안 됐다 그러고...(이게 제일 어이가 없었다) 원인은 vscode가 일을 너무 많이 해서 그렇다는데(확실한 건 아님) 가끔 이런 일이 뜬다고 한다. 구글링하며 찾아본 방법 1. ctrl + Pause 2. 껐다 켜라 3. vscode를 아예 삭제했다가 (data도 삭제) 깔아라 등등 별의 별 짓을 다했지만 결론은 ssh로 접속한 root 폴더 상의 vscode 관련 폴더 모두 삭..

기타 2023.09.08

[SpringBoot] JPA 오류: No converter found capable of converting from type

Native Query로 Join 후 두 테이블 이상 select 할 때, entity를 DTO로 매핑하지 못해 발생하는 문제 해결 방법입니다. JPA로SELECT a, b FROM A a, B b WHER a.id = b.id;같은 쿼리를 보내고, DTO로 받고 싶을 때 문제가 발생한다.   조금 간편한 방법(제가 생각하기에 더 나은 방법)에 대해 2번째 포스트를 올렸습니다.https://kongjino.tistory.com/27 Interface -> DTO -> Service 로 받아서 사용하였다. 근데 그냥 Inter" data-og-host="kongjino.tistory.com" data-og-source-url="https://kongjino.tistory.com/27" data-og-url..

SpringBoot 2023.07.12

[Jest] Typescript + Express + Jest로 Controller 테스트하기 - Mock, Sequelize

2023.05.22 - [분류 전체보기] - [Jest] Typescript + Express + Jest로 Service 테스트하기 - Mock, Sequelize [Jest] Typescript + Express + Jest로 Service 테스트하기 - Mock, Sequelize Express로 새로운 서비스를 작업하던 중, test를 작성해보기로 했다. routes, controllers, services, models 로 나눠진 계층 구조에서 service만 먼저 테스트하려 한다. 환경 설정 모듈 설치 npm install -D jest @types/ kongjino.tistory.com (이전 글에서 이어지는 글입니다) 이번엔 controller에 대한 테스트를 작성해보겠다. 크게 달라지는 ..

Express 2023.05.22

[Jest] Typescript + Express + Jest로 Service 테스트하기 - Mock, Sequelize

Express로 새로운 서비스를 작업하던 중, test를 작성해보기로 했다. routes, controllers, services, models 로 나눠진 계층 구조에서 service만 먼저 테스트하려 한다. 환경 설정 모듈 설치 npm install -D jest @types/jest ts-jest jest-mock jest: 단위 테스트 프레임워크 @types/jest: jest types ts-jest: jest의 ts 모듈 jest-mock: 모킹한 모듈 타입 캐스팅을 간편히 해줌 package.json에 jest 설정을 해준다. "jest": { "transform": { "^.+\\.ts$": "ts-jest" }, "testRegex": "\\.test\\.ts$", "moduleFileEx..

Express 2023.05.22

[SpringBoot] 로그인/세션 등 리액트 연동 문제 해결(2) JWT + 스프링 + 카카오/구글/네이버 로그인, 세션, 스프링 부트와 AWS로 혼자 구현하는 웹 서비스

아무튼 전 편에 이어서 이야기를 해보자면, 리액트의 주소와 스프링의 주소가 달라서 문제들이 생겼었다. 마지막 문제는 세션 문제였다. 그래서 과감히 세션을 버리고 토큰 방식으로 옮겼다. * 방식 나는 스프링 시큐리티를 이용했기 때문에 프론트에서 인가 코드를 직접 이용하고 그러지는 않았다. 스프링이 로그인 과정은 다 해준다. 로그인이 되면 백엔드에서 정보 따서 토큰화 한다음 프론트로 주고, 프론트에서는 토큰 저장해놨다가 백엔드로 보내주고 백엔드는 유효한지 체크해주는 것! 내가 작성한 플로우는 클라이언트는 로그인을 시도한다 (/oauth2/authorization/google) 스프링에서 로그인을 한 다음 사용자 정보를 백엔드로 넘겨준다 백엔드는 사용자 정보를 좋게 JWT에 담아서 얘를 리액트에게 리다이렉트 ..

SpringBoot 2023.01.24