트랜잭션
- 논리적 작업 단위
ACID 속성
- 원자성: 트랜잭션과 관련된 작업은 모두 실행되거나 모두 실패함
- 일관성: 트랜잭션은 참조 무결성 등의 제약 조건을 위반하지 않고 유효한 상태에서 또 다른 유효한 상태로 변경함
- 격리성: 트랜잭션은 다른 트랜잭션이 존재하지 않는 것처럼 서로 간섭 없이 수행되어야 한다.
- 지속성: 트랜잭션 커밋 후에는 시스템이 중단되거나 장애가 발생해도 데이터가 그대로 유지되어야 한다.
@@autocommit
이 지정되면 statement 하나 당 커밋이 된다. 기본적으로는 1로 설정되어 있는 듯
격리 수준
- 트랜잭션이 동시에 변경을 수행하고 쿼리를 수행할 때 성능과 안정성, 일관성 및 결과 재현성 간의 균형을 미세 조정하는 설정
- 트랜잭션이 동시에 수행될 때 다른 트랜잭션에서 변경하거나 조회하는 데이터를 어디까지 볼 수 있도록 허용할 것인지에 대한 설정
인덱스
인덱스 구분
- primary vs secondary
- mysql 은 모든 key 에 대해 index 를 만든다.
- key는 자료를 식별하는 값, index는 자료의 구조