DB

DB

DB 락

너 Key 갖고 있어?? DB 세션이 트랜잭션을 시작하고 데이터를 조작 후 커밋을 하지 않은 상태에서 다른 DB세션에서 동시에 데이터를 수정하면 원자성 문제가 생깁니다. 이런 문제를 해결하기 위해 데이터에 락을 걸어 처음 접근한 세션이 데이터를 수정하는 동안 다른 세션에서 접근할 수 없게 해야 합니다. 데이터에 Key를 소유한 세션만 데이터 수정이 가능합니다. 접근을 하면 Key를 흭득하고 Commit 또는 Rollback을 하면 Key를 반환합니다. 조회시 Lock 일반적인 조회는 락을 사용하지 않습니다. 하지만 트랜잭션 종료 시점까지 해당 데이터를 다른곳에서 변경하지 못하도록 강제로 막아야 할 때 사용합니다. 조회시 락 방법 SELECT * FROM member where member_id ='tes..

DB

트랜잭션

데이터베이스에서 트랜잭션이란 하나의 거래를안전하게 처리하도록 보장해주는 것을 뜻합니다. 데이터베이스의 트랜잭션에서는 중요한 것들이 있습니다. 트랜잭션 ACID 원자성 : 트랜잭션 내에서 실행한 작업들은 마치 하나의 작업인 것처럼 모두 성공하거나 모두 실패해야 한다. 일관성 : 모든 트랜잭션은 일관성 있는 데이터베이스 상태를 유지해야한다. (데이터 베이스에서 정한 무결성 제약 조건을 항상 만족해야 한다.) 격리성 : 동시에 실행되는 트랜잭션들이 서로에게 영향을 미치지 않도록 격리한다. 트랜잭션 격리 수준 : 동시에 같은 데이터에 접근하지 않게 하기 위한 단계 지속성 : 트랜잭션을 성공적으로 끝내면 그 결과가 항상 기록되어야 한다. (문제시 복구 가능해야함) 트랜잭션은 원자성, 일관성, 지속성은 보장하지만 ..

DB

DataSource란?

커넥션을 흭득하는 방법을 추상화 한것입니다. DB 접근 방법을 변경해도 코드 손보지 않고 알아서 다 처리해 줍니다. 스프링의 장점중 하나입니다. 커넥션을 흭득하는 방법 DriverManager 매번 연결시마다 커넥션을 생성합니다. Connection Pool 미리 만들어 놓은 커넥션 재사용 이 두가지를 모두 추상화 시킨것이 DataSource입니다. 자바는 DataSource 인터페이스를 통해 커넥션을 조회하고 사용할 수 있게 도와줍니다. DataSource의 커넥션풀은 main 스레드가 아닌 별도의 스레드가 생성합니다. (속도를 향상시키기 위해) 따라서 애플리케이션 로직은 DataSource만 의존해서 개발을 하면 다른것을 신경쓰지 않아도 됩니다.

DB

커넥션 풀을 사용하는 이유

애플리케이션과 DB간의 커넥션 생성의 복잡성, 비용을 줄이기 위해 사용합니다. 애플리케이션에서 DB에 접근을 할때마다 커넥션을 항상 생성해야 합니다. 그리고 그 과정은 아래와 같이 복잡하고 비용이 많이 들어갑니다. 애플리케이션의 로직은 DB 드러이버를통해 커넥션 조회 DB 드라이버는 DB와 TCP/IP 연결 DB 드라이버는 3 way handshake 정상 연결 후 IP, PW 등 환경변수 DB에 전달 DB는 내부 인증 후, 내부에 DB 세션 생성 DB는 커넥션 생성 완료 응답 DB드라이버는 커넥션 객체 생성해 클라이언트에 반납 위 과정을 미리 여러번 해서 커넥션을 여러개 만들어 놓는 것이 커넥션 풀입니다. 커넥션 풀의 장점 커넥션 풀에 있는 커넥션은 TCP/IP로 DB와 커넥션이 되어있는 상태입니다. ..

Sol b
'DB' 카테고리의 글 목록