본문 바로가기

전체 글142

리눅스 backlog, somaxcoon TCP연결시 3핸드셰이크를 거친다.클라이언트가 Syn을 보내면 서버는 syn+ack을 보내고 아직 연결이 절반만 이루어진 이 요청을 SYN Backlog라는 큐에 보관한다.이때 요청이 보관되는 큐의 최대 크기는 tcp_max_syn_backlog이다.클라이언트가 마지막 ack을 보내 연결이 established이 된다. 이 때 요청은 Accpet Queue로 이동한다.여기서 애플리케이션이 accpet시스템 콜을 호출하여 연결을 가져가기 전까지 대기한다.somaxcoon은 커널 레벨의 최대 제한치이다. 시스템 전체에서 한 소켓이 가질 수 있는 최대 Accpet Queue를 강제한다.애플리케이션에도 backlog가있다 이것은 Synbacklog큐와 전혀다른 존재다 Accpet queue에 영향을주며 대기가능.. 2026. 1. 3.
게시판 조회 쿼리 개선 게시판 조회 쿼리게시판조회는 페이징으로 특정 글 목록을 표시합니다.조건1 : 목록의 글마다 글에 달린 댓글 수가 있어야합니다.조건2 : 목록의 글마다 글이 받은 추천 수가 있어야합니다.조건3 : 차단되거나 차단한 회원의 글은 보이지 않습니다.결과 요약10000개의 글이 있을 때 페이징으로 20개 글을 조회하는 테스트를 하였습니다.쿼리첫 페이지중간 페이지마지막 페이지최초 쿼리54ms78ms130ms리팩토링 후 문제 발생778ms770ms744ms최종 개선23ms44ms66ms 1. 최초 쿼리쿼리dsl 사용 시 발생하는 sql입니다.SELECT p1_0.post_id, p1_0.title, p1_0.views, (SELECT CAST(COUNT(pl1_0.post_like_id) AS .. 2025. 12. 31.
익명 클래스 선언가 동시에 오브젝트 생성 클래스 자신의 타입을 가질수없음 구현한 인터페이스 타입의 변수에만 저장가능 2025. 12. 30.
데이터베이스 격리수준 출처 쉬운코드 https://www.youtube.com/watchv=bLLarZTrebU&list=PLcXyemr8ZeoREWGhhZi5FZs6cvymjIBVe&index=17 Dirty Read : commit 되지 않은 변화를 읽음x가 10 y가 20 이었을 때 Non-repeatable read : 같은 데이터의 값이 달라짐x는 최초에 10 Phantom read : 없던 데이터가 생김두개의 튜플이 있음 최초 t1은 v가 10 t2는 v가 50 격리수준1. Read uncommitted : 커밋되지 않은 읽기 허용2. Read commited : 커밋된 읽기만 허용 Dirty Read 까지 방지3. Repeatable read : Non-repeatable read 까지 방지4. Serial.. 2025. 12. 23.
데이터베이스 동시성제어 (2) 회복불가능한 스케줄스케줄 내에서 커밋된 트랜잭션이 롤백된 트랜잭션이 write 했었던 데이터를 읽은경우롤백을해도 이런 스케줄은 이전 상태로 회복 불가능할 수 있기 때문에 이런 스케줄은 dbms에서 허용하면안됨회복가능한 스케줄스케줄 내에서 어떤 트랜잭션도 자신이 읽은 데이터를 write한 트랜잭션이 먼저 커밋/롤백하기 전까지는 커밋하지 않는 경우캐스캐이딩 롤백하나의 트랜잭션이 롤백하면 의존성이있는 다른 트랜잭션도 롤백하는 것여러 트랜잭션의 롤백이 연쇄적으로 일어나면 처리하는 비용이 많이 듬캐스캐이드리스 스케줄스케줄 내에서 어떤 트랜잭션도 커밋되지않은 트랜잭션들이 write한 데이터를 읽지않은 경우 하지만 읽기작업이 없을시 일부 트랜잭션의 결과가 무효화될 수 있음엄격한 스케줄스케줄 내에서 어떤 트랜잭션도 커.. 2025. 12. 23.
데이터베이스 동시성 제어 (1) 스케줄은 여러 트랜잭션이 동시에 실행될때 각 트랜잭션에 속한 명령의 실행순서시리얼 스케줄 (순차 스케줄) 트랜잭션들이 겹치지않고 한번에 하나씩 실행되는 스케줄비정상데이터가 생길일은 없지만 한번에 하나씩 실행되어서 성능이 안좋음 현실적으로 안쓰임I/O 작업이 끝날때까지 CPU가 대기논시리얼 스케줄 (비 순차 스케줄) 트랜잭션들이 겹쳐서(인터리빙) 되어 실행되는 스케줄I/O 작업이 끝나지않아도 다른 트랜잭션 실행 CPU 놀지않음같은시간동안 더 많은 트랜잭션 처리가능비정상데이터 생길 가능성있음논시리얼 스케줄에서 성능을 챙기는 방법Conflict란두가지의 명령이 있을때1. 각 명령이 서로 다른 트랜잭션이다2. 같은 데이터에 접근한다3. 최소하나는 write명령이다세가지를 만족하면 두 명령은 컨플릭트하다 라고함컨.. 2025. 12. 23.