DB (4) 썸네일형 리스트형 Mysql(Maraidb) 실행 계획 살펴보기 TL;DR 쿼리문 앞에 explain을 붙여 실행하는 것으로 실행 계획을 볼 수 있다. key 항목에 있는 값이 동작한 인덱스이다 type 항목의 있는 값은 const(좋음) -> eq-ref -> ref -> range -> index -> all(안 좋음) 순이다. extra 항목의 값은 동작 방식을 알려주며 인덱스만을 사용했는지, 디스크까지 접근했는지 등을 알려준다. MySQL(Mariadb) 서버는 클라이언트로부터 오는 요청을 처리하기 위해 Parser, Optimizer, Chches 등 수행하는 DB(MySQL, Mariadb) Engines과 실제 데이터를 디스크에 저장하고 조회하는 Storage Engines로 구성되어 있으며 옵티마이저는 요청한 쿼리를 어떤 실행 계획으로 실행했을 때 비.. 트랜잭션의 격리 수준 이라는 등가교환 MVCCRDBMS를 구현하기 위한 개념으로 ACID, Locking, Recovery 등 이 나왔지만동시성 제어 문제가 발생하였고 이를 해결하기 위해 잠금을 통한 상호배제를 사용했었는데상호배제로 인해 대기현상이 발생하여 DBMS의 동시성이 낮아지게 되었다 💡 동시성 제어 문제는 대표적으로 Dirty read, Non-repeatable read, Phantom read 등이 있다. 이러한 상호배제로 인해 낮아진 동시성문제를 해결하기 위해 읽기와 쓰기의 결합을 최소화할 수 있는 방법이 나오게 되었는데그게 바로동시에 발생하는 트랜잭션 속에서 데이터베이스에 저장된 데이터의 일관성과 격리성을 지킬 수 있도록 도와주는다중 버전 동시성 제어(MVCC)이다. MVCC는 SCN이라는 메커니즘을 사용하여 번호 값을 이.. db column명은 snake_case 가 최고다 데이터베이스 Column의 네이밍을 snake_case로 자주 사용하고 있었는데한번 camelCase로 하면 어떤가 하는 중에 발생한 일이었다.아래와 같은 Table를 생성해 두고JPA Entity를 만들어서 조회 쿼리를 호출해 보면 @Table(name = "test_entity")@Entitypublic class TestEntity { @Id @Column(name = "id") private Long id; @Column(name = "phone_number") private String phoneNumber;} select testentity0_.id as id1_0_, testentity0_.phone_number as phone_nu2_0_ from test_entit.. FlyWay로 DB 형상 관리 개발을 하다보니 DB 를 마이그레이션 하는경우가 게속해서 발생되고 테스트 db 에는 마이그레이션을 했으니 운영 db에는 마이그레이션을 안해서 장애가 발생하는 경우 등 다양한 휴먼 에러가 많이 나타난다. FlyWay를 사용하여 이를 관리하려고한다. Flyway Flyway는 데이터베이스의 형상을 관리하기위한 도구로 데이터베이스의 스키마 및 데이터의 변경사항을 관리하고 일관성 있게 유지하도록 지원한다. Flyway는 여러 마이그레이션 이력을 가지고 동작을 하면서 각 버전 과 실행 여부를 관리하며 순차적으로 마이그레이션을 진행하여 최신상태를 유지한다. 현재 개발도구로 SpringBoot + JPA 를 사용하기에 여기에 Flyway를 추가한다. flyway 추가 및 활성 의존성 추가 //flyway implem.. 이전 1 다음