본문 바로가기

데이터베이스

(3)
Database Connection Pool (Database) Database Connection Pool이 등장 설명을 위해 JDBC에 대한 개념을 간단히 짚고 넘어가자. JDBC 웹 애플리케이션은 정보 저장이 필요할 때 주로 데이터베이스(Database, 이하 DB)를 이용한다. 이를 위해 WAS는 애플리케이션이 DB로 접근할 수 있는 통일된 방법을 제공해야 하는데, 자바에서는 이러한 통일된 DB 접근을 위해 만든 표준이 바로 JDBC(Java Database Connectivity) 표준이다. JDBC는 애플리케이션이 DB 커넥션을 사용하는 방법에 대해 기술하고 SQL 작업을 하기 위한 API를 제공한다. JDBC 실행 과정 DB 서버 접속을 위해 JDBC 드라이버를 로드한다. DB 접속 정보와 DriverManager.getConnection() Method..
[Real MySQL 8.0] 5장. 트랜잭션과 잠금 잠금(Lock)은 동시성을 제어하기 위한 기능 트랜잭션은 데이터의 정합성을 보장하기 위한 기능 격리 수준은 하나의 트랜잭션 내에서 또는 여러 트랜잭션 간의 작업 내용을 어떻게 공유하고 차단할 것인지 결정하는 레벨 트랜잭션 하나의 논리적인 작업 셋에 하나의 쿼리가 있든 두 개 이상의 쿼리가 있든 관계없이 논리적인 작업 셋 자체가 커밋되거나 롤백됨을 보장해주는 것 MySQL 엔진의 잠금 글로벌 락 FLUSH TABLES WITH READ LOCK 명령으로 획득 가능 다른 세션에서 SELECT를 제외한 대부분의 DDL 문장이나 DML 문장을 실행하는 경우 글로벌 락이 해제될 때까지 해당 문장이 대기 상태로 남음 실행과 동시에 MySQL 서버에 존재하는 모든 테이블을 닫고 잠금을 검 mysqldump같은 백업 ..
트랜잭션과 Spring의 선언적 트랜잭션에 대하여 트랜잭션이란? 더이상 나눌 수 없는 논리적인 작업 단위를 의미하며, 데이터베이스에서는 상태를 변경시키기 위해 수행하는 작업 단위이다. 스프링에서 선언적 트랜잭션 스프링에서는 트랜잭션 처리를 지원하는데, 그 중 한 방법으로 @Transactional 어노테이션을 클래스 혹은 메서드 위에 추가할 수 있다. 이를 선언적 트랜잭션이라고 부른다. 트랜잭션의 성질 (ACID) 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질 Atomicity - 원자성 더 이상 쪼갤 수 없는 원자의 성질 한 트랜잭션 내에서 실행한 작업들은 하나로 간주 COMMIT이거나, ROLLBACK 이거나 Consistency - 일관성 트랜잭션이 성공적으로 완료되면, 일관성 있는 데이터베이스의 상태를 유지함 ex) 트랜잭션..