본문 바로가기
728x90

💾Database & Server38

[PostgreSQL] DB 서버 죽어서 재시작 안되는 문제 Postgres 서버가 죽었는데 재시작이 안되는 문제가 종종 있다.. Linux(CentOS)에서 postgres 서버를 올려 사용하고 있는데 갑자기 PostgreSQL 연결이 끊겨 서버를 확인해보니 postgres 서버가 죽어있어 재시작 하려고 하니 밑의 문구가 나오며 서버 시작이 되지 않았다.psql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432"? 에러 로그 상으로는 Postgres 서버가 실행되지 않았거나, 소켓 파일이 존재하지 않거나 올바른 위치에 있지 않을 .. 2024. 4. 29.
[PostgreSQL] generate_series() 숫자/날짜 시퀸스 생성 Query에서 숫자 또는 날짜에 대한 시퀸스 데이터를 생성하여 사용할 수 있다. Query문을 작성하다 보면 반복되는 숫자, 날짜 데이터가 필요한 경우가 있는데 Postgresql에서는 generate_series() 함수로 순차적인 숫자 또는 날짜 데이터를 생성할 수 있또록 지원한다. python의 for문과 비슷한 형식이다. generate_series() 함수란? 'generate_series()' 함수는 PostgreSQL에서 사용되는 유용한 함수 중 하나로, 숫자 또는 날짜에 대한 범위 데이터를 생성하는데 사용된다. 주로 테이블에 가상의 데이터를 생성하거나 특정 범위에 대한 반복 작업을 수행할 때 유용하다. generate_series(start, stop, step) start: 시작 값 st.. 2024. 3. 10.
[PostgreSQL] Postgre에서 인덱스 사용하는 방법 Postgre에서 인덱스를 조회, 생성, 삭제, 확인하는 방법과 인덱스를 어디에 어떻게 생성해야 하는지 인덱스는 조회 속도를 향상시킬 수 있는 중요한 역할을 한다 .하지만 인덱스를 막 사용하게 되면 인덱스를 효울적으로 사용하지 못하기도 하고, 오히려 삽입, 수정, 삭제 등의 연산 작업을 느리게 하여 역효과가 날 수 있다. 인덱스는 어떤 컬럼에 걸어야 할까? 기본키(Primary Key): 기본키는 테이블에서 각 행을 고유하게 식별하는데 사용되기 때문에 자동으로 인덱스가 생성된다. 외래키(Foreign Key): 외래키를 포함하는 컬럼은 다른 테이블과의 관계를 나타내므로 조인 연산 및 외래키 제약조건 검색을 최적화하는데 도움된다. 조회(검색)가 자주 발생하는 컬럼: 데이터 검색 (WHERE, JOIN, O.. 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.
[SQLD] SQL 자격검정 실전문제 - 핵심 정리 (데이터 모델링의 이해) SQLD 자격증 시험을 준비하며 SQL 자격검정 실전문제 교재의 제1-1장. 데이터 모델링의 이해 단원 핵심내용 정리 과목 1. 데이터 모델링의 이해 제1장. 데이터 모델링의 이해 발생시점에 따른 엔티티 분류 기본/키엔티티 (Fundamental Enity, Key Entity) 중심엔티티 (Main Entity) 행위엔티티 (Active Entity) 데이터 모델링이란? 정보시스템을 구축하기 위한 데이터 관점의 업무 분석 기법 현실세계의 데이터에 대해 약속된 표기법에 의해 표현하는 과정 데이터베이스를 구축하기 위한 분석/설계의 과정 데이터 모델링의 유의점 중복 (Duplication) 비유연성 (Inflexibility) 비일관성 (Inconsistency) 개념적 데이터 모델링 추상화 수준이 높고 업.. 2023. 10. 23.
[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.
728x90