Amazon Redshift를 사용하기전에는 MS-SQL을 사용하였는데, 직접 사용해보니 두 SQL의 큰 차이가 체감되어 어떤점이 다른지를 정리해보려고한다.
1. OLTP VS OLAP
1) OLTP (Online Transaction Procesisng)
- 다수의 사용자들에게서 발생하는 Transaction을 DB에서 처리하는 과정.
- Insert, Update, Delete등의 과정에서 무결성을 보장하여 처리하고, 그 결과를 Select 하는 과정
2) OLAP (Online Analytical Processing)
- OLTP가 트랜잭션 기반의 데이터 자체의 처리를 위한 DB라면 OLAP는 이미 저장된 대용량데이터를 기반으로
'분석'하는데 중점이 되어있는 DB
MS-SQL은 OLTP 이기 때문에 with (nolock) 기능을 제공하여 타 사용자들에 의해 한 테이블에서 트랜잭션이 일어나더라도 테이블을 잠금처리하지 않으면서 Select, Insert, Update, Delete 트랜잭션이 가능했다.
반면 Redshift는 DW기반의 OLAP DB이다. 이번에 처음으로 Redshift를 사용하면서 가장 당황한것은 nolock 기능이 없다는 것이었다!! 그래서 DB배치가 실행되는 시간동안에는 테이블을 사용할 수가 없다. ;;
2. Amazon Redshift 세 가지 잠금 모드
LOCK 유형 |
설명 |
AccessExclusiveLock |
LTER TABLE, DROP 또는 TRUNCATE와 같은 DDL 작업 중에 주로 획득. AccessExclusiveLock은 다른 모든 잠금 시도를 차단 |
AccessShareLock |
UNLOAD, SELECT, UPDATE 또는 DELETE 작업 중에 획득. AccessShareLock은 AccessExclusiveLock 시도만 차단. AccessShareLock은 테이블에서 읽기 또는 쓰기를 시도하는 다른 세션을 차단하지 않습니다. |
ShareRowExclusiveLock |
COPY, INSERT, UPDATE 또는 DELETE 작업 중에 획득. ShareRowExclusiveLock은 AccessExclusiveLock 및 기타 ShareRowExclusiveLock 시도를 차단하지만, AccessShareLock 시도는 차단하지 않음. |
잠금모드 참고
https://aws.amazon.com/ko/premiumsupport/knowledge-center/prevent-locks-blocking-queries-redshift/