본문 바로가기
728x90

RDBMS4

mysql docker 실행하기 FROM mysqlENV MYSQL_USER=adminENV MYSQL_PASSWORD=1234ENV MYSQL_ROOT_PASSWORD=1234ENV MYSQL_DATABASE=commerceCMD ["--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci"] 위의 dockerfile 을 직접 실행 or docker image 를 실행할때 위의 ENV 정보를 넣어주면 된다. 2025. 1. 29.
RDBMS 에서의 비관적락 처리 과정 및 주의사항 멘토링을 진행하면서, 낙관적락 사용과 비관적락 사용에 대해 정확히 인지하지 못하는 주니어 개발자들이 많다는 것을 느꼈다.val Object = 오늘은 왜 충돌이 많이 발생하는 상황에서 비관적락이 낙관적락보다 더 처리속도가 빠른지를 포스팅 하려고 한다.  1. 비관적락에서의 대기시간    : 비관적 락(Pessimistic Lock)에서 최초 락을 획득하고 이후 트랜젝션이 락을 점유하려고 요청 시 이전 락이 해제될 때까지 다음 트랜잭션은 DB 레벨에서 대기하게 된다. 2. 비관적 락과 락 관리 순서    - 비관적 락은 주로 SELECT ... FOR UPDATE 같은 쿼리에서 사용되며, 해당 데이터에 대한 락을 DB 레벨에서 걸고 관리한다.    - 트랜잭션이 완료되어 커밋(commit) 또는 롤백(ro.. 2025. 1. 27.
mysql named lock 에 대해서 분산락이라고 하면 레디스 기반으로 처리하는것이 일반적이다.하지만, 개발 조직이 소규모이고, 레디스를 사용하는 것에 대해 기술적 비용적 부담이 있다라고 하면 손쉽게 mysql 기능 중 하나인 named lock 을 기반으로 분산락을 구현할 수 있다. MySQL의 GET_LOCK()과 RELEASE_LOCK() 함수를 이용해 보자! 1. GET_LOCK(lock_name, timeout)    : 지정된 이름으로 락을 획득하려고 시도(timeout 은 초기반) 2. RELEASE_LOCK(lock_name): 지정된 이름의 락을 해제 import org.springframework.data.jpa.repository.Query;import org.springframework.data.repository.qu.. 2024. 12. 27.
MySQL Replication 구성 방법 서비스를 운영하다보면은 하나의 단일 구성으로 DB 를 사용했을때,DB의 지원한계로 인해 원활한 운영이 되지않는경우가 있다. 대표적으로 DB Transaction 처리 건들이 많아서, 계속해서 thread pool wait현상이 발생하는경우, 단일 조회 처리가 매우 오래걸리는 건 때문에(과도한 서브쿼리, 복잡한 쿼리 사용으로)다른 자원에서는 단순 조회만 처리하면되는데, 이건들도 앞단의 pending 작업으로 인해 대기가 발생하게 된다.(얼마나 비효율적인가?) 이렇게 등장한 개념이 CQRS!! 조회와 조회가 아닌건들을 분리하자!그리고 이를 지원하고자 나온 개념이 MySQL의 Replication!!(조회라도 분산시켜주자) Replication 구성을 하게되면,Master 와 Master 가아닌 Slave 로.. 2024. 10. 2.
728x90