* 저장엔진
접속기능, SQL문의 내용을 사전에 조사하는 기능 => 상위부분
상위 부분의 지시를 받아 실제로 검색이나 파일을 조작하는 기능 => 하위 부분 = 저장엔진
테이블 별로 저장엔진을 지정할 수 있다.
- 저장엔진확인법
SHOW CREATE TABLE 테이블이름;
ENGINE=InnoDB 임을 알 수 있다.
- 저장엔진 변경
ALTER TABLE 테이블 이름 ENGINE=엔진이름;
* 트랜젝션
A의 계좌에서 B의 계좌로 10만원을 송금
1. A의 계좌에서 10만원 뺌
2. B의 계좌에 10만원 넣음
만약 1번 시점에 오류가 발생하면, 2번이 실행되지 않고
A의 계좌에서 10만원만 빠지고 그 돈은 사라질 것이다.
따라서 1,2번을 묶어서 하나로 처리한다.
위와 같이 여러 단계의 처리를 하나의 처리처럼 다루는 것이 트랜젝션이다.
트랜젝션의 실행결과를 데이터베이스에 반영하는 것이 Commit이며
반영시키지않고 되돌리는 것을 RollBack이라 한다.
- 트랜젝션 시작
START TRANSACTION이나 BEGIN, BEGIN WORK
트랜젝션을 시작하고 tb테이블을 삭제하였다.
이 시점에 테이블의 일부기능에 lock이 걸린다.
따라서 다른 세션에서 INSERT 등의 명령을 실행할 수 없다.
트랜젝션을 시작한 콘솔창에서 COMMIT이나 ROLLBACK을 해야 다른 명령을 실행 할 수 있다.
ROLLBACK을 하면 삭제된 테이블이 다시 복구되는 것을 알 수 있다.
- 자동 커밋 기능
일반적으로 MYSQL에서 명령을 실행하면 그대로 반영된다.
명령을 실행하면 그대로 반영되는 기능이 자동 커밋기능이다.
자동 커밋 기능의 기본 설정은 ON이다.
자동 커밋 기능을 끄려면
SET AUTOCOMMIT=0;
으로 하면 된다.
자동 커밋 기능을 끄면 ROLLBACK을 사용할 수 있다.
SET AUTOCOMMIT=1;
을 하면 다시 자동커밋 기능을 켤 수 있다.
자동커밋 기능이 설정되어있는지 확인하려면
SELECT @@AUTOCOMMIT;
을 하면 된다.
0이면 OFF, 1이면 ON
트랜젝션을 COMMIT하지 않고 콘솔창을 닫을 경우엔
트렌젝션을 시작하고 입력한 명령들은 취소된다.
즉, 커밋을 하지 않고 종료하면 그 내용은 파기된다.
'공부 > 데이터베이스' 카테고리의 다른 글
데이터베이스 예제 2 (0) | 2021.04.20 |
---|---|
데이터베이스 예제 1 (0) | 2021.04.19 |
정리 (0) | 2021.04.19 |
파일 사용 (0) | 2021.04.14 |
SQL JOIN (0) | 2021.03.30 |