Database 7

PostgreSQL | 데이터 표준화 및 정규화 작업함수 - normalize

이번에 검색기능 및 하이라이트를 작업하면서 알게된 함수입니다 :) 파일 다운로드를 하고, 이미지의 이름을 가져올 때 한국어가 표준화가 안되어 검색이 안되는 현상이 있었는데,PostgreSQL 'normalize' 함수를 사용하여 해결하였습니다 :)데이터베이스 설계에서의 정규화데이터베이스 설계에서 정규화(normalization)란 데이터베이스 테이블을 설계할 때 중복을 최소화하고 데이터 무결성을 유지하기 위한 과정을 말합니다. 주로 관계형 데이터베이스에서 사용되며, 일반적으로 다음과 같은 정규화 단계가 있습니다.  제 1정규화(1NF) 모든 컬럼 값이 원자적(atomic)이어야 합니다. 즉, 각 셀에는 하나의 값을 가지며, 다중 값 속성이 없어야 합니다.  제 2정규화(2NF)부분 함수 종속을 제거하여 ..

Database 2024.07.12

Database | 인덱스(Index) 아키텍처(Architecture) - 클러스터(Cluster)

Architecture 클러스터(Cluster) 데이터베이스에서 다중 데이터베이스와 다중 테이블이 조인될 때 사용되는 개념입니다. 주로 클러스터 키(Cluster Key)를 기반으로 한 데이터 구조를 나타냅니다. 클러스터 키를 공유하는 테이블들의 레코드(행)은 동시에 또는 근처의 데이터베이스 블록에 함께 저장되어 클러스터를 형성합니다. 이를 통해 클러스터 키 값에 의해 정렬된 테이블의 레코드들이 물리적으로 함께 저장되므로 해당 키 값을 기반으로 하는 조인 작업을 향상시킬 수 있습니다. 클러스터의 주요 특징 클러스터 키(Cluster Key) 클러스터를 형성하는 테이블들이나 인덱스들이 사용하는 공통의 키입니다. 이 키를 기반으로 레코드들이 물리적으로 클러스터됩니다. 클러스터 키는 클러스터의 부분들 간에 레..

Database 2024.03.05

Database | 인덱스(Index)를 생성 시 주의할점 및 생성전략

인덱스(Index)란? 데이터베이스에서 검색 속도를 향상시키기 위해 사용되는 데이터 구조입니다. 인덱스는 특정 열(컬럼)에 대한 정렬된 데이터를 가지며, 이를통해 빠른 검색, 정렬, 그룹화, 조인 등의 작업을 가능하게 합니다. 인덱스는 주로 SELECT 쿼리의 성능을 향상시키는데 사용되지만, 삽입, 수정, 삭제와 같은 쓰기 작업의 속도는 저하될 수 있습니다. 인덱스를 사용하게되면, 전체 데이터를 스캔하는 대신 인덱스를 검색하여 원하는 데이터를 빠르게 찾을 수 있습니다. 인덱스(Index)의 특징? 고유성(Uniqueness) 유일한 값을 가지도록 정의할 수 있습니다. 주로 기본키(primary Key)와 관련되어 있습니다. 클러스터드(Clustered) vs 비클러스터드(Non-clustered) 클러스..

Database 2024.03.04

Database | DB Query Optimizer의 실행계획 선택시, 고려 비용 요소들

DB total cost 데이터베이스 쿼리 실행 계획(Execution Plan)에서의 total cost는 쿼리를 실행하는데 필요한 예상 비용을 나타내는 지표입니다. 모든 행을 반환하는데 걸리는 예상 시간입니다. Access Method Cost(접근 방식 비용) 특정 테이블에 엑세스하기 위해 사용되는 비용으로, 인덱스 스캔, 풀 테이블 스캔 등과 같은 다양한 엑세스 방식이 고려됩니다. 인덱스 스캔은 조건에 맞는 행을 찾는데 인덱스를 사용하는 것입니다. 풀 테이블 스캔은 전체 테이블을 순차적으로 읽는 것입니다. Access Method Cost는 각 엑세스 방식에 대한 비용을 측정하여 최적의 엑세스 방법을 선택하는데 사용됩니다. Join Cost(조인 비용) 두 개 이상의 테이블을 조인할 때 발생하는 ..

Database 2024.02.28

PostgreSQL | 모니터링 SQL 정리

유용한 모니터링 SQL 쿼리들을 정리하려고 합니다. 1. pg_stat_activity - 현재 실행중인 쿼리와 세션 정보 SELECT * FROM pg_stat_activity; PostgreSQL 서버에서 현재 실행중인 활동 및 세션 정보를 제공합니다. datid, datname, pid, usesysid, usename, application_name, client_addr, client_hostname, client_port, backend_start, xact_start, query_start, state, waiting, state_change, query 등이 포함될 수 있습니다. 2. pg_stat_user_indexes - 인덱스 사용률 확인 SELECT relname, indexreln..

Database 2024.02.27

PostgreSQL | 데이터를 한 테이블에서 다른 테이블로 복사하거나 이동 쿼리

PostgreSQL에서 SELECT 문의 결과를 이용해 지정한 테이블에 새로운 행을 삽입하는 쿼리입니다. INSERT INTO target_table SELECT column1, column2, ... FROM source_table WHERE condition; target_table : 데이터를 삽입할 대상 테이블의 이름 SELECT column1, column2, ... 원본 테이블에서 선택할 컬럼 목록 source_table : 데이터를 가져올 원본 테이블의 이름 WHERE condition : 필요에 따라 조건을 지정하여 특정 행만 선택 가능 특정 테이블을 다른 테이블로 조건을 통해 복사하거나 이동할 때, 좋은 쿼리입니다.

Database 2024.02.27