728x90

DB 2

[PostgreSQL] LAG, LEAD 사용하기

LAG와 LEAD는 어떤 함수일까? 🤔 조회 결과 또는 결과 내 특정 집합 안에서 특정 컬럼의 이전 행의 값(LAG) 또는 다음 행의 값(LEAD)을 구하는 함수이다. 이전 또는 다음 행의 값을 구한다는 것은 알겠는데 어떤 경우에 사용되나요? 🙋‍♂️ 아주 자주 쓰이는 함수는 아니지만, 이전 행의 값과 현재 값을 비교하거나 계산할 때 복잡하게 만들어야 하는 쿼리를 LAG, LEAD 함수를 쓰면 한 줄로 간단하게 끝낼 수 있다. 아래의 예시를 보자. 위와 같은 데이터가 있고, 총무팀의 3일 전 비용과 현재 비용을 비교하여 값이 오른 행만을 추출하려 한다면 어떻게 해야 할까? 복잡하게 보이지만 LAG 함수를 사용하면 3일 전 비용을 가져오는 컬럼을 만들 수 있다. select *, lag(cost, 3) o..

💾DB 2022.07.08

[CS] DB 트랜잭션 격리 수준 (Transaction Isolation Levels)

트랜잭션 격리 수준이랑 동시에 여러 트랜잭션이 처리될 때, 트랜잭션끼리 얼마나 고립되어 있는지를 나타내는 것이다. READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE 크게 네 가지로 나뉘고 순서대로 뒤로 갈수록 트랜잭션 간 고립 정도가 높아진다. 고립 정도가 높아지면, 성능이 떨어지는 것이 일반적이다. 보통의 경우 READ COMMITTED(oracle), REPEATABLE READ(mysql) 중 하나를 사용한다. READ UNCOMMITTED READ UNCOMMITTED의 경우 라나의 트랜잭션 변경이 commit, rollback에 상관없이 다른 트랜잭션에 영향을 미친다. 위의 사진과 같이 Transaction1이 INSERT 후 co..

💻CS 2022.07.05
728x90