DB
-
커넥션 풀(Connection Pool)DB 2025. 3. 16. 21:26
Connection 객체를 생성하는 작업은 비용이 굉장히 많이 드는 작업 중 하나임. 아래는 Connection 객체를 생성하는 과정임. 1. 어플리케이션에서 DB 드라이버를 통해 커넥션을 조회한다.2. DB 드라이버는 DB와 TCP/IP 커넥션을 연결한다. 3 way handshake 같은 네트워크 연결 동작 발생3. DB 드라이버는 TCP/IP 커넥션이 연결되면 아이디와 패스워드, 기타 부가 정보를 DB에 전달한다.4. DB는 아이디, 패스워드를 통해 내부 인증을 거친 후에 내부에 커넥션을 생성.5. DB는 커넥션 생성이 완료되었다는 응답을 보냄6. DB 드라이버는 생성된 커넥션 객체를 클라이언트에게 반환. DB 연결할 때마다 Connection 객체를 새로 만드는 것은 비용이 많이 들며, 굉장히 비..
-
-
-
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처럼 동작할 수 있다는 의미다