2025/05 5

[개발자를 위한 통계학 찍먹하기] 0편 - 동기

서론나는 그동안 포트폴리오에서 발견되는 성능 테스트에 대한 회의론을 갖고 있었다.정량적 데이터에 의한 동기만으로 성능 테스트가 수행된 경우, 어디서 본 듯한 이유와 어디서 본 듯한 개선, 짜맞춘 의도에 짜맞춘 개선밖에 볼 수 없었고, 정성적 데이터에 의한 동기만으로 성능 테스트를 수행한 경우, 트레이드오프를 고려하지 않은 단순한 오버엔지니어링으로밖에 보이지 않았다.따라서, 해당 성능 테스트에서 작성자들의 문제 해결 능력을 이해하기가 어려웠다.하지만, 아무것도 안하는 것보다는 낫다는 걸 나 스스로도 인정하고 있긴 했다.그래서, “할거면, 논리적으로 하자.” 라는 결론에 도달하게 되었다. 참고: 정량적 데이터 vs 정성적 데이터 정량적 VS 정성적 데이터 차이 파악하고 균형 있는 설문조사 실시하기정량적 데이..

[트랜잭션 완전정복] 2편 - 트랜잭션 고립 수준(트랜잭션 격리 수준, Transaction Isolation Level)

우리는 이전 글을 통해, 트랜잭션이 정확히 무엇인지와, 트랜잭션 과정에서 발생할 수 있는 문제들에 대해 이해할 수 있었다.이번 글에선, DB에서 정의하는 추상적인 개념인 Transaction Isolation Level에 대해 구체적으로 알아보도록 하자.이 글은 ACID에 대해 어느정도 개념이 잡혀있는 독자를 기준으로 작성되었다.(다음 편에 ACID에 대해 좀 더 자세히 다룰 예정이다.)주요 용어격리성직렬성스냅샷 격리충돌(Conflict)충돌 동등공유 잠금(Shared Lock)배타 잠금(Exclusive Lock)직렬화 가능(Serializable)반복가능한 읽기(Repeatable Read)커밋된 읽기(Read Committed)커밋되지 않은 읽기(Read Uncommitted)DB 트랜잭션 과정의 ..

[트랜잭션 완전정복] 1편 - 진정한 의미의 트랜잭션(Transaction)이란?

습관적으로 우리가 사용하는 DB 트랜잭션이라는 용어가 아닌, WAS가 작업하는 단위인 "트랜잭션" 그 자체의 정의와 동작 방식에 집중하여, 다양한 곳에 적용할 수 있는 기준을 가져보자.주요 용어비즈니스 트랜잭션시스템 트랜잭션충돌경쟁 상태락 경합데드락오프라인 트랜잭션트랜잭션(Transaction)이란?트랜잭션이란?클라이언트와 서버 간에, 요청을 주고 응답을 받는 하나의 작업의 단위를 정의한 것.주어진 요청에 대하여, 서버 내부의 상태를 변화시키거나, 적절한 응답을 반환하는 것을 목표로 한다.이를 "비즈니스 트랜잭션" 이라고 부르겠다.DB에서의 트랜잭션작업의 단위를 보장하려고 하니, 하나의 작업처럼 다루고, 이를 영속성 저장소에 저장할 필요가 있었다.하지만, 이 비즈니스 트랜잭션을 위한 인프라 로직을 매번 ..

압박은 특권이다. - 25년 5월 1주차 회고

향유하며 살자. 충분히 잘하고 있다.내가 생각하는 개발자에게 가장 중요한 것문제 정의/우선순위 설정 능력 (일)현재 조직이 필요로 하는 일이 정확히 무엇인지 파악하는 능력명확한 의사소통을 이용해, 의미없는 일을 하지 않도록 집중하는 능력나/우리에게 지금 부족한 부분이 무엇인지 파악하는 능력문제 해결 능력주어진 문제를 해결할 수 있는 능력현재 문제의 원인을 파악하고, 현재 선택할 수 있는 가장 효율적인 해결방안을 선택하는 능력CS 지식 - 기술에 대한 이해도각 기술에 대한 트레이드오프가 고려된 기준과 예제현재 문제의 근본적인 원인을 탐색할 수 있는 능력문제의 해결책을 확신을 갖고 선택할 수 있는 능력알고리즘/기술(라이브러리/프레임워크)/프로그래밍 문법/API 숙련도실제 문제의 해결책으로 사용할 기술의 사용..

개인적 공간 2025.05.02

SQL 쿼리의 동작 순서와 기본적인 동작 원리

SQL 문법의 동작 순서 외우는 법게토레이랮혼애ㅣfowghsdol각 문법의 첫글자를 딴 형태로 만든 암기 방식이다.실제 동작 순서는 다음과 같다.fromon(join)wheregroup byhavingselectdistinctorder bylimit/offsetFrom쿼리의 작업 대상이 되는 기본 테이블을 결정한다.최초 쿼리가 동작할 테이블/뷰/파티션/서브쿼리가 정확히 어딘지를 결정한다.On(Join)조인 순서 최적화조인 알고리즘 선택별도의 글로 작성해야 함. 깊이가 깊음. (작성예정)WhereFROM/Join 절로 생성된 모든 행에 대해 필터링을 수행한다.인덱스를 사용 가능한 (sargable) 조건들에 대하여, 인덱스를 사용하여 탐색한다.집계함수를 사용할 수 없다.select 절에서 정의한 alias..

CS Repo/DB 2025.05.01