트랜잭션 특성 ACID A(Atomicity) 원자성 DBMS는 수행 중인 트랜잭션에서 데이터를 일부만 변경하고 나머지는 수행하지 않은 채 커밋 할 수 없습니다. C(Consistency) 일관성 트랜잭션에 의해 데이터 간의 일관성이 어긋나서는 안된다. I(Isolation) 고립성 트랜잭션끼리는 고립되고 독립되어 있다 D(Durability) 지속성 커밋한 트랜잭션은 장애가 발생하더라도 데이터는 반드시 복구되어야 한다 데이터베이스의 중요한 특징인 커밋한 데이터를 지키는 특성을 구현하기 위해서는 로그(변경 로그)를 채용하여 성능과 지속성을 양립시킵니다. REDO로그에 데이터를 한꺼번에 기록하는 것으로 I/O의 횟수가 줄어들고, 시퀀셜 액세스를 사용하여 I/O에 소모되는 시간을 줄였기 때문입니다. 또한 I..
이 글은 오라클을 기준으로 설명된 글입니다. Lock이란? 먼저 오라클에 왜 Lock이 필요한지 예를 한번 들어보겠습니다. 만약 고객이 창고에 ID=1인 물건의 내용에 숫자 1을 더하고 싶다고 요청했습니다. 요청을 처리하기 위해 SQL문은 아래와 같습니다. SELECT counter FROM counter_table WHERE id = 1; UPDATE counter_table SET counter = WHERE id = 1; 하나의 요청만을 보니 아무런 문제가 없을것 같아보입니다. 하지만 오라클은 병렬처리가 가능하다는 특징이 있습니다. 만약 A라는 고객이 ID=1 인 물건에 숫자 1을 더하고 싶다고 요청을 해서 SQL을 처리하고 있는 중에 B라는 고객이 ID=1인 물건에 숫자 1을 더하고 싶다고 요청을..
SQL문 분석 일반적인 프로그래밍 언어와 SQL의 차이는 무엇일까요?? 여러가지가 있을 수 있지만 SQL은 처리 방법(절차)을 기술하지 않는다는 점이 가장 큰 차이라고 말할 수 있습니다. 예를들어 프로그래밍할 때는 '여기에서 데이터를 꺼내 와서 반복문을 수행하고 조건문을 사용해 분기를 시킨다'와 같이 처리 방법을 기술했을 겁니다. 이에 비해 SQL문에서는 'SELECT A FROM B WHERE C=1'과 같이 테이블 B에서 C=1이라는 조건을 만족하는 데이터에서 A라고하는 속성의 정보를 꺼내오라고만 하지 어디에도 '인덱스를 사용해라', '풀 스캔을 하라' 와 같은 처리 방법을 기술하지는 않습니다. 그러면 SQL은 어떻게 우리가 원하는 데이터를 가져올까요?? RDBMS는 옵티마이저(파서,parse)라고 ..
캐시란? 데이터베이스는 SQL문을 빠르게 처리하기 위한 많은 방법을 사용합니다. 그중에서도 데이터베이스의 처리속도에 가장 큰 영향을 미치는 것은 디스크 I/O 동작입니다.그래서 데이터베이스는 캐시라고 불리는 기술을 사용해 가능한 디스크에서 처리하지 않고, 메모리에서 처리하는 구조를 갖고 있습니다. 빈번하게 사용하는 데이터를 매번 디스크에서 꺼내오지 않고 캐시라고 불리는 메모리에 두고 꺼내오므로써 디스크 I/O동작을 생략해 처리속도를 올리는 것입니다. 오라클에서의 데이터 캐시는 '버퍼 캐시'라고 불립니다. 오라클에서 버퍼 캐시의 존재 유무에 따라 동작이 어떻게 다른지 한번 살펴보겠습니다. 클라이언트가 데이터1을 요청합니다. 요청한 데이터가 버퍼 캐시에 놓여 있는지 확인합니다. 버퍼 캐시에 요청한 데이터가 ..
DBMS DBMS를 이해하기 위해 3가지 키워드를 소개하겠습니다. 키워드 병렬 처리를 가능케 하고 높은 처리량을 실현한다. 응답 시간(response time)을 중시한다. 커밋(commit)한 데이터는 지킨다. 오라클을 포함한 모든 DBMS(Database Management System)은 매우 복잡한 구조로 되어있습니다. DBMS가 복잡해지는 이유는 위에서 이야기한 3가지의 특성을 모두충족시켜야 하기 때문입니다. 세가지 특성은 상반된 성향이 있어서 동시에 모두 만족시키기가 매우 어렵습니다. 예를 들어, '커밋(commit)한 데이터를 지킨다'를 만족하기 위해 커밋하는 순간 데이터를 디스크에 기록하고 싶지만, 그렇게 하면 응답 시간이 나빠지게 됩니다. 오라클을 기준으로 이러한 특성을 어떻게 반영하고 ..
- Total
- Today
- Yesterday
- ExitStatus
- autoconfigure
- kotlin
- scenario test
- spring data jpa
- Mockito
- asSequence
- IntelliJ
- A레코드
- java
- prinicipal
- mockito-kotlin
- 시나리오 테스트
- BatchStatus
- Spring
- WrongTypeOfReturnValue
- AWS INDUSTRY WEEK
- Collection
- test
- Stream
- Parameterized
- 클린 아키텍처
- meta-data
- Spring Batch
- GSLB
- JUnit5
- datasource
- mockK
- assertj
- trailing comma
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |