2024/08/17 4

DBCP (Database Connection Pooling)

데이터베이스 커넥션은 데이터베이스와의 연결을 효율적으로 관리하기 위해 TCP 연결을 사용한다. 데이터베이스 커넥션은 생성과 종료에 비용이 많이 들기 때문에, 커넥션 풀을 사용하여 이러한 비용을 줄인다. 커넥션 풀을 통해 미리 생성된 커넥션을 재사용함으로써 성능을 향상시키고 자원 소모를 줄인다.  각 커넥션의 설정은 클라이언트와 DB 서버 양쪽에서 모두 잘 이해하고 설정해야 한다. DB 서버 설정1. max_connections클라이언트와 DB 서버 간의 최대 동시 연결 수를 설정한다.max_connections 값이 4로 설정된 경우, 데이터베이스 서버는 동시에 최대 4개의 클라이언트 연결을 허용한다.DBCP의 최대 커넥션 수(maxTotal)가 DB 서버의 max_connections보다 크면, DB ..

Database 2024.08.17

MVCC (Multiversion Concurrency Control)

MVCC의 핵심은 데이터의 여러 버전을 유지하여 트랜잭션이 시작된 시점에 맞춰 데이터를 읽을 수 있도록 하는 것이다. 이를 통해 각 트랜잭션은 자신이 시작된 시점의 데이터 스냅샷을 사용하여 일관성 있는 읽기를 보장받게 되며, 읽기 작업과 쓰기 작업이 서로를 차단하지 않는 환경을 가능하게 한다. 즉, 한 트랜잭션이 데이터를 수정하는 동안 다른 트랜잭션이 그 데이터를 읽더라도 서로 간섭하지 않게 된다.이러한 MVCC의 동작은 데이터베이스 성능을 크게 향상시키는 장점이 있지만, 각 데이터에 대한 추가적인 버전 관리를 필요로 하므로 이를 효율적으로 처리하기 위한 메커니즘이 중요하다. 격리 수준과 MVCC의 적용트랜잭션의 격리 수준(Isolation Level)은 여러 트랜잭션이 동시에 실행될 때 데이터의 일관성..

Database 2024.08.17

Lock & 2PL

Write-Lock (Exclusive Lock)Write-Lock은 데이터베이스에서 특정 데이터 항목에 대해 쓰기 operation이 수행될 때, 해당 데이터 항목에 배타적 잠금을 거는 메커니즘이다.특징:배타적 잠금: 한 트랜잭션이 데이터를 수정하기 위해 write-lock을 획득하면, 다른 트랜잭션은 해당 데이터에 대해 읽기(read)나 쓰기(write) operation을 수행할 수 없다. 이는 데이터의 무결성을 유지하기 위한 중요한 메커니즘이다.경합 가능성: 여러 트랜잭션이 동일한 데이터에 대해 동시에 write-lock을 시도하면 경합이 발생하며, 이로 인해 데드락(교착 상태) 등이 발생할 수 있다.예시:T1 트랜잭션이 변수 x의 값을 20으로 변경하기 위해 write-lock을 획득한다.T2 ..

Database 2024.08.17

JDBC 쿼리 및 메서드 실행 로깅

1. JDBC 쿼리 로그 활성화애플리케이션이 실행하는 SQL 쿼리와 그 실행 시간을 로그로 기록하려면, JVM 옵션에서 로그 레벨을 설정해야 한다. 아래는 이를 설정하는 방법이다:-Dlogging.level.jdbc.sqlonly=off # SQL 쿼리만 로깅하지 않음 -Dlogging.level.jdbc.sqltiming=info # SQL 쿼리 실행 시간을 info 레벨로 로깅 -Dlogging.level.jdbc.resultsettable=info # 쿼리 결과를 info 레벨로 로깅 -Dlogging.level.jdbc.audit=off # JDBC audit 로그 비활성화 -Dlogging.level.jdbc.resultset=info # JDBC 결과 셋을 로깅 -Dlogging.level.j..

JVM 2024.08.17