데이터베이스(3)
-
MVCC
동시성 제어 동시성 제어란 DBMS가 다수의 사용자 사이에서 동시에 작용하는 다중 트랜잭션의 상호간섭 작용에서 Database를 보호하는 것을 의미합니다. 일반적으로 동시성을 허용하면 일관성이 낮아지게 되며 이를 그래프로 나타내면 아래와 같습니다. 다수 사용자의 동시 접속을 위해 DBMS는 동시성 제어를 할 수 있도록 Lock 기능과 SET TRANSACTION 명령어를 이용해 트랜잭션의 격리성 수준을 조정할 수 있는 기능도 제공합니다. 이렇게 동시성을 제어하는 방법에는 비관적 동시성 제어와 낙관적 동시성 제어가 있습니다. 비관적 동시성 제어 사용자들이 같은 데이터를 동시에 수정할 것이라고 가정 데이터를 읽는 시점에 Lock을 걸고, 트랜잭션이 완료될 때까지 이를 유지 SELECT 시점에 Lock을 거는..
2020.06.26 -
Scala Subquery vs Left Outer Join
Subquery란 Subquery란 다른 하나의 SQL문장의 절에 중첩된 select 문장입니다. Select, update, delete, insert와 같은 DML 문과 create table 또는 view에서 이용 가능합니다. Subquery는 알려지지 않은 조건에 근거한 값들을 검색하는 select 문장을 작성하는데 유용합니다. Subquery는 Main Query가 실행되기 이전에 한번 실행되고 SubQuery의 결과는 Main Query에 의해 사용됩니다. Outer Join이란 Outer Join이란 Join하는 여러 테이블에서 한 쪽에는 데이터가 있고, 한 쪽에는 데이터가 없는 경우, 데이터가 있는 쪽 테이블의 내용을 모두 출력하는 것입니다. 즉, 조건에 맞지 않아도 해당하는 행을 출력하고..
2020.03.30 -
Join 연산
Join이란 SQL 명령문에 의해서 여러 테이블에 저장된 데이터를 한 번에 조회할 수 있게 하는 DBMS의 기능입니다. 두 테이블 간의 곱으로 데이터를 연결하는 가장 대표적인 데이터 연결 방법입니다. 대표적인 종류로 Nested-Loop Join, Sort-Merge Join, Hash Join 등이 존재합니다. 참고로 Join 연산은 Optimizer의 성능 및 DMBS 고유의 성능 그리고 Join 연산의 알고리즘에 의해서 속도 등의 차이가 있을 수 있습니다. Nested Loop Join Nested Loop의 개념 Nested Loop란 2개 이상의 테이블에서 하나의 집합을 기준으로 순차적으로 상대방 Row를 결합하여 원하는 결과를 조합하는 방식입니다. 먼저 선행 테이블의 처리 범위를 하나씩 액세스..
2020.03.30