본문 바로가기
728x90
반응형

💾 데이터베이스(Database)41

[PostgreSQL] Postgre 인덱스(index) 사용 방법 Postgre에서 인덱스를 조회, 생성, 삭제, 확인하는 방법과 인덱스를 어디에 어떻게 생성해야 하는지 인덱스는 조회 속도를 향상시킬 수 있는 중요한 역할을 한다 .하지만 인덱스를 막 사용하게 되면 인덱스를 효울적으로 사용하지 못하기도 하고, 오히려 삽입, 수정, 삭제 등의 연산 작업을 느리게 하여 역효과가 날 수 있다.  인덱스는 어떤 컬럼에 걸어야 할까?기본키(Primary Key): 기본키는 테이블에서 각 행을 고유하게 식별하는데 사용되기 때문에 자동으로 인덱스가 생성된다. 외래키(Foreign Key):  외래키를 포함하는 컬럼은 다른 테이블과의 관계를 나타내므로 조인 연산 및 외래키 제약조건 검색을 최적화하는데 도움된다. 조회(검색)가 자주 발생하는 컬럼: 데이터 검색 (WHERE, JOIN, .. 2024. 2. 24.
[Database] 데이터베이스 성능 최적화 작업 (feat. Data Mart) 대량의 데이터 처리로 부하가 많은 기능에 대한 속도 개선을 위한 Database 성능 최적화 작업 프로젝트를 개발하다 보면 간단하게 처리할 수 있는 기능들도 있지만 매우 많은 양의 데이터를 복잡하게 처리해야 하는 기능들도 필요하다. (이런 시간/공간 복잡도가 높은 기능들을 잘 처리해야 프로젝트의 성능을 높일 수 있다!) 우선 어떤 부분에서 어느 로직이 문제인지 정확하게 파악하는게 중요한데 이 글에서 다루고자 하는 경우는 대량의 통계 데이터를 with, group by, join이 무분별하게 사용된 매우 복잡한 쿼리로 처리하다 보니 데이터베이스에서 데이터를 처리하는 속도가 매우 늦어져서 발생한 성능 이슈이다. 데이터베이스 성능 최적화에는 인덱스 튜닝, 쿼리 최적화, 정규화/비정규화, 캐시 사용, 데이터 분.. 2024. 2. 24.
[SQL] 파티션(Partition) 사용하여 데이터 조회하기. 파티션은 데이터를 효율적으로 저장하고 관리하기 위한 기술로, 테이블이나 인덱스를 더 작은 논리적(물리적) 단위로 분할하는 것을 의미한다. 주요 특징1.성능 향상: 특정 파티션에 대한 쿼리를 실행할 때는 해당 파티션에만 접근하면 되므로 데이터 검색이 빨라질 수 있다. 2.유지 보수 용이성:대용량 테이블을 파티션으로 나누면 데이터 관리가 용이해진다. 특히, 특정 파티션의 데이터를 백업하거나 삭제하는 작업이 간편해진다.3.병렬 처리:파티셔닝은 쿼리를 병렬로 실행할 때 도움이 된다. 각 파티션을 서로 독립적으로 처리될 수 있으므로 병렬 처리를 통해 전체 쿼리의 성능을 향상시킬 수 있다. *파티션 유형: List partition, Range partition, Hash partition, Composite pa.. 2024. 2. 9.
[SQL] WITH 문법 (feat. recursive) WITH를 사용하여 복잡한 쿼리를 간결하게 표현하고, 임시 결과를 생성하여 가독성을 향상시킬 수 있다. SQL WITH절은 임시적인 결과 집합을 생성하여 쿼리 내에서 사용할 수 있게 해주는 기능이다. 주로 서브커리의 가독성 향상이나 동일한 서브쿼리를 여러번 사용 하는 등의 경우에 유용하게 사용할 수 있다. 일반적인 사용 예시 > WITH cte_name (column1, column2, ...) AS ( -- 임시 결과 집합을 생성하는 쿼리 SELECT column1, column2, ... FROM your_table WHERE your_conditions ) -- 기본 쿼리에서 WITH 절에 정의된 임시 결과를 활용 SELECT * FROM cte_name; 위의 쿼리에서 'cte_name'은 임시 .. 2024. 2. 9.
[SQL] SQL Cookbook - 06. 문자열 작업 1. 문자열 짚어보기 - 문자열에서 각 문자를 행으로 반환하기 위해 문자열의 길이만큼 반복하며 출력 DATALENGTH: 주어진 값의 길이를 byte단위로 반환한다. (문자열, 이진 데이터, 변수 등의 길이 측정) SUBSTRING: 문자열에서 특정 부분을 추출한다. ex> SUBSTRING(문자열, 시작위치, 개수) select substr(e.ename, iter.pos, 1) as C from (select ename from emp where ename = 'KING') e, (select id as pos from t10) iter// 1~10까지의 id값을 가지는 t10테이블 where iter.pos TRANSLATE('Hello', 'H', 'X') => Xello REPLACE: 문자열에.. 2023. 10. 11.
[ElasticSearch] REST API 요청과 사용 방법. Elasticsearch는 http 프로토콜로 접근이 가능한 REST API(CRUD)를 지원한다. 설치 및 실행 홈페이지를 통해 다운로드 및 메뉴얼을 확인할 수 있다. Download Elasticsearch Download Elasticsearch or the complete Elastic Stack (formerly ELK stack) for free and start searching and analyzing in minutes with Elastic. www.elastic.co 자세한 설치 방법은 https://triest.tistory.com/46 해당 블로그를 참조하면 된다. REST API 구조 Elasticsearch REST API의 기본 구조. Host: - 클러스터의 호스트 주소 P.. 2023. 10. 7.
[ElasticSearch] ElasticSearch 기본 개념. Elasticsearch는 실시간 검색 및 분석을 위한 오픈 소스 분산 검색 엔진으로, 대용량 데이터를 신속하게 색인하고 검색할 수 있는 강력한 도구이다. 데이터베이스가 아닌 분산 검색/분석 엔진. Elasticsearch는 2010년에 Shay Banon에 의해 만들어졌다. 초기에는 Apache Lucene을 기반으로 하여 검색 기능을 제공하다가, 분산 시스템으로 확장하여 대규모 데이터 처리를 지원하게 되었다. 개념 Elasitcsearch는 주로 검색 및 분석 엔진으로 사용된다. 비정형/반정형 데이터를 JSON 형식으로 색인(index)하고, 강력한 쿼리르 사용하여 데이터를 검색한다. Elasticsearch Query DSL 쿼리를 사용하며, Match, Range, Wildcard 등의 다양한 쿼.. 2023. 10. 7.
[SQL] SQL Cookbook - 05. 메타 데이터 쿼리 메타데이터 쿼리는 데이터베이스나 시스템에서 데이터의 특성, 구조, 속성 등을 조회하고 검색하기 위한 쿼리로, 데이터의 정보를 분석하고 관리하는데 사용된다. *SMEAGOL이라는 스키마가 있다고 가정함. 1. 스키마의 테이블 목록 보기 특정 스키마에서 생성한 모든 테이블 목록 확인 # information_schema.ta bles를 쿼리 select table_name from information_schema.tables where table_schema = 'SMEAGOL' 2. 테이블의 열 나열하기 데이터 유형, 테이블의 열과 해당 열이 있는 테이블의 위치를 나열. # information_schema.columns를 쿼리 select column_name, data_type, ordinal_pos.. 2023. 10. 4.
[Redis] Redis란? 무엇이며 언제 사용하는지. 메모리 기반의 데이터 저장소로서, 데이터를 빠르게 읽고 쓸 수 있는 비관계형 데이터베이스이다. "REmote DIctionary Server"의 약자로, 키-값 구조를 사용하여 데이터를 저장하고 검색한다. 등장 배경 Redis는 2009년에 Salvatore Sanfilippo에 의해 개발되었다. 당시, 메모리 가격이 비싸고 디스크 I/O 속도가 느렸기 때문에, 실시간 응답이 필요한 웹 애플리케이션에서는 데이터베이스에서 데이터를 가져오는 것이 부담스러운 문제였다. 이에 대한 해결책으로 Redis는 데이터를 메모리에 저장하여 빠르게 응답할 수 있도록 하였다. In-memory Database : 특징 데이터 타입 다양성: Redis는 다양한 고유 데이터 타입(String, List, Hash, Set 등).. 2023. 10. 2.
728x90
반응형