시스템 튜토리얼 리눅스 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 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를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

DeepSeek 웹 버전 입구 DeepSeek 공식 웹 사이트 입구 DeepSeek 웹 버전 입구 DeepSeek 공식 웹 사이트 입구 Feb 19, 2025 pm 04:54 PM

DeepSeek은 웹 버전과 공식 웹 사이트의 두 가지 액세스 방법을 제공하는 강력한 지능형 검색 및 분석 도구입니다. 웹 버전은 편리하고 효율적이며 설치없이 사용할 수 있습니다. 개인이든 회사 사용자이든, DeepSeek를 통해 대규모 데이터를 쉽게 얻고 분석하여 업무 효율성을 향상시키고 의사 결정을 지원하며 혁신을 촉진 할 수 있습니다.

DeepSeek을 설치하는 방법 DeepSeek을 설치하는 방법 Feb 19, 2025 pm 05:48 PM

Docker 컨테이너를 사용하여 사전 컴파일 된 패키지 (Windows 사용자의 경우)를 사용하여 소스 (숙련 된 개발자)를 컴파일하는 것을 포함하여 DeepSeek를 설치하는 방법에는 여러 가지가 있습니다. 공식 문서는 신중하게 문서를 작성하고 불필요한 문제를 피하기 위해 완전히 준비합니다.

Bitget 공식 웹 사이트 설치 (2025 초보자 안내서) Bitget 공식 웹 사이트 설치 (2025 초보자 안내서) Feb 21, 2025 pm 08:42 PM

Bitget은 스팟 거래, 계약 거래 및 파생 상품을 포함한 다양한 거래 서비스를 제공하는 Cryptocurrency 교환입니다. 2018 년에 설립 된이 교환은 싱가포르에 본사를두고 있으며 사용자에게 안전하고 안정적인 거래 플랫폼을 제공하기 위해 노력하고 있습니다. Bitget은 BTC/USDT, ETH/USDT 및 XRP/USDT를 포함한 다양한 거래 쌍을 제공합니다. 또한 Exchange는 보안 및 유동성으로 유명하며 프리미엄 주문 유형, 레버리지 거래 및 24/7 고객 지원과 같은 다양한 기능을 제공합니다.

Ouyi OKX 설치 패키지가 직접 포함되어 있습니다 Ouyi OKX 설치 패키지가 직접 포함되어 있습니다 Feb 21, 2025 pm 08:00 PM

세계 최고의 디지털 자산 거래소 인 Ouyi Okx는 이제 안전하고 편리한 거래 경험을 제공하기 위해 공식 설치 패키지를 시작했습니다. OUYI의 OKX 설치 패키지는 브라우저를 통해 액세스 할 필요가 없습니다. 설치 프로세스는 간단하고 이해하기 쉽습니다. 사용자는 최신 버전의 설치 패키지를 다운로드하고 설치를 단계별로 완료하면됩니다.

Gate.io 설치 패키지를 무료로 받으십시오 Gate.io 설치 패키지를 무료로 받으십시오 Feb 21, 2025 pm 08:21 PM

Gate.io는 사용자가 설치 패키지를 다운로드하여 장치에 설치하여 사용할 수있는 인기있는 cryptocurrency 교환입니다. 설치 패키지를 얻는 단계는 다음과 같습니다. Gate.io의 공식 웹 사이트를 방문하고 "다운로드"를 클릭하고 해당 운영 체제 (Windows, Mac 또는 Linux)를 선택하고 컴퓨터에 설치 패키지를 다운로드하십시오. 설치 중에 항 바이러스 소프트웨어 또는 방화벽을 일시적으로 비활성화하여 원활한 설치를 보장하는 것이 좋습니다. 완료 후 사용자는 GATE.IO 계정을 만들려면 사용을 시작해야합니다.

Ouyi Exchange 다운로드 공식 포털 Ouyi Exchange 다운로드 공식 포털 Feb 21, 2025 pm 07:51 PM

OKX라고도하는 Ouyi는 세계 최고의 암호 화폐 거래 플랫폼입니다. 이 기사는 OUYI의 공식 설치 패키지 용 다운로드 포털을 제공하여 사용자가 다른 장치에 OUYI 클라이언트를 설치할 수 있도록합니다. 이 설치 패키지는 Windows, Mac, Android 및 iOS 시스템을 지원합니다. 설치가 완료되면 사용자는 OUYI 계정에 등록하거나 로그인하고 암호 화폐 거래를 시작하며 플랫폼에서 제공하는 기타 서비스를 즐길 수 있습니다.

Gate.io 공식 웹 사이트 등록 설치 패키지 링크 Gate.io 공식 웹 사이트 등록 설치 패키지 링크 Feb 21, 2025 pm 08:15 PM

Gate.io는 광범위한 토큰 선택, 낮은 거래 수수료 및 사용자 친화적 인 인터페이스로 유명한 호평을받는 암호 화폐 거래 플랫폼입니다. Gate.io는 고급 보안 기능과 우수한 고객 서비스를 통해 트레이더에게 신뢰할 수 있고 편리한 암호 화폐 거래 환경을 제공합니다. Gate.io에 가입하려면 제공된 링크를 클릭하여 공식 등록 설치 패키지를 다운로드하여 Cryptocurrency 거래 여정을 시작하십시오.

우분투에서 nginx와 함께 phpmyadmin을 설치하는 방법은 무엇입니까? 우분투에서 nginx와 함께 phpmyadmin을 설치하는 방법은 무엇입니까? Feb 07, 2025 am 11:12 AM

이 튜토리얼은 기존 Apache 서버와 함께 Ubuntu 시스템에 Nginx 및 Phpmyadmin을 설치하고 구성하는 것을 안내합니다. 우리는 Nginx 설정, Apache와의 잠재적 포트 충돌 해결, Mariadb 설치를 다루겠습니다.

See all articles