프로젝트 중 데이터 전송 건에 대해 누락이 있었고, 이를 확인하는 과정 중에 이해가 안가는 부분이 있어 파트 선배에게 질문을 했다. 선임 개발자분이 누락건과 그 이유를 분석하기 위해서 이력 테이블을 뒤져보고 pk를 조건 걸어서 조회해봤을때 매칭되는 로우가 없는 것을 보고 이력 테이블에 데이터가 누락되어있어서 전송이 안되었다고 하셨다. 이력 테이블에 해당 날짜를 조건으로 걸어서 조회했을때 데이터가 존재하지 않은것을 보고 누락되었다고 판단한 배경이 궁금해져서 질문을 했고, 선분이력 이라는 데이터를 관리하는 개념을 알게 되었다. 점이력(시점이력) 데이터의 변경이 발생한 시점에 대해서만 관리 선분이력 시점마다 달라지는 데이터를 관리하기 위한 개념 데이터의 변경이 적용된 시작 시점부터 그 상태의 종료시점까지 관리..
데드락(DeadlocK) 시스템 자원에 대한 요구가 뒤엉켜서, 둘 이상의 프로세스가 다른 프로세스가 점유하고 있는 자원을 서로 기다리며 무한 대기에 빠지는 상황 데드락 발생 조건 상호 배제 한 번에 하나의 프로세스만 자원을 사용할 수 있음 사용중인 자원을 다른 프로세스가 사용하려면 해제될때까지 기다려야 함 점유 대기 다른 프로세스에 할당된 자원을 점유하기위해 대기하는 프로세스가 존재해야함 비선점 이미 할당된 자원을 강제로 뺏을 수 없음 순환 대기 대기 프로세스의 집합이 순환 형태로 자원을 기다리고 있어야함 해결 방법 예방(Prevention) 데드락이 발생하지 않도록 예방 회피(Avoidance) 데드락 발생 가능성을 인정하면서 적절하게 회피 탐지 및 회복(Detection & Recovery) 데드락 ..
DUAL 테이블 오라클에서 제공하는 기본 테이블 SYS 소유이지만 모든 사용자에게 권한을 주어서 내가 만든 테이블처럼 조회 가능 사용법 1. 임시로 원하는 임시 값을 리턴받고 싶을 때(간단한 테스트를 하는 경우) SELECT 'nooblette.net' as nooblette; select 쿼리를 통해 간단한 데이터베이스 접속 테스트를 원할 때 mysql과 MSSQL에서는 위와같이 select만 있는 쿼리를 지원해서 조회해볼 수 있지만, ORACLE에서는 이를 지원하지 않는다. SELECT 'nooblette.net' as nooblette FROM DUAL; 이때, 위처럼 FROM 절에 DUAL 테이블을 담아서 사용할 수 있다. 즉, FROM절에 특정 테이블을 담지않고 select 만으로 데이터를 조..
트랜잭션 DB에서 데이터의 일관성과 무결성을 보장 하나의 그룹으로 처리되어야 하는 명령어를 모아놓은 작업 단위 e.g) 하나의 그룹이 4개의 SQL문으로 이루어졌을 경우, 4개의 SQL문이 완전히 처리가 되거나 아니면 하나도 수행이 되지 말아야함(All-OR-Nothing) 일반적으로 Begin_transaction과 End_transaction으로 나뉘어 트랜잭션 그룹 내에서 처리해야할 명령어들을 기술 트랜잭션 단위 장애 발생 시 복구 작업을 할 때 사용 병행 제어 시 논리 작업 단위로 사용 데이터베이스의 일관성과 무결성을 유지하기 위해 여러개의 트랜잭션 단위를 잘 정의해두어야함! 트랜잭션 예시 A가 B에게 100,000원을 이체하는 경우 하나의 트랙잰션에 들어가는 4개의 SQL문을 정의 Select ..