데이터베이스6 인덱스 데이터베이스에서 쓰이는 인덱스에 대해 알아보자. 인덱스란?인덱스는 데이터베이스에서 데이터 검색(SELECT) 속도를 높이기 위해 사용되는 자료구조다. 인덱스 장점 SELECT (조회) 성능 향상인덱스 단점대략적으로 테이블의 10% 추가 공간 필요INSERT, UPDATE, DELETE가 자주 발생하면 성능에 악영향 인덱스 종류 클러스터형 인덱스 테이블 당 1개만 생성 가능 PK 컬럼에 대해 자동 생성 리프 노드가 실제 데이터 레코드를 포함따라서 실제 데이터 레코드는 클러스터형 인덱스 키 순서대로 정렬보조 인덱스한 테이블에 여러개 생성 가능 UNIQUE 제약 조건 컬럼에 대해 자동 생성 리프 노드가 실제 데이터 레코드의 위치 포함보조 인덱스 자체는 키에 대해 정렬됨동작 원리 일반적으로 클러스터링 인덱스, .. 데이터베이스 2024. 11. 21. 서브쿼리 vs 조인 서브쿼리와 조인에 중 무엇을 써야 할까? 서브쿼리의 종류 서브쿼리는 쿼리 안에 쿼리가 들어간 것으로 바깥의 쿼리를 메인 쿼리 또는 외부 쿼리라고 한다. 안에 들어간 쿼리는 서브쿼리 또는 내부 쿼리라고 부른다. 서브쿼리는 메인 쿼리의 where, from, select 절 등에 쓰인다. 서브쿼리의 종류에 대해 알아보자. 먼저 서브쿼리가 메인 쿼리와 연관이 있는지 여부에 따라 분류할 수 있다. nested querynested query는 메인 쿼리와 관련이 없는 서브쿼리다. 따라서 서브쿼리 자체로도 실행될 수 있다. SELECT *FROM sales_agentsWHERE agency_fee (SELECT AVG(agency_fee) FROM sales_agents);서브쿼리가 메인 쿼리와 관련 없이 독.. 데이터베이스 2024. 11. 20. JPA에서 식별 관계, 비식별 관계 중 무엇을 사용해야 할까? 최근 ERD를 설계하면서 외래 키를 구성할 때 해당 테이블이 외래 키 없이 식별될 수 있으면 비식별 관계로, 외래 키가 식별에 필요하다면 식별 관계로 설계했다. 이후 JPA를 위해 entity 매핑을 하면서 설계가 별로라고 느껴져서 식별 관계, 비식별 관계에 대해 알아보고, JPA에서는 어떻게 사용하는지 알아보았다. 외래 키 Foreign Key다른 테이블의 PK를 참조하는 속성을 외래 키라 한다. 외래 키는 테이블 간 관계를 맺는 데 사용된다. 외래 키가 속한 테이블을 자식 테이블, 외래 키 값을 제공하는 테이블이 부모 테이블이다. 외래 키로 맺는 관계는 식별 관계, 비식별 관계가 있다. 식별 관계, 비식별 관계식별 관계식별관계는 ERD상에서 실선으로 표시한다. FK가 자식 테이블의 PK에 포함된다. .. 데이터베이스 2024. 9. 18. Data의 Scale Out 캐시 성능12:00가량에 캐시를 적용한 그래프다Select는 캐시히트가 발생하므로 DB에 쿼리 횟수가 감소한다반면 Update는 어차피 DB에 접근을 해야 해서 변화가 거의 없다 Select가 빠지면서 CPU 이용률이 감소한다. CPU 사용률 측정 등 성능 측정은 Locus, Gatling, Jmeter등을 많이 사용한다데이터의 Scale Out서버 2대에 데이터를 나눠서 담는 방법을 생각해보자. 위치 왼쪽 / 오른쪽 작은 숫자 / 큰 숫자%2 연산 이렇게 다양한 방법을 떠올릴 수 있다. 하지만 단순히 위치로 나누면 데이터의 위치를 파악할 수 없다. 따라서 전체를 찾아야 한다. 이런 일을 방지하기 위해서는 데이터를 나누는 규칙기준이 필요하다.위와 같이 %2 연산의 결과로 나누기로 했다고 가정하자. 명.. 데이터베이스 2024. 4. 28. Redis 빌드, RESP V2 명령어 사용해보기 Redis란? In Memory NoSQL 또는 In Memory Cache로 다양한 자료구조를 제공한다. Memory에 모든 자료를 저장한다. 빠르면서 다양한 자료구조를 제공해 개발에 편의성을 제공한다. 캐시 데이터를 DB(디스크)가 아닌 더 빠른 저장 매체(메모리)에 저장해놓고 읽는 것이다. 다양한 방식의 캐시가 있다. 가장 대표적인 방법은 Cache Aside이다. Cache Aside 대부분 캐시가 사용하는 방식이다. 캐시에서 먼저 읽고, 캐시 미스가 발생하면 DB를 읽어서 캐시를 업데이트한다. 장점 : 로직이 애플리케이션에 있어 구현이 쉽고 캐시에는 필요한 내용만 들어가게 된다. 단점 : 캐시 미스가 발생하면 성능이 떨어진다. DB에 업데이트 된 내용이 캐시에 반영되지 않을 수 있다. 캐시 미스.. 데이터베이스/Redis 2024. 4. 20. Java의 DB 접근 방법 https://ittrue.tistory.com/250 [Java] JDBC란 무엇인가? - Java Database Connectivity JDBC란? JDBC(Java Database Connectivity)는 Java 기반 애플리케이션의 데이터를 데이터베이스에 저장 및 업데이트하거나, 데이터베이스에 저장된 데이터를 Java에서 사용할 수 있도록 하는 자바 API이다. JDB ittrue.tistory.com JDBC JDBC는 Java Database Connectivity이다. Java 기반 애플리케이션과 DB간의 API이다. 즉 Java 애플리케이션이 JDBC를 사용해 DB에 연동할 수 있다. Java 프로그램 내에서 SQL문을 실행하기 위한 API이다. java.sql.Connection - .. 데이터베이스 2023. 12. 11. 이전 1 다음