일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 마이크로서비스
- 헬름
- 익명클래스
- 쿠버네티스
- spring microservice
- cloud native java
- Semaphore
- nGrinder
- devops
- MySQL
- Stress test
- ansible
- ingress
- Spring
- 머신러닝
- 클라우드 네이티브 자바
- CRD
- java
- Kotlin
- 자바
- Algorithm
- Microservice
- cloud native
- Adapter 패턴
- 동기화
- 클라우드 네이티브
- decorator 패턴
- kubernetes
- MSA
- 코틀린
- Today
- Total
목록Database (4)
카샤의 만개시기
Mysql Architecture Mysql 엔진 Mysql 서버의 머리 역할을 담당한다 커넥션 핸들러: 클라이언트로부터의 접속 및 쿼리 요청 SQL 인터페이스: DML, DDL 등 인터페이스 제공 SQL 파서: 쿼리를 트리 구조의 작은 단위로 분리하는 작업을 수행 전처리기: 파서 과정에서 만들어진 파서 트리를 기반으로 쿼리에 문제가 있는지 파악 SQL 옵티마이저 쿼리 실행기: 스토리지 엔진에 쿼리 수행을 요청하며 이때 핸들러 API를 이용 캐시 & 버퍼 핸들러 API 쿼리 실행기에서 데이터를 쓰거나 읽어야 할때는 각 스토리지 엔진에 핸들러 요청을 수행해야 한다 스토리지 엔진 데이터 읽기/쓰기와 같은 Mysql 서버의 손과 발 역할을 수행한다 쿼리 캐시 데이터가 잦은 변경이 일어나는 경우에는 잦은 업데이..
InnoDB에서 잠금은 두가지로 나눌 수 있다. FOR SHARE (LOCK IN SHARE MODE) FOR UPDATE FOR SHARE (LOCK IN SHARE MODE) 트랜잭션이 끝날 때까지 SELECT를 한 Row 값이 변경되지 않는 것을 보장한다. 해당 Row를 수정하려는 쿼리는 잠김 상태가 되어 트랜잭션이 끝날 때까지 대기하게 되고, 조회 쿼리는 여러 세션이 동시에 수행하는 것이 가능하다. 이는 트랜잭션이 끝나기 전까지만 유효하므로 auto_commit을 꺼야 한다. SELECT name FROM user WHERE id = 1 LOCK IN SHARE MODE; # 5.7 SELECT name FROM user WHERE id = 1 FOR SHARE; # 8.0 # 8.0 버전에서는 ..
트랜잭션에서 일관성이 없는 데이터를 허용하도록 하는 수준을 Isolation Level이라고 한다. Isolation Level을 조정하는 경우 동시성이 증가되는데 반해 데이터의 무결성에 문제가 발생할 수 있거나, 데이터의 무결성을 완벽하게 유지하는 데 반하여 동시성이 떨어질 수 있다. ANSI에서 작성된 SQL-92 표준은 다음 네 종류의 Isolation Level을 정의하고 있다. 위에서 아래로 내려갈수록 Consistency(일관성)은 향상되지만 Concurrency(동시성)은 저하된다. Read Uncommitted Read Committed Repeatable Read Serializable Read Uncommitted Isolation Level 쿼리를 수행하는 경우 해당 데이터에 Shar..
MySQL의 HA(High Availabilty)를 위한 Replicaiton 기법은 다음과 같습니다. Master-Slave Replication Group Replication Galera Cluster 이 기법들에 대해서 알아보도록 하겠습니다. Master-Slave Replication 하나의 Master DB와 다수의 Slave DB들을 통해 Replication을 수행하는 방식인데 Master는 Read/Write Mode로 동작하고 Slave들은 Read Mode로 동작합니다. 이 말 뜻은 DB 변경 Query를 수신 받는 DB는 반드시 Master DB에게 변경 요청을 전달하고 Master DB는 변경 내용을 Slave DB에게 전달하여 복제를 수행한다는 말입니다. 그리고 Read 요청은 ..