전체 글
-
DB 시스템에서의 동시성 제어 방법성장과정(dev)/DBMS 2024. 12. 20. 16:54
데이터베이스 시스템에서는 동시성 제어를 위해서 주로 사용하는 두가지 방법 MVCC, Lock-Based Concurrency Control 이 있습니다. 1. MVCC (다중버전 동시성 제어)데이터의 여러 버전을 유지하여 트랜잭션이 동시에 데이터를 읽고 쓸 수 있도록 하는 방식입니다.특징각 트랜잭션은 자신만의 일관된 스냅샷을 기반으로 데이터를 읽어, 다른 트랜잭션의 변경 사항에 영향을 받지 않습니다.데이터의 각 버전을 유지하여 읽기 작업이 쓰기 작업과 독립적으로 이루어질 수 있습니다. 트랜잭션은 시작 시점의 스냅샷을 기반으로 데이터를 읽어, 다른 트랜잭션의 변경 사항을 보지 못합니다.트랜잭션이 시작된 시점의 데이터 상태를 기반으로 읽기 작업을 수행하여 일관성을 유지합니다. 또 갭락과 넥스트키 락을 통해 ..
-
데이터베이스 데드락, 공유락, 베타락: 꼭 알아야 할 실무 필수 개념 (JPA)성장과정(dev)/Spring + Java + JPA 2024. 12. 13. 16:10
Lock 의 종류 비관적 락(Pessimistic Lock): 항상 락을 사용. 데드락이 발생할 가능성이 높아질 수 있습니다.낙관적 락(Optimistic Lock): 데이터 충돌이 발생했을 때만 처리. 이 방식이 데드락을 방지한다고 해도 한계가 있음. 잦은 충돌 발생 시 트랜잭션 반복 재시도로 성능 저하, 트랜젝션이 길 경우 충돌 가능성 상승. 따라서 낮은 경쟁환경에서 효과적 특성을 반영하면 낙관적 락, 비관적 락은 실무에서 보통 어떤 상황에 사용하나요?낙관적 락전자상거래 시스템에서 사용자 장바구니의 데이터 관리.게시판, 블로그 등 대부분 읽기 위주의 애플리케이션.비관적 락은행 거래 시스템, 재고 관리 시스템. 비관적 락의 주요 유형 2가지 공유 락, 베타 락공유 락 (Shared Lock)..
-
내가 임차인으로 살면서, 헷갈렸고 가장 중요했던 임대차보호법 정리. 오피스텔 1년 단위 계약개인 2024. 12. 12. 13:08
[글 시작에 앞서]내용이 부실할 수 있으나, 제가 수많은 검색 끝에 계약 갱신에 있어 필요했던 요점만 정리한 것입니다.최대한 출처를 확인해가면서 적은 것인데, 잘못된 부분이 있다면 댓글 남겨주시면 감사하겠습니다. 휴.. 이래서 다들 집 사는구나 싶을정도로 복잡하고, 모르면 호구당하는 부동산법.. 부동산에서 알아서 해주겠지 하시겠지만 그러면 보는 손해가 너무 큽니다. 부동산도 중개수수료 받고 일하는 엄연한 사업자이기 때문에, 내가 알고 내가 행사해야합니다. [내가 겪었던 상황]1년살고나서 부동산이랑 통화했는데, 집주인한테 계약(보증금, 월세) 내용 그대로 유지하려면 사정해야한다는 식으로 말씀하셨다. 이후에 집주인은 "1년마다 5% 씩 올리는 거 아시죠?" 라면서 전화가 왔고, 나는 오피스텔을 1년 단위로 ..
-
RDB 성능 높이는 법, 데이터베이스 튜닝 (feat. 비정규화 전에 고려할 것)독서/전공서적(dev) 2024. 12. 5. 12:57
책을 읽으며 추가 검색 하여 정리하였습니다. 성능문제 발생 시, 비정규화 하기 전에 다른 방법으로 해결할 수 있나 확인하는 것이 먼저다.첫째, 파티션. 둘째, 클러스터링. 셋째 IOT 에 대해 설명한다. 1. 파티션> 데이터를 효율적으로 관리하고 쿼리 성능을 향상시키기 위해 테이블이나 인덱스를 여러 파티션으로 나누는 기능> DBMS가 파티션별로 병렬 처리를 수행 가능> 파티션별로 저장소(Storage), 압축, 인덱스를 개별적으로 설정 가능.> 참고로, 실무에서 사용 경험이 별로 없었는데, 그 이유는 보통 쿼리 성능이슈 발생 시 튜닝 업무를 하는데, 보통 작업환경은 MySQL이었다. MySQL 에서는 기존 테이블에 파티션을 추가할 수 없으므로 새로운 파티션 테이블로 데이터를 이관해야하기 때문이었다. * ..
-
git remote 연동 시 failed to push some refs to {git url} 에러성장과정(dev)/Git (feat. github, bitbucket) 2024. 11. 20. 10:18
failed to push some refs to '{ssh git uri}' 발생 시 여러 이유가 있겠지만, (원격저장소랑 동기화가 안되어있어서 생기는 경우도 있음) 나의 경우에는 commit 된 것이 없어서 그러니, commit 후에 push 해주면 된다. $ git add .$ git commit -m "first commit"$ git push -u origin main git remote add origin git@github.com:sunnylowell/effective-typescript.gitgit branch -M maingit push -u origin main
-
nodeJS 개발자에서 다시 JAVA 개발자로, Java 9 ~ Java21 주요 변경사항들성장과정(dev)/Spring + Java + JPA 2024. 10. 24. 11:00
Java8 시절까지 java 개발자였는데 마지막으로 java로 개발한지 4년, 아주 많은 것이 바뀌었더라.신규 기능 중 주요 기능들만 요약해봤다. 1. var 키워드 (Java 10)지역 변수 타입 추론을 가능하게 하여, 변수를 선언할 때 타입을 생략하고도 컴파일러가 자동으로 타입을 추론var list = new ArrayList();2. HttpClient API (Java 11)새로운 HTTP 클라이언트 API로, HTTP 요청을 더 간단하게 처리할 수 있습니다. 비동기 요청과 HTTP/2, WebSocket 지원도 포함 HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(..
-
리눅스 특정 폴더 아래에 조건을 주어 일부 파일 삭제하기성장과정(dev)/tool(intelli, ...) 2024. 10. 4. 15:09
삭제 타겟 필터링: 특정 확장자(js 파일)만 지운다.상황: 설정을 하지 않은 상태로 tsc 를 실행하여 생긴 잘못된 js 파일들을 지우려고 한다. ## 일단 파일이 있는지 찾아본다.find ${path} -type f -name "*.js"# examplefind /Users/lowell/Desktop/intellij-project/payment-practice/src -type f -name "*.js" ## 확인한 파일들을 삭제하기 (-delete 만 추가)find ${path} -type f -name "*.js" -delete# examplefind /Users/lowell/Desktop/intellij-project/payment-practice/src -type f -name "*.js" ..