본문 바로가기
728x90

ComputerScience22

5.트랜잭션과 잠금 - MySQL 격리 수준 이번 포스트에서는 MySQL 격리 수준에 대해서 알아보겠습니다. MySQL 격리 수준 여러 트랜잭션이 동시에 변경 및 조회를 수행할 때 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하려는 데이터를 볼 수 있게 허용할지 말지를 결정하여 일관성을 유지하는 설정입니다. 격리 수준은 크게 밑의 4가지로 나뉩니다. READ UNCOMMITTED READ COMMITTED REPEATABLE READ(MySQL InnoDB Default) SERIALIZABLE READ UNCOMMITTED 각 트랜잭션 변경 내용이 commit이나 rollback 여부에 상관없이 다른 트랜잭션에서 조회 가능한 격리 수준입니다. 이처럼 다른 트랜잭션에서 처리한 작업이 완료되지 않았는데도 다른 트랜잭션에서 볼 수 있는 현상을 DI.. 2022. 12. 12.
5.트랜잭션과 잠금 - InnoDB 스토리지 엔진 잠금 이번 포스트에서는 InnoDB 스토리지 엔진 잠금의 종류에 대해서 알아보도록 하겠습니다. InnoDB 스토리지 엔진 잠금 InnoDB 스토리지 엔진은 MySQL에서 제공하는 잠금과는 별개로 레코드 기반의 잠금을 탑재하고 있습니다. 레코드 기반의 잠금을 제공하기 때문에 다른 스토리지 엔진보다 훨씬 뛰어난 동시성 처리를 제공합니다. MySQL 서버의 information_schema 데이터베이스에 존재하는 INNODB_TRX, INNODB_LOCKS, INNODB_LOCKS_WAITS 테이블을 조인해서 어떤 잠금이 대기하고 있고 해당 잠금을 어떤 트랜잭션이 가지고 있는지 확인이 가능하며 장시간 잠금을 가지고 있는 클라이언트를 찾아서 종료시킬 수 있습니다. 레코드 락(Record Lock) 레코드 락은 레코드.. 2022. 12. 11.
5.트랜잭션과 잠금 - 트랜잭션과 MySQL 엔진의 잠금 이번 포스트에서는 트랜잭션과 MySQL 엔진의 잠금에 대해서 알아보겠습니다. 트랜잭션(Transaction) 트랜잭션이란 작업의 완전성을 보장해주는 것 입니다. 논리적인 작업셋을 모두 완벽하게 처리하거나 처리하지 못할 경우에는 원 상태로 복구해서 작업의 일부만 적용되는 현상 (Partial Update)이 발생하지 않게 만들어주는 기능입니다. 즉, 하나의 논리적인 작업셋이(여러 SQL 문) 100% 적용되거나(COMMIT) 아무것도 적용되지 않아야(ROLLBACK 또는 트랜잭션을 ROLLBACK 시키는 오류가 발생했을 때)함을 보장해줍니다. MyISAM, MEMORY 스토리지 엔진은 트랜잭션 기능을 제공하지 않기 때문에 Partial Update 현상이 발생하고, InnoDB 스토리지 엔진은 트랜잭션 기.. 2022. 12. 5.
4.MySQL 아키텍처 - 4.2 InnoDB 스토리지 엔진 아키텍처(2) 2022.11.28 - [RealMySQL] - 4.MySQL 아키텍처 - 4.2 InnoDB 스토리지 엔진 아키텍처(1) 4.MySQL 아키텍처 - 4.2 InnoDB 스토리지 엔진 아키텍처(1) 이번 포스트에서는 MySQL의 스토리지 엔진 중 하나인 InnoDB 스토리지 엔진 아키텍처에 대해서 포스트하려합니다. InnoDB는 MySQL에서 사용할 수 있는 스토리지 엔진 중 거의 유일하게 레코드 기반의 rbsks.tistory.com 전 포스트에 이어서 MySQL InnoDB 스토리지 엔진 아키텍처에 대해서 더 알아보려고 합니다. InnoDB 버퍼 풀 InnoDB 스토리지 엔진에서 가장 핵심적인 부분으로, 디스크의 데이터 파일이나 인덱스 정보를 메모리에 캐시해 두는 공간이면서 쓰기 작업을 지연시켜 일괄.. 2022. 12. 1.
4.MySQL 아키텍처 - 4.2 InnoDB 스토리지 엔진 아키텍처(1) 이번 포스트에서는 MySQL의 스토리지 엔진 중 하나인 InnoDB 스토리지 엔진 아키텍처에 대해서 포스트하려합니다. InnoDB는 MySQL에서 사용할 수 있는 스토리지 엔진 중 거의 유일하게 레코드 기반의 잠근을 제공합니다(InnoDB 스토리지 엔진 잠금은 5.3에서 자세히 다룰 예정). 이로 인해 높은 동시성 처리가 가능하고 안정적이며 성능이 뛰어납니다. 프라이머리 키에 의한 클러스터링 InnoDB의 테이블은 기본적으로 프라이머리 키를 기준으로 클러스터링이되어 저장됩니다. 즉 프라이머리 키 값의 순서대로 디스크에 저장된다는 뜻이며, 모든 세컨더리 인덱스는 레코드의 주소 대신 프라이머리 키의 값을 논리적인 주소로 사용합니다. 쿼리 실행 계획에서 프라이머리 키는 다른 보조 인덱스에 비해 비중이 높게 설.. 2022. 11. 28.
4.MySQL 아키텍처 - 4.1 MySQL 엔진 아키텍처(2) 2022.11.22 - [RealMySQL] - 4.MySQL 아키텍처 - 4.1 MySQL 엔진 아키텍처(1) 4.MySQL 아키텍처 - 4.1 MySQL 엔진 아키텍처(1) MySQL 서버는 사람의 머리 역할을 담당하는 MySQL 엔진과 손발 역할을 담당하는 스토리지 엔진으로 구분할 수 있다. MySQL 엔진 클라이언트로부터 접속 및 쿼리 요청을 처리하는 커넥션 핸들러와 SQL rbsks.tistory.com 전 포스트에 이어서 MySQL 엔진 아키텍처에 대해서 더 알아보려고 합니다. 메모리 할당 및 사용 구조 MySQL에서 사용되는 메모리 공간은 크게 글로벌 메모리 영역과 로컬(세션) 메모리 영역으로 구분할 수 있습니다. 글로벌 메모리 영역 글로벌 메모리 영역의 모든 메모리 공간은 MySQL 서버가.. 2022. 11. 28.
728x90