728x90

DB 3

[Real Mysql(8.0)]트랜잭션과 잠금

트랜잭션이란? 트랜잭션은 작업의 완전성을 보장해 주는 것으로 논리적인 작업 처리를 모두 완벽하게 처리하거나, 그렇지 못할 경우 원상태로 복구해서 작업의 일부만 처리되는 현상(Partial update)를 방지해주는 기능이다. 잠금(Lock) vs 트랜잭션 vs 격리수준 잠금은 여러 커넥션에서 동시에 동일한 자원에 요청할 경우 순서대로 한 시점에는 하나의 거넥션반 변경하게 해주도록 하는 동시성을 제어하기 위한 기능이다. 트랜잭션은 데이터의 정합성을 보장하기 위한 기능이다. 격리수준은 트랜잭션내에서 또는 여러 트랜잭션 간의 작업 내용을 어떻게 공유하고 차단할 것인지를 결정하는 레벨을 의미한다. 주의사항 DBMS의 커넥션처럼 트랜잭션 역시 꼭 필요한 코드에만 최소화 하여 적용하는 것이 좋다. 일반적으로 데이터..

DB 2022.04.17

[DB]MySQL 아키텍처와 InnoDB스토리지 엔진 특징

MySQL 아키텍쳐 1.MySQL 접속 클라이언트 대부분 프로그래밍어에게 접속 api를 제공한다. Shell 스크립트를 통해서도 접속 가능 2.MySQL 엔진 클라이언트 접속과 SQL요청을 처리 한다. 쿼리파서, 전처리기, 옵티마이저, 실행엔진 등으로 이루어져 있다. 3.MySQL 스토리지 엔진 데이터를 실제로 디스크에 저장하거나, 디스크에 저장된 데이터를 읽어오는 역할을 담당 옵티마이저가 작성한 실행 계획에 따라서 스토리지 엔진을 적절히 호출해서 쿼리를 실행한다. 4.운영체제 파일 시스템과 하드웨어 실제 테이블 데이터와 로그 데이터를 파일로 저장한다. 쿼리 실행 과정 1.쿼리 캐시 사용자가 SQL요청을 Mysql로 보내면 쿼리 캐시(쿼리 요청결과를 캐싱하는 모듈)를 통해 동일한 SQL요청에 대한 결과를..

DB 2022.03.17

[DB]커서 페이징과 오프셋 페이징

커서 페이징 cursor를 사용하여 사용자에게 응답한 마지막 데이터를 기준으로 다음 데이터를 요청하고 응답하는 방법 실시간 데이터와 대량의 데이터를 다룰때 사용되는 페이징 방법이다. (무한스크롤) 커서 기반으로 현재 커서의 다음 데이터를 요청하기 때문에 데이터 누락이나 중복 문제가 없다. 커서로 활용할 컬럼은 인덱스가 설정되어 있어야 하고 고유해야 한다. 2개 이상의 커서 값을 사용한다면 어느정도 데이터양 까지는 오프셋 기반의 퍼포먼스가 더 좋다. 커서가 순차적이어야 한다. 오프셋 페이징 DB의 offset쿼리를 사용하여 페이지 단위로 구분하여 요청하고 응답하는 방법 요청한 데이터를 바로 조회하는 것이 아니라, 이전의 데이터를 모두 조회한 후 그 resultSet에서 오프셋을 조건으로 잘라내는 방법 오프..

DB 2022.03.15
반응형