DB
-
Connection PoolDB 2025. 3. 16. 21:26
[Connection Pool이 나오게 된 이유] Connection 객체를 생성하는 작업은 비용이 굉장히 많이 드는 작업이다. DB와의 TCP/IP 연결을 맺는 과정이 포함되어 있기 때문이다.네트워크 레벨에서의 3-way handshake + 인증 + 세션 생성 등의 절차를 포함한 I/O 작업이다. I/O 작업은 요청 후 응답이 올때까지의 대기 시간이 걸리므로 너무 많은 I/O 작업 시 성능 저하가 존재할 수 있다.그래서 빈번한 Connection 생성/종료는 큰 부하를 초래할 수 있다. 따라서 Connection 객체들을 미리 일정 갯수만큼 생성해놓고쿼리를 날리기 위해 Connection 객체들이 필요할때I/O 작업 없이 기존의 미리 생성해놓은 커넥션 객체들을 활용하는 방식을 사용한다. → 어플리케..
-
-
-
DB 클러스터링DB 2025. 1. 26. 23:47
[데이터베이스 클러스터링이란?] 여러 데이터베이스 서버를 하나의 시스템처럼 동작하도록 구성하여 고가용성(High Availability), 확장성(Scalability), 성능(Performance)을 향상시키는 기술. 크게 보면 2가지로 나눌 수 있다. 1. Replication 기반 (Master-Slave 구조)말그대로 복제본을 만들어 Slave라는 이름으로 칭하는 것이다.Master에 데이터 조작이 가능한 CRUD 작업이 들어가고, SELECT 작업은 모두 Slave 에게 위임한다.해당 방식은 대규모 트래픽 분산에 좋다. 2. Sharding 기반 (수평 분산)데이터 키를 기준으로 여러 DB에 나눠서 저장하는 것이다.보통 해시함수를 통해 특정 키에 대한 데이터가 어느 DB에 존재하는지 확인하고,..
-
-
Nested Loops Join with OptimizerDB 2024. 12. 2. 00:04
Nested Loops Join은 조인을 수행할 때 모든 데이터를 JOIN 후에 필터링하는 것이 아니라,미리 WHERE 절로 필터링한 후 테이블을 JOIN 때리는 방식이다 이때 옵티마이저는인덱스, WHERE 절에서 사용하는 칼럼 등을 고려하여어떤 테이블이 드라이빙 테이블로 적합할지 선정한다 [왜 WHERE 절의 인덱스가 중요할까?] 옵티마이저는 JOIN을 먼저 수행하고 WHERE로 필터링하는 것이 아니라, WHERE 절의 조건을 미리 활용해서 인덱스를 타고 JOIN을 진행할 수 있어. SQL 실행 계획을 보면, 옵티마이저는 가능한 한 먼저 데이터를 줄인 후 조인하려고 해.즉, WHERE 조건을 만족하는 데이터만 가져와서 조인을 수행하는 것이 훨씬 빠름. 1. 인덱스를 활용하는 경우SELECT * FROM..
-
RedisDB 2024. 11. 22. 19:31
Redis는 NoSQL RDBMS. 즉 데이터베이스 시스템이다 NoSQL이라 테이블 형식으로 저장하지 않고, Key-Value 형태로 저장함디스크가 아닌 메모리 기반의 데이터 저장소로 In-Memory 솔루션이다 데이터를 기본적으로 주메모리(RAM)에 저장하기 때문에 READ/WRITE 성능이 매우 빠름이런 특성 덕분에 캐싱, 세션 관리, 실시간 데이터 처리 등 속도가 중요한 작업에 적합Redis도 디스크를 사용할 수 있는데 주로 데이터를 백업하거나 복구할 때만 사용! Redis가 캐시 솔루션이라는 의미는데이터를 RAM에 저장하므로, 데이터에 대한 조회와 쓰기가 매우 빨라 Cache처럼 동작할 수 있다는 의미다