db

· Database
'인덱스를 잡아봐라', '쿼리의 실행 계획을 봐라'와 같이 쿼리의 실행 속도가 느리면 듣는 말이 있습니다. 하지만 저와 같은 초보 개발자들은 어디에 인덱스를 걸어야 하는지, 실행 계획을 봐도 뭐가 뭔지 잘 모를 것입니다. 그래서 오늘은 실행 계획에 대해 한 번 학습해보려 합니다. 저의 실습 환경은 MariaDB 11.2.2이며, 개념에 대한 부분은 MySQL과 혼합하여 작성해 보겠습니다. EXPLAIN EXPLAIN은 어떠한 쿼리를 실행할 것인가, 즉 실행 계획이 무엇인지 알고 싶을 때 사용하는 명령어입니다. EXPLAIN SELECT U.*, PH.*, P.*, (SELECT SUM(POINT) FROM POINT_HISTORY H WHERE H.USER_ID = U.ID) FROM USER U INN..
· Database
블로킹 (Blocking)이란? 블로킹은 하나의 트랜잭션이 락을 보유하고 있어서 다른 트랜잭션이 해당 데이터에 접근할 수 없을 때 발생합니다. 이는 데이터베이스 성능에 심각한 영향을 미칠 수 있으며, 때로는 데드락으로 발전할 수도 있습니다. 블로킹의 문제점 성능 저하 : 블로킹으로 인해 트랜잭션이 대기 상태에 빠지면, 시스템의 전체적인 처리량이 감소합니다. 데드락 : 두 개 이상의 트랜잭션이 서로 락을 기다리는 상황이 발생하면, 시스템이 더 이상 진행할 수 없게 됩니다. 블로킹 해결 방법 타임아웃 설정 : 특정 시간 동안만 락을 기다리고, 시간이 초과되면 트랜잭션을 중단시키는 방법입니다. 락의 크기 조정 : 락을 걸 때 가능한 가장 작은 데이터 단위에 걸도록 해서, 필요 이상으로 많은 데이터가 락에 걸리..
· Database
데이터베이스는 정보를 안전하게 보관하는 창고와 같습니다. 하지만 때로는 여러 사람이 동시에 같은 정보에 접근하려 할 수 있습니다. 예를 들면, 영화관에서 마지막 한 자리만 남았는데, 두 고객이 거의 동시에 그 자리를 원한다고 상상해보세요. 이런 상황에서 두 고객 모두에게 성공 메시지를 보내면 문제가 생길겁니다. 이런 혼란을 당지하기 위해서 데이터베이스 관리 시스템(DBMS)은 잠금(Lock)이라는 기술을 사용합니다. 이는 마치 한 사람만 문을 통과할 수 있도록 하는 회전문과 같은 원리로 동작하며, 데이터의 안정성과 정확성을 보장해줍니다. 락(Lock)이란? Lock이란 여러 프로세스나 스레드가 동시에 데이터나 자원에 접근하는 것을 제한하기 위한 메커니즘입니다. 이를 통해 동시성 문제를 해결하고 데이터의 ..
포테이토웅
'db' 태그의 글 목록