CS

Transaction 트랜잭션이란 ? 해당 교재에서 트랜잭션은 , ‘Single Logical Unit of Work’ 으로 규정하고 있습니다. 일상생활의 예를 들자면, 제가 다른 친구에게 돈을 송금할 때, DBMS 내부에서는 제 계좌의 돈을 차감 후 , 전달받는 친구 계좌의 돈을 증가 시키는 절차를 가집니다. 이러한 연산들은, 장애가 발생해도 처리가 가능해야 합니다. 돈을 송금하는 도중에 서비스에 장애가 발생해서 제 계좌의 돈만 차감된다면, 돈이 증발하는 꼴이 됩니다. 데이터베이스는 트랜잭션을 통해 작업의 원자성, 일관성, 고립성, 내구성을 보장합니다. Basic Concept of Transaction 트랜잭션은 여러 값에 접근하여 값을 변경시키는 프로그램 실행의 단위입니다. 위에서 제시한 송금 시나..
Query Optimization 개요 이전 포스팅에서 Query Processing 에 대하여 알아보았습니다. Parser가 적절한 Procedure Language (Linear Algebra )로 쿼리를 변환하고, DBMS catalog 을 이용하여 Query Optimizer 를 실행합니다. 왜 최적화 (Optimization)를 진행하는 걸까요 ? What is Query Optimization ? Query Optimization 이란, 최적화된 쿼리 실행 계획입니다. DBMS는 실행 계획들 중에 최소 Cost 를 가지는 Query plan 을 실행합니다. 왜 이런 일을 진행하는 걸까요? 생각해보면 상당히 심플한 아이디어에서 접근합니다. 우리는 절차를 수행하는 방법을 순서에 따라 명확하게 나타..
데이터베이스 쿼리 실행 기법 도입 이전 게시글 까지 각 DBMS는 연산에서 알고리즘을 이용하여 비용을 계산하고, 최적의 결과를 내는 방식을 선택한다는 사실을 알 수 있었습니다. 그럼 도출한 플랜으로 쿼리를 어떻게 실행할 수 있을까요 ? 보통 Entire expression tree 라는 트리를 통해, 실행해야 하는 연산들을 procedural 하게 처리할 수 있습니다. π(σ(instructor))⋈dept) 다음과 같은 연산이 있다고 가정합시다. 위 내용을 expression tree 로 나타내면 다음과 같은 형식이 됩니다. 한눈에 봐도 직관적으로 실행 순서를 알아차릴 수 있습니다. 데이터베이스는 도출된 expression tree를 이용하여 쿼리를 실행합니다. 쿼리 실행 방법에는 크게 두가지 방식이 ..
도입 데이터베이스를 실행하면 DBMS 는 쿼리문을 Linear Algebra (관계대수) 형식으로 변경하여 처리하게 됩니다. 관계 대수는 순차적인 (Procedural) 한 언어이고, SQL 은 Non-Procedural 하기 때문입니다. 알고리즘 문제를 풀거나, 쿼리문을 작성 하는 경우, 같은 문제에 대하여 여러가지 해답이 나올 수 있다는 사실은 자명합니다. 당장 백준에 들어가 누군가의 코드를 보더라도 누구는 O(N) 만에 해결하는 반면, 제 코드는 O(N^2) 만에 해결된 경우가 이에 해당 될 것 같습니다. 그럼 DBMS 는 어떨까요? 분명 컴퓨터니까 사람처럼 직관과 추론을 사용하지는 못할 것입니다. 이번 챕터는 어떻게 쿼리 프로세스가 진행되는지에 대하여 알아보겠습니다. 1. Basic Steps i..
hyunw9
'CS' 카테고리의 글 목록