찾다
시스템 튜토리얼리눅스PostgreSQL의 발견 여정

PostgreSQL의 발견 여정

Jan 17, 2024 am 08:15 AM
linux리눅스 튜토리얼레드햇리눅스 시스템리눅스 명령리눅스 인증빨간 모자 리눅스리눅스 비디오

PostgreSQL의 발견 여정

Postgres에는 여러 가지 인덱스 유형이 있으며 새 버전마다 새로운 인덱스 유형이 추가되는 것 같습니다. 각 인덱스 유형은 유용하지만 사용할 유형은 (1) 데이터 유형, 경우에 따라 (2) 테이블의 기본 데이터 및 (3) 수행되는 조회 유형에 따라 달라집니다. 다음 내용에서는 Postgres에서 사용할 수 있는 인덱스 유형과 어떤 인덱스 유형을 사용해야 하는지 소개합니다. 시작하기 전에 안내할 인덱스 유형 목록은 다음과 같습니다.

B-트리
일반화 역지수(GIN)
일반화된 역해석 트리(GiST)
공간 분할 GiST(SP-GiST)
블록 범위 지수(BRIN)
해시
이제 인덱싱을 시작해 보겠습니다.

Postgres에서는 B-Tree 인덱스가 가장 일반적으로 사용되는 인덱스입니다

컴퓨터공학 학위가 있다면 B-Tree 인덱싱을 가장 먼저 배울 수 있습니다. B-트리 인덱스는 항상 균형을 유지하는 트리를 만듭니다. 인덱스를 기반으로 무언가를 찾을 때 트리를 탐색하여 키를 찾고 찾고 있는 데이터를 반환합니다. 인덱스를 사용하면 수천 개의 레코드를 순차적으로 스캔하는 것과 달리 몇 페이지(몇 개의 레코드만 반환하는 경우)만 읽으면 되므로 순차 스캔보다 훨씬 빠릅니다.

표준 CREATE INDEX 문을 실행하면 B-트리 인덱스가 생성됩니다. B-트리 인덱스는 텍스트, 숫자, 타임스탬프 등 대부분의 데이터 유형에 유용합니다. 데이터베이스에서 인덱스를 처음 사용하고 데이터베이스에서 Postgres의 고급 기능을 너무 많이 사용하지 않는 경우 표준 B-Tree 인덱스를 사용하는 것이 아마도 최선의 선택일 것입니다.

다중 값 열의 GIN 인덱스

일반적으로 GIN이라고 불리는 Generalized Inverted Index는 단일 열에 여러 값이 포함된 데이터 유형에 가장 적합합니다.

Postgres 문서에 따르면:

"GIN은 색인화되는 항목이 복합 값이고 색인에 의해 처리되는 쿼리가 복합 항목에서 발생하는 값을 검색해야 하는 상황을 처리하도록 설계되었습니다. 예를 들어 이 항목은 문서일 수 있고 쿼리는 문서에 포함된 특정 문자를 검색할 수 있습니다.”

이 범위에 포함된 가장 일반적인 데이터 유형은 다음과 같습니다.

h스토어
배열
범위
JSONB
GIN 인덱스의 가장 만족스러운 점 중 하나는 복합 값에 저장된 데이터를 이해하는 능력입니다. 그러나 GIN 인덱스에는 추가되는 각 개별 유형의 데이터 구조에 대한 특정 지식이 필요하므로 모든 데이터 유형이 GIN 인덱스에서 지원되는 것은 아닙니다.

겹치는 값이 있는 행에 대한 GiST 인덱스

GiST(Generalized Inverted Seach Tree) 인덱스는 데이터가 동일한 열에 있는 다른 데이터 행과 겹칠 때 가장 적합합니다. GiST 인덱스를 가장 잘 활용하는 방법은 기하학 데이터 유형을 선언하고 두 개의 다각형에 몇 개의 점이 포함되어 있는지 알고 싶은 경우입니다. 어떤 경우에는 특정 점이 상자에 포함될 수 있지만 동시에 다른 점은 다각형에만 존재할 수 있습니다. GiST를 사용하여 색인화되는 일반적인 데이터 유형은 다음과 같습니다.

기하학 유형
전체 텍스트 검색이 필요한 텍스트 유형
GiST 인덱스 크기에는 고정된 제한이 많이 있습니다. 그렇지 않으면 GiST 인덱스가 극도로 커질 수 있습니다. 그 대가로 GiST 인덱스는 손실이 있습니다(부정확).

공식 문서에 따르면:

"GiST 인덱스는 손실이 있습니다. 즉, 인덱스가 잘못된 일치를 생성할 수 있으므로 잘못된 일치를 제거하기 위해 실제 테이블 행을 확인해야 합니다. (PostgreSQL은 필요할 때 자동으로 이 작업을 수행합니다.)"

이것은 잘못된 결과를 얻게 된다는 의미가 아니라 Postgres가 데이터를 반환하기 전에 이러한 가짜 결과를 필터링하기 위해 약간의 추가 작업을 수행한다는 의미입니다.

특별 팁: GIN 및 GiST 인덱스는 종종 동일한 데이터 유형에 사용될 수 있습니다. 일반적으로 성능은 좋지만 디스크 공간을 많이 차지하며 그 반대의 경우도 마찬가지입니다. GIN과 GiST의 경우 모든 상황에 적용할 수 있는 일률적인 솔루션은 없지만 위의 규칙은 가장 일반적인 상황에 적용되어야 합니다.

더 큰 데이터를 위한 SP-GiST 인덱스

SP-GiST(공간 분할 GiST) 인덱스는 Purdue Research의 공간 분할 트리를 채택했습니다. SP-GiST 인덱스는 데이터에 자연적인 클러스터링 요소가 있고 균형 트리가 아닌 경우에 자주 사용됩니다. 전화번호가 좋은 예입니다(적어도 미국 전화번호는 그렇습니다). 형식은 다음과 같습니다:

3자리 지역번호
3자리 프리픽스 번호(구 전화 교환기 관련)
4자리 줄번호
이는 첫 번째 세트의 처음 세 자리 숫자에 자연적인 클러스터링 요소가 있고 그 다음 세 자리 숫자의 두 번째 세트가 이어지며 숫자가 균등하게 분포된다는 것을 의미합니다. 그러나 전화번호의 일부 지역번호에서는 다른 지역보다 포화 상태가 더 높습니다. 그 결과 매우 불균형한 트리가 될 수 있습니다. 자연적인 집계 요소가 사전에 있고 데이터가 균등하게 분산되지 않기 때문에 전화번호와 같은 데이터는 SP-GiST에 좋은 사례가 될 수 있습니다.

더 큰 데이터를 위한 BRIN 인덱스

BRIN(블록 범위 인덱스)은 SP-GiST와 같은 일부 상황에 중점을 두고 데이터에 자연스러운 순서가 있고 데이터 크기가 큰 경우에 가장 잘 사용됩니다. 연대순으로 10억 개의 레코드가 있는 경우 BRIN이 유용할 수 있습니다. 여러 우편번호와 같이 자연적으로 그룹화되는 대규모 데이터 세트를 쿼리하는 경우 BRIN은 유사한 우편번호가 디스크의 가까운 위치에 저장되어 있는지 확인하는 데 도움이 될 수 있습니다.

날짜나 우편번호별로 정렬된 매우 큰 데이터베이스가 있는 경우 BRIN 인덱스를 사용하면 일부 불필요한 데이터를 매우 빠르게 건너뛰거나 제외할 수 있습니다. 또한 BRIN 인덱스는 전체 데이터 크기에 비해 상대적으로 작으므로 데이터 세트가 클 경우 BRIN 인덱스가 더 나은 성능을 발휘할 수 있습니다.

해시 인덱스, 마침내 더 이상 충돌을 두려워하지 않습니다

해시 인덱스는 수년 동안 Postgres에 사용되어 왔지만 Postgres 10이 출시될 때까지 해시 인덱스 사용에 대한 큰 주의 사항이 있었습니다. 이는 WAL 로그가 아니었습니다. 즉, 서버가 충돌하고 대기로 장애 조치할 수 없거나 예를 들어 wal-g를 사용하여 아카이브에서 복원할 수 없으면 다시 빌드할 때까지 해당 인덱스를 잃게 됩니다. Postgres 10이 출시되면서 이제 WAL에 기록되므로 다시 사용하는 것을 고려할 수 있지만 실제 질문은

입니다.

해시 인덱스는 때때로 B-Tree 인덱스보다 빠른 조회를 제공하고 생성 속도도 빠릅니다. 가장 큰 문제는 "동등" 비교 작업에만 제한되어 있으므로 정확히 일치하는 조회에만 사용할 수 있다는 것입니다. 이로 인해 해시 인덱스는 일반적으로 사용되는 B-Tree 인덱스보다 유연성이 훨씬 떨어지므로 이를 대체물로 생각해서는 안 되며 특별한 경우를 위한 인덱스로 생각해야 합니다.

어떤 것을 사용해야 하나요?

방금 많이 소개했는데 조금 겁이 나시면 정상입니다. 이전에 이것을 알고 있다면 CREATE INDEX는 항상 B-Tree를 사용하여 인덱스를 생성하며 좋은 소식은 Postgres 성능이 대부분의 데이터베이스에 대해 좋거나 매우 좋다는 것입니다. :) 더 많은 Postgres 기능 사용을 고려하고 있다면 다른 Postgres 인덱스 유형을 사용할 때의 치트 목록은 다음과 같습니다.

B-트리 - 대부분의 데이터 유형 및 쿼리에 적합
GIN - JSONB/hstore/배열용
GiST - 전체 텍스트 검색 및 기하학적 데이터 유형용
SP-GiST - 자연적인 집계 인자가 있지만 분포가 고르지 않은 대규모 데이터 세트에 적합합니다
BRIN - 순차적인 대규모 데이터 세트에 적합
해시 - 동등 연산에 적합하지만 일반적으로 B-Tree 인덱스만 있으면 됩니다.
이 기사에 대해 질문이나 피드백이 있으면 언제든지 Slack 채널에 참여해 주세요.

위 내용은 PostgreSQL의 발견 여정의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 Linux就该这么学에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
Linux 운영이란 무엇입니까?Linux 운영이란 무엇입니까?Apr 13, 2025 am 12:20 AM

Linux 운영 체제의 핵심은 명령 줄 인터페이스이며 명령 줄을 통해 다양한 작업을 수행 할 수 있습니다. 1. 파일 및 디렉토리 작업 LS, CD, MKDIR, RM 및 기타 명령을 사용하여 파일 및 디렉토리를 관리합니다. 2. 사용자 및 권한 관리는 UserAdd, Passwd, CHMOD 및 기타 명령을 통해 시스템 보안 및 리소스 할당을 보장합니다. 3. 프로세스 관리는 PS, Kill 및 기타 명령을 사용하여 시스템 프로세스를 모니터링하고 제어합니다. 4. 네트워크 운영에는 Ping, Ifconfig, SSH 및 기타 명령이 포함되어 있으며 네트워크 연결을 구성하고 관리합니다. 5. 시스템 모니터링 및 유지 관리 Top, DF, Du와 같은 명령을 사용하여 시스템의 작동 상태 및 리소스 사용을 이해합니다.

Linux 별칭을 사용하여 사용자 정의 명령 바로 가기로 생산성을 높이십시오Linux 별칭을 사용하여 사용자 정의 명령 바로 가기로 생산성을 높이십시오Apr 12, 2025 am 11:43 AM

소개 Linux는 유연성과 효율성으로 인해 개발자, 시스템 관리자 및 전원 사용자가 선호하는 강력한 운영 체제입니다. 그러나 길고 복잡한 명령을 자주 사용하는 것은 지루하고 응급실이 될 수 있습니다.

Linux는 실제로 좋은 것은 무엇입니까?Linux는 실제로 좋은 것은 무엇입니까?Apr 12, 2025 am 12:20 AM

Linux는 서버, 개발 환경 및 임베디드 시스템에 적합합니다. 1. 서버 운영 체제로서 Linux는 안정적이고 효율적이며 종종 고 대전성 애플리케이션을 배포하는 데 사용됩니다. 2. 개발 환경으로서 Linux는 효율적인 명령 줄 도구 및 패키지 관리 시스템을 제공하여 개발 효율성을 향상시킵니다. 3. 임베디드 시스템에서 Linux는 가볍고 사용자 정의 가능하며 자원이 제한된 환경에 적합합니다.

Linux에서 윤리적 해킹을 마스터하기위한 필수 도구 및 프레임 워크Linux에서 윤리적 해킹을 마스터하기위한 필수 도구 및 프레임 워크Apr 11, 2025 am 09:11 AM

소개 : Linux 기반의 윤리적 해킹으로 디지털 프론티어 보안 점점 더 상호 연결된 세상에서 사이버 보안이 가장 중요합니다. 윤리적 해킹 및 침투 테스트는 취약점을 적극적으로 식별하고 완화하는 데 필수적입니다.

Linux 기본 사항을 배우는 방법?Linux 기본 사항을 배우는 방법?Apr 10, 2025 am 09:32 AM

기본 Linux 학습 방법은 다음과 같습니다. 1. 파일 시스템 및 명령 줄 인터페이스 이해, 2. LS, CD, MKDIR, 3. 파일 생성 및 편집과 같은 파일 작업 배우기, 4. 파이프 라인 및 GREP 명령과 같은 고급 사용법, 5. 연습 및 탐색을 통해 지속적으로 기술을 향상시킵니다.

Linux를 가장 많이 사용하는 것은 무엇입니까?Linux를 가장 많이 사용하는 것은 무엇입니까?Apr 09, 2025 am 12:02 AM

Linux는 서버, 임베디드 시스템 및 데스크탑 환경에서 널리 사용됩니다. 1) 서버 필드에서 Linux는 안정성 및 보안으로 인해 웹 사이트, 데이터베이스 및 응용 프로그램을 호스팅하기에 이상적인 선택이되었습니다. 2) 임베디드 시스템에서 Linux는 높은 사용자 정의 및 효율성으로 인기가 있습니다. 3) 데스크탑 환경에서 Linux는 다양한 사용자의 요구를 충족시키기 위해 다양한 데스크탑 환경을 제공합니다.

리눅스의 단점은 무엇입니까?리눅스의 단점은 무엇입니까?Apr 08, 2025 am 12:01 AM

Linux의 단점에는 사용자 경험, 소프트웨어 호환성, 하드웨어 지원 및 학습 곡선이 포함됩니다. 1. 사용자 경험은 Windows 또는 MacOS만큼 친절하지 않으며 명령 줄 인터페이스에 의존합니다. 2. 소프트웨어 호환성은 다른 시스템만큼 좋지 않으며 많은 상용 소프트웨어의 기본 버전이 부족합니다. 3. 하드웨어 지원은 Windows만큼 포괄적이지 않으며 드라이버를 수동으로 컴파일 할 수 있습니다. 4. 학습 곡선은 가파르고 명령 줄 운영을 마스터하는 데 시간과 인내가 필요합니다.

Linux는 배우기가 어렵습니까?Linux는 배우기가 어렵습니까?Apr 07, 2025 am 12:01 AM

LinuxisNothardTolearn, ButtheDifficulturedsonyourbackground 및 Ggoals.forthosewithoSexperience, 특히 Command-linefamiliarity, BeginnersMayFaceAsTeeperLearneLearneCURVEBUTCANMANAGEWITHPROPERSORCES.LINUX'SOURCENATURY, BAS

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구