DataBase/DB 이론(4)
-
Connection/Read Timeout
✅ Connection/Read Timeout에 대해서 알아보자 Connection Timeout Connection Timeout은 종단(EndPoint) 간 연결하는데 소요되는 최대 시간을 의미한다. 예를 들어, JAVA Application JDBC API DBMS 간의 소켓 통신을 이용해 통신한다. 이때 TCP 3 Way Handshake를 통해 연결을 생성하고, 이러한 연결을 소요되는 데 걸리는 시간을 의미한다.(그림 1 참고) Connection Timeout을 지정하지 않게되면 어떻게 될까? DB와의 커넥션을 맺는 임계치를 지정하지 않으면 커넥션을 맺기 위해 무한 대기 상태에 빠지게 되어 DeadLock에 걸리게 된다. 즉 프로세스가 정상 동작하지 못하게 된다. Read Timeout rea..
2022.08.22 -
트랜잭션 2편
✅ 트랜잭션 격리 수준에 대해서 알아보자 트랜잭션 격리수준(Isolation level) 트랜잭션 격리수준이란 동시에 여러 트랜잭션이 처리될 때, 트랜잭션끼리 얼마나 서로 고립되어 있는지를 나타내는 것이다. 쉽게 말하자면 특정 트랜잭션이 다른 트랜잭션에 변경한 데이터를 볼 수 있도록 허용할지 말지를 결정하는 것이다. 트랜잭션 격리 수준은 크게 4가지로 구성되어 있다. READ UNCOMMITED(커밋되지 않은 읽기) READ COMMITTED(커밋된 읽기) REPEATABLE READ(반복 가능한 읽기) SERIALIZABLE(직렬화 가능) READ UNCOMMITED ->SERIALIZBLE 순으로 갈수록 고립(격리) 정도가 높아지며, 성능이 떨어집니다. 격리 수준이 낮을수록 동시성은 증가하지만 격리 ..
2022.08.05 -
트랜잭션 1편
✅ 트랜잭션에 대해서 알아보자 DB 트랜잭션 이란, 데이터베이스 상태를 변경시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미한다. 트랜잭션의 목적은 데이터베이스의 완전성 유지와 무결성을 유지하기 위해 사용된다. 하나의 트랜잭션에는 N개의 SQL(질의어)가 포함되어 있다. 하나의 트랜잭션은 Commit 되거나 혹은 Rollback이 되어야 한다. 트랜잭션의 특징 1.Atomicity(원자성) 보장 원자성은 수행하고 있는 트랜잭션에 의해 변경된 내역을 유지하면서, 이전에 Commit 된 상태를 임시 영역에 따로 저장함으로써 보장한다. 이전 Commit 된 데이터들이 저장되는 영역을 롤백 세그먼트라고 하며, 현재 수행하고 있는 트랜잭션에 의해 새롭게..
2022.07.26 -
Connection Pool
✅ 아래 내용들에 대해서 알아보자 - DB 커넥션 과정 - DBCP - Hikari DBCP - connection 최적화 애플리케이션이 DB에 접근하여 리소스를 사용하기 위해서는 DB에 연결을 해야 한다. DB에 연결하는 과정을 DB 커넥션 과정이라고 하는데 DB 커넥션 과정은 복잡한 과정을 거치게 된다.(그림 1 참고) DB 커넥션 과정 애플리케이션은 DB 드라이버를 통해 커넥션을 조회한다. DB 드라이버는 DB와 TCP/IP 커넥션을 연결한다. 이 과정에서 TCP 신뢰성 연결을 위한 3 Way handshake 과정이 발생하게 된다. DB 드라이버는 2번 과정 연결 후 ID, PW 등 기타 부가정보를 DB에 전달한다. DB는 부가정보를 통한 인증 절차 후, 내부에 DB 세션을 생성한다. DB는 커넥..
2022.07.24