반응형 DB8 mysql 트랜잭션 격리수준 트랜잭션의 격리 수준이란 여러 트랜잭션이 동시에 처리 될 때, 다른 트랜잭션에 의해 영향을 받는 정도이다.트랜잭션 격리 수준은 아래와 같이 4단계로 이루어져있다.READ UNCOMMITTEDREAD COMMITTEDREPEATABLE READSERIALIZABLE각 단계에서 발생할 수 있는 상황과 격리수준 및 동시 처리 성능은 아래와 같다. DIRTY READNON-REPEATABLE READPHANTOM READ격리 수준동시 처리 성능READ UNCOMMITTEDOOO낮음높음READ COMMITTEDXOO REPEATABLE READXXX SERIALIZABLEXXX높음낮음일반적으로 격리 수준이 높아질수록 동시 처리 성능이 크게 떨어진다고 하지만, mysql에서 serializable을 제외한 나머.. 2025. 3. 3. mysql 아키텍쳐[2] - 버퍼풀 버퍼풀 자료구조버퍼풀은 여러개의 데이터 페이지로 이루어져 있다.버퍼풀은 메모리 공간에 존재하기에 무한정 많은 데이터를 담고 있을 수 없다.사용하지 않는 데이터는 제거되야한다.버퍼풀에서 사용되는 자료구조를 살펴보자. LRU(Least Recently Used) 리스트 : 가장 오래동안 사용되지 않은 데이터 페이지 제거New 서브리스트- MRU(Most Recently Used) 알고리즘을 통해 가장 많이 읽힌 데이터들이 존재하는 공간- 버퍼풀의 데이터를 읽어들이면 해당 데이터는 리스트의 머리부분으로 이동한다.Old 서브리스트 - LRU 알고리즘이 사용되는 공간으로 오랫동안 읽히지 않는 데이터 관리- 오랫동안 사용되지 않은 데이터는 나이가 증가하고 꼬리 부분으로 이동된다.데이터를 디스크에서 처음 버퍼풀로 가.. 2025. 2. 7. mysql 아키텍쳐[1] - 아키텍쳐, 언두로그, 리두로그 * 이글은 RealMysql 책을 참고하여 작성한 내용입니다.db 성능은 디스크 접근횟수에 달려있다. 일반적으로 메모리는 디스크보다 1000~1만 배 빠르다.최대한 메모리에서 많은 작업을 하고 디스크 접근을 최소화해야한다. mysql db를 공부하며 위의 전제조건이 중요하다.mysql 아키텍쳐 설계는 쓰기 작업의 안정성도 보장하지만 무엇보다 읽기 성능 향상을 위해 설계되어있다.위 내용을 중점에 두고 글을 이해해보자. mysql 아키텍쳐 [mysql 엔진]커넥션 핸들러 - 클라이언트 접속 허용- 쿼리 실행 요청sql 파서- 쿼리를 토큰(mysql이 인식할 수 있는 최소 단위의 어휘나 기호)으로 분리해 트리 형태의 구조를 만들어 내는 작업- 기본 sql 문법 오류 검사sql 전처리기- 쿼리 파서에 의해 만.. 2025. 2. 6. B-tree와 인덱스 (feat. mysql) B-tree (Balaced tree) Mysql DB는 인덱스 및 실제 데이터를 B-tree 알고리즘을 통해 관리한다. 각 노드는 하나의 페이지 형태로 여러 레코드 정보를 갖고 있다.페이지의 크기가 정해져 있기에 인덱스 키 값의 크기에 따라 저장할 수 있는 레코드 수가 달라진다.클러스터드 인덱스는 데이터 파일의 물리적 저장 방식을 결정하기에 리프 노드에 모든 칼럼 정보가 저장되며,세컨더리 인덱스의 경우 데이터의 주소로 클러스터드 인덱스 키값을 사용한다.따라서 세컨더리 인덱스로 조회하는 경우 클러스터드 인덱스를 한번 더 거쳐 조회되는 특징이 있다.세컨더리 인덱스 리프 노드에 데이터 주소가 아닌 pk 값을 할당하는 이유?데이터 주소를 사용하게 되면 데이터 변경, 이관, 분리와 같은 상황에서 이를 사용하는.. 2021. 11. 7. 이전 1 2 다음 반응형