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 |