목록분류 전체보기 (119)
이것저것
[동시성 제어란?] 동시성 제어란 DBMS가 다수의 사용자 사이에서 동시에 작용하는 다중 트랜잭션의 상호간접 작용에서 database를 보호하는 것을 의미한다. 일반적으로 동시성을 허용하면 일관성이 낮아지게 된다. 동시성과 일관성의 상관 관계 - 다수 사용자의 동시 접속을 위해 DBMS는 동시성 제어를 할 수 있도록 Lock 기능과 SET TRANSACTION 명령어를 이용해 트랜잭션의 격리성 수준을 조정할 수 있는 기능도 제공한다. - 동시성 제어 방법 -> 비관적 동시성 제어, 낙관적 동시성 제어 [비관적 동시성 제어] 데이터를 읽는 시점에 Lock - 사용자들이 같은 데이터를 동시에 수정할 것이라고 가정 - 데이터를 읽는 시점에 Lock을 걸고, 트랜잭션이 완료될 때까지 이를 유지 - SELECT ..
[Lock이란?] 로킹 기법 : 트랜잭션들이 동일한 데이터 항목에 대해 임의적인 병행 접근을 하지 못하도록 제어하는 것 "나 지금 작업할거니깐 Lock 걸 것이고 Lock건 동안에는 접근 못해!" 트랜잭션 T가 데이터 항목 X에 대해 Read(X) or Write(X) 연산을 수행하려면 반드시 lock(X) 연산을 해주어야함 트랜잭션 T가 실행한 lock(X)에 대해서는 해당 트랜잭션이 종료되기 전에 반드시 unlock(X) 연산을 해주어야함 트랜잭션 T는 다른 트랜잭션에 의해 이미 lock이 걸려있는 X에 대해 다시 lock을 수행시키지 못한다. 트랜잭션 T가 X에 lock을 걸지 않았다면, unlock(X)를 수행시키지 못한다. 즉, 여러개의 트랜잭션들이 하나의 데이터로 동시에 접근하려고 할 때 이를..
[가비지 컬렉터란?] 가비지 컬렉터란 "더 이상 참조되지 않는 메모리"인 가비지를 청소해주는 JVM 의 실행 엔진의 한 요소이다. JVM은 new와 같은 연산자에 의해 새롭게 생성된 객체들 중에 더 이상 참조되지 않는 객체를 정리해준다. 가비지 컬렉터는 Heap 영역을 위주로 탐색하여 메모리를 정리해준다. [Stack, Heap] Stack : 정적으로 할당한 메모리 영역 Primitive 타입의 데이터 값과 함께 할당, Heap 영역에 생성된 Object 타입의 데이터의 참조 값 할당 Heap : 동적으로 할당한 메모리 영역 모든 Object 타입의 데이터가 할당, Heap 영역의 Object를 가리키는 참조 변수가 Stack에 할당 public class Main{ public static void ..
[JVM이란 무엇인가] Java Virtual Machine의 약자로, Java Byte Code를 OS에 맞게 해석해주는 역할을 한다. 즉, Java 와 OS 사이에서 중재자와 같은 역할을 하며, Java 가 OS에 구애받지 않고 재사용 가능하도록 해준다. 즉, 어느 OS 에서든 실행시키기 위해서 Java 애플리케이션은 JVM을 거친 이후 OS를 거치게 된다. 그러다 보니, 해당 HW에 맞게 완전히 컴파일된 상태가 아닌 실행 시 해석되기 때문에 속도가 비교적 느리다는 단점을 가진다. - Java는 직접 실행 가능한 코드가 아닌, Byte Code를 생성 - JVM 이 이 Byte Code를 기계어로 번역 (Interpret)하여 실행 - OS 등 실행환경이 바뀌어도 어디에서든 Java를 실행 가능 (H..
[동시성 제어란?] 다중 사용자 환경을 지원하는 DB 시스템에서 동시에 실행되는 여러 트랜잭션의 간섭으로 문제가 발생하지 않도록 트랜잭션의 실행 순서를 제어하는 기법이다. 일반적으로 동시성을 허용하면 일관성이 낮아진다. 동시성 제어의 목적 - 실행되는 트랜잭션의 수를 최대화 - 입력, 수정, 삭제, 조회 시 데이터의 무결성 유지 동시성을 위한 기본 요소 "직렬성" 직렬성 : 여러 트랜잭션들이 동시에 수행될 때, 마치 각각의 트랜잭션이 순차적으로 수행되는 것처럼 트랜잭션 간 간섭이 없다는 것을 의미한다. 격리 수준 (Isolation Level)이 높을 수록 직렬성 (Serializabilty)가 높다. [동시성 제어를 하지 않을 경우의 문제점] 1. 갱신 분실 (Lost Update) 여러 트랜잭션들이 ..
RDBMS 과 NOSQL의 차이란? 가장 큰 차이는 RDBMS(관계형 데이터베이스)에는 "TABLE(테이블)"이 존재한다는 점이다. 테이블을 통해 데이터의 종속성을 관계로 표현한다는 것이 RDBMS의 가장 큰 특징이다! 반면, NOSQL은 행과 열로 이루어진 테이블 형식 스키마를 사용하지 않는다. 즉, 고정된 테이블 스키마가 필요하지 않다는 것이 NOSQL의 가장 큰 특징이다. NOSQL 의 장점 - 가장 큰 장점이라면 NOSQL에서는 JOIN 연산을 사용할 수 없기 때문에, 스케일 아웃을 통한 노드 확장이 용이하다. (수평적 확장 가능) - 또한, 고정적인 테이블 스키마가 필요 없기 때문에 가변적인 구조로 데이터를 저장할 수 있기 때문에 유연성이 높다. NOSQL 의 단점 - 다양하고 복잡한 쿼리의 사..
1. 주요 역할 (1) 응용 프로그램을 관리한다. 응용 프로그램의 실행, 응용 프로그램 간 권한 관리(관리자 권한 등), 응용 프로그램을 실행하는 사용자도 관리(ex 로그인) (2) 시스템 자원(System Resource) 관리 ex) OS가 없다면 - CPU : 각 프로그램이 얼마나 CPU 사용할지 결정할 수 없다! - Memory : 각 프로그램을 어느 주소에 저장할지, 어느 정도의 메모리 공간을 확보해야할지 결정 못한다! - 저장 매체 : 어디에, 어떻게 저장할지 결정 못한다! - 키보드 / 마우스 : 스스로 표시하지 못한다! (3) 사용자와 컴퓨터 간 communication 지원
2.2.1 인덱스를 사용한다는 것 인덱스 컬럼(선두 컬럼)을 가공하지 않아야 인덱스를 정상적으로 사용 가능 (=리프 블록에서 스캔 시작점을 찾아 스캔하다가 중간에 멈추는 것을 의미) Index Range Scan : 리프 블록 일부만 스캔 (인덱스 컬럼 가공하면 Index Range Scan 불가능) 인덱스 컬럼을 가공해도 인덱스 사용 가능하지만, 스캔 시작점을 찾을 수 없고 멈출 수도 없어 리프 블록 전체를 스캔해야만 한다. Index Full Scan : 리프 블록 전체 스캔 2.2.2 인덱스를 Range Scan 할 수 없는 이유 "인덱스 컬럼을 가공하면 인덱스를 정상적으로 사용 (Range Scan)할 수 없다" 인덱스 컬럼을 가공하면 인덱스 스캔 시작점을 찾을 수 없기 때문 #1 인덱스에는 가공..