Deadlock in Oracle with Insert query
·
DB
이번글은 Oracle Insert 시 발생하는 데드락 문제 분석과 해결 방안에 대해 작성해보았습니다.데드락이 발생한 상황 가정상품(Product)과 사은품(Gift) 두 개의 테이블이 있다고 가정해 보겠습니다.여기서 상품 테이블의 기본 키(PK)는 사은품 테이블의 기본 키(PK)이자 외래 키(FK)로 설정되어 있으며, 상품 테이블의 PK는 시퀀스(sequence)를 통해 생성됩니다.상품 및 사은품 Insert 쿼리는 다음과 같은 흐름으로 이루어집니다.아래 흐름은 하나의 트랜잭션에서 동작합니다.상품 sequence의 LAST NUMBER로 return_id를 지정상품 insert. PK는 sequence의 NEXT_VAL로 지정한다.1)에서 return_id를 가져와 사은품의 PK로 지정하여 insert...
Connection Pool
·
DB
웹 애플리케이션에서 데이터베이스와 연결을 맺을 때마다 Conenction을 생성한다면 많은 비용이 들뿐만 아니라, Connection 관리를 직접해줘야 되는 단점이 존재한다.이를 해결하기 위해 Connection Pool을 사용하는데, 여러 오픈 소스 라이브러리가 존재한다.(Apache Commons DBCP, Tomcat-JDBC, HikariCP)또한, Connection Pool을 적절히 사용하기 위해선 구조와 원리에 대해 알고 있어야 한다.사내에서 Apache Commons DBCP사용하므로 이에 대해 알아보자.Commons DBCP 속성 설정initialSize : 최초 시점에 getConnection() 를 통해 커넥션 풀에 채워 넣을 커넥션 개수 (default = 0)maxTotal (1...
Oracle Process
·
DB
DB Process & ThreadOracle ProcessProcess는 OS에 따라 달라진다오라클 프로세스는 오라클 데이터베이스 코드를 실행하는 실행 단위입니다. Process Architecture (oracle.com)Multiprocess and MultiThread데이터베이스와 애플리케이션의 작업을 여러 프로세스로 나누면 여러 사용자와 애플리케이션이 동시에 인스턴스에 연결할 수 있으며 시스템 성능도 향상됩니다.쓰레드 모드로 사용하면 일부 프로세스들을 OS 프로세스로 실행 가능하다.Oracle Process ≠ OS Process종류Client Process : Application 또는 Oracle Tool 을 실행시킨다.SQLPlus을 실행시킬 시 OS는 Client Process를 실행시킨..
CAP란?
·
DB
CAP란 분산 시스템에서 속성인 3가지 일관성(Consistency), 가용성(Availablity), 분할 허용성(Partition tolerance)을 말합니다. 우선, CAP에 대해서 하나씩 알아보겠습니다. 일관성 , Consistency 일관성이란 사용자가 분산 데이터베이스 상의 어떤 노드와 통신하는지 상관없이 같은 데이터를 조회할 수 있는 것을 의미한다. 조회한 데이터는 가장 최근에 쓰여진 데이터. 따라서 하나의 노드에 쓰기 작업이 이루어졌다면, 모든 복제본에 반영이 되어야 한다. 하지만 시스템이 모든 인스턴스에 변경 내용을 즉시 반영하는 것은 불가능에 가깝다. 따라서 일관성이란 데이터의 동기화가 즉시 반영은 아니지만 속도를 높여 사용상의 문제가 없게끔 만들어야 한다. 따라서 일관성은 모든 사용..