본문 바로가기

학교 수업/데이터베이스

데이터베이스 12주차

ACID와 트랜잭션

ACID란?

트랜잭션의 수행 보장

원자성: 모든 작업이 반영되거나 모두 롤백

일관성: 미리 정의된 규칙의 값만 저장

고립성: 트랜잭션 간에 간섭 불가

영구성: 반영된 트랜잭션은 영구 적용

원자가 영구적으로 일관되게 고립된다.


SQL 프로파일링

sysbench로 스키마 전체 트랜잭션 성능을 분석할 수 있다.

단일 SQL문은 프로파일링으로 단계별 작업 시간을 볼 수 있다.

 

쿼리 프로파일링 기능이 활성화 되어 있는지 확인하기

SHOW VARIABLES LIKE '%profiling%';
SHOW VARIABLES LIKE 'performance_schema';

프로파일링 체크박스를 누름으로써 단계별 작업 시간을 볼 수 있다.

 

 

프로파일링 결과

Starting과 Opening Tables는 쿼리문에 상관없이 공통적으로 많은 시간을 소비한다.

풀 스캔

type = ALL
Sending Data, 전체 데이터 요청/응답에 시간의 비중이 가장 높다.

단일 스캔

type = CONST

Statistics, 통계 정보 업데이트 시간이 요구된다.

Freeing Items, 자원 해제에 비교적 시간이 추가 요구된다.

내림차순 정렬

type = INDEX

Sending Data, 풀 스캔과 같이 데이터 전송시간의 비중이 높다.

다중 정렬

type = ALL

Creating Sort index, 인덱스로 지정되지 않은 행에 새로운 정렬을 시도하면 엄청나게 큰 시간 비용을 요구한다.

 

그룹화

type = INDEX

Sending Data, 인덱스로 지정되지 않은 행을 그룹화 할 경우 인덱스 풀 스캔이 발생한다.

'학교 수업 > 데이터베이스' 카테고리의 다른 글

데이터베이스 13주차  (0) 2022.06.12
데이터베이스 11주차  (0) 2022.06.04
데이터베이스 10주차  (0) 2022.06.03
데이터베이스 9주차  (0) 2022.05.30
데이터베이스(2) - DCL  (0) 2022.04.16