트랜잭션과 잠금 트랜잭션은 작업의 완전성을 보장해주는 기능입니다. 즉 논리적인 작업을 모두 완벽하게 처리하거나 또는 처리하지 못하는 경우에는 롤백해서 작업의 일부만 적용되는 현상이 발생하지 않도록 방지해주는 기능입니다. 잠금이란 여러 커넥션에서 동시에 동일한 레코드를 요청할 경우 순서대로 한 시점에는 하나의 커넥션만 변경할 수 있도록 해주는 역할을 합니다. 잠금은 동시성을 제어하기 위한 기능이고, 트랜잭션은 데이터의 정합성을 보장하기 위한 기능입니다. 격리 수준이라는 것은 하나의 트랜잭션 내에서 또는 여러 트랜잭션 간의 작업 내용을 어떻게 공유하고 차단할 것인지 결정하는 레벨을 의미합니다. InnoDB와 MyISAM 스토리지 엔진의 트랜잭션 비교 아래 예제를 살행하면 모두 프라이머리 키 중복으로 인하여 ..
InnoDB 스토리지 엔진 아키텍처 InnoDB는 MySQL에서 사용할 수 있는 스토리지 엔진 중 거의 유일하게 레코드 기반의 잠금 기능을 제공하며, 그로 인해 높은 동시성 처리가 가능하고 안정적이며 성능이 뛰어납니다. 프라이머리 키에 의한 클러스트링 InnoDB의 모든 테이블은 기본적으로 프라이머리 키를 기준으로 클러스트링되어 저장됩니다. 즉 프라이머리 키 값의 순서대로 디스크에 저장된다는 의미이며, 모든 세컨더리 인덱스는 레코드의 주소 대신 프라이머리 키의 값을 논리적인 주소로 사용합니다. 프라이머리 키가 클러스터링 인덱스이기 때문에 프라이머리 키를 이용한 범위 스캔은 상당히 빨리 처리될 수 있습니다. 외래키 지원 외래 키에 대한 지원은 InnoDB 스토리지 엔진 레벨에서 지원하는 기능으로 MyISA..
MySQL의 전체 구조 MySQL 서버는 크게 Mysql 엔진과 스토리지 엔진으로 크게 구분할 수 있습니다. MySQL 엔진 MySQL 엔진은 클라이언트로부터 접속 및 쿼리 요청을 처리하는 커넥션 핸들러와 SQL 파서 및 전처리, 쿼리의 최적화된 실행을 위한 옵티마이저가 중심을 이룹니다. SQL 엔진은 요청된 SQL 문장을 분석하거나 최적화하는 등 DBMS의 두뇌에 해당하는 처리를 수행합니다. 스토리지 엔진 실제 데이터를 디스크 스토리지에 저장하거나 읽어오는 부분을 스토리지 엔진이 전담합니다. Mysql 서버에서 MySQL 엔진은 하나지만 스토리지 엔진은 여러 개를 동시에 사용할 수 있습니다. 핸들러 API MySQL 엔진의 쿼리 실행기에서 데이터를 쓰거나 읽어야 할 때는 각 스토리지 엔진에 쓰기 또는..
시스템 변수란? Mysql 서버는 실행하면서 설정 파일의 내용을 읽어 메모리나 작동 방식을 초기화하고, 접속된 사용자를 제어하기 위해 이러한 값들을 별도로 지정해 둡니다. Mysql 서버에서는 이렇게 저장된 값을 시스템 변수라고 합니다. 시스템 변수 값이 어떻게 Mysql 서버와 클라이언트에게 영향을 미치는지 판단할려면 각 변수가 글로벌 변수인지 세션 변수인지 구분할 수 있어야합니다. 그리고 이를 위해서는 글로벌 변수와 세션 변수가 무엇이고 서로 어떠한 연관 관계가 있는지 이해해야합니다. 시스템 변수 확인 방법 SHOW GLOBAL VARIABLES; MySql 서버 시스템 변수 관련 페이지 https://dev.mysql.com/doc/refman/8.0/en/server-system-variable-..
- Total
- Today
- Yesterday
- service based architecture
- space based architecture
- polling publisher spring boot
- pipe and filter architecture
- redis sorted set
- transactional outbox pattern
- spring boot excel download oom
- transactional outbox pattern spring boot
- spring boot 엑셀 다운로드
- 자바 백엔드 개발자 추천 도서
- spring boot redisson 분산락 구현
- pipeline architecture
- 레이어드 아키텍처란
- spring boot redisson sorted set
- 트랜잭셔널 아웃박스 패턴 스프링부트
- redis 대기열 구현
- java userThread와 DaemonThread
- spring boot redisson destributed lock
- microkernel architecture
- 서비스 기반 아키텍처
- JDK Dynamic Proxy와 CGLIB의 차이
- spring boot poi excel download
- java ThreadLocal
- redis sorted set으로 대기열 구현
- 람다 표현식
- spring boot excel download paging
- 공간 기반 아키텍처
- spring boot redis 대기열 구현
- @ControllerAdvice
- 트랜잭셔널 아웃박스 패턴 스프링 부트 예제
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |