릴리스 노트

PostgreSQL

E.25. 릴리스 9.6

출시 날짜 : 2016-09-29

E.25.1. 개요

주요 향상postgresql9.6 포함 :

  • 순차적 스캔, 조인 및 집계의 병렬 실행

  • 진공 동결 작업 중에 불필요하게 페이지 스캔을 피하십시오

  • 동기 복제는 이제 여러 대기 서버가 신뢰성을 높일 수 있도록 허용

  • 전체 텍스트 검색은 이제 문구를 검색 할 수 있습니다 (다중 인접 단어)

  • postgres_fdw이제 원격 조인, 정렬,를 지원합니다.업데이트s 및삭제s

  • 특히 다중의 확장 성 영역스포츠 토토 실질적인 성능 향상CPU-소켓 서버

위 항목은 아래 섹션스포츠 토토 자세히 설명되어 있습니다.

E.25.2. 버전 9.6으로의 마이그레이션

덤프/복원 사용pg_dumpall또는 사용pg_upgrade, 이전 릴리스에서 데이터를 마이그레이션하려는 사람들에게는 필요합니다.

버전 9.6에는 이전 릴리스와의 호환성에 영향을 줄 수있는 여러 가지 변경 사항이 포함되어 있습니다. 다음과 비 호환성을 관찰하십시오.

  • 개선pg_stat_activity프로세스가 기다리고있는 것에 대한 정보 (Amit Kapila, Ildus Kurbangaliev)

    역사적으로 프로세스는 헤비급 잠금을 기다리는 경우에만 기다리는 것으로 표시되었습니다. 이제 경량 잠금 장치를 기다리고 버퍼 핀도 표시됩니다.pg_stat_activity. 또한 기다리는 자물쇠의 유형이 이제 볼 수 있습니다.대기열이있는 열Wait_event_TypeandWait_event.

  • into_char (), 시간 관련 필드 (Bruce Momjian)의 필드 너비의 일부로 마이너스 부호 (필요할 때)를 계산하지 마십시오.

    예를 들어to_char ( '-4 년':: 간격, 'yy')이제 반환-04가 아니라-4.

  • makeExtract ()무한 입력 (Vitaly Burovoy)으로 더 합리적으로 행동합니다.

    역사적으로Extract ()주어진 필드 이름에 관계없이 무한 타임 스탬프가 주어지면 0이 retiped로 반환되었습니다. 반환Infinity또는-infinity요청 된 필드가 단조롭게 증가하는 필드 일 때 적절합니다 (예 :연도, epoch), 또는null그렇지 않은 경우 (예 :day, Hour). 또한 잘못된 필드 이름에 대한 예상 오류를 던지십시오.

  • pl/pgsql 's 제거"기능"가장 안쪽 줄을 억제 한컨텍스트방출 된 메시지의 경우높이명령 (Pavel Stehule)

    이 고대의 후진 호환성 해킹은 그 유용성을 원작하기로 합의했습니다.

  • 기본 텍스트 검색 파서를 수정하여 선행 숫자를 허용합니다이메일andhost토큰 (Artur Zakirov)

    대부분의 경우 텍스트 구문 분석이 거의 변경되지 않습니다. 그러나 그러한 주소가 자주 발생하는 데이터가있는 경우, 의존적으로 재건 할 가치가있을 수 있습니다TSVECTOR텍스트 검색 으로이 양식의 주소를 올바르게 찾을 수 있도록 열 및 색인.

  • 확장Contrib/Unaccent의 표준unaccent.rules유니 코드에 알려진 모든 Diacritics를 처리하고 인대를 올바르게 확장하기위한 파일 (Thomas Munro, Léonard Benedetti)

    이전 버전은 덜 공통된 문자를 Diacritic Mark로 변환하는 것을 무시했습니다. 또한 인대는 이제 별도의 글자로 확장되었습니다.TSVECTOR결과에 의존하는 열 및 인덱스.

  • 오랫동안 대상이되는 제거CreateUser/nocreateuser옵션역할 창출및 연합군 명령 (Tom Lane)

    CreateUser실제로 의미SuperUser, 고대 후진 호환성 이유. 이것은 (합리적으로) 의미를 기대하는 사람들에게 끊임없는 혼란의 원천이었습니다Createrole. 지금은 10 년 동안 더 이상 사용되지 않았으므로 문제를 제거하여 문제를 해결하십시오.

  • 역할 이름을 시작하여PG_예약 된대로 (Stephen Frost)

    그러한 역할 이름의 사용자 생성은 이제 허용되지 않습니다. 이것은에 의해 생성 된 내장 역할과의 충돌을 방지합니다.initdb.

  • 열 이름 변경Information_Schema.루틴보기result_cast_character_set_nametoresult_cast_char_set_name(Clément Prévost)

    SQL : 2011 표준은 더 긴 이름을 지정하지만 인접한 열 이름이 다른 스타일을 사용하기 때문에 실수로 보입니다.Information_Schema보기

  • PSQL's-c옵션은 더 이상 암시하지 않습니다-no-psqlrc(Pavel Stehule, Catalin IACOB)

    쓰기-no-psqlrc(또는 약어-x) 명시 적으로 오래된 행동을 얻습니다. 수정 된 스크립트는 여전히 오래된 버전의스포츠 토토 작동합니다.PSQL.

  • 개선PG_RESTORE's-t모든 유형의 관계를 일치시키는 옵션, 일반 테이블뿐만 아니라 (Craig Ringer)

  • 에 사용 된 디스플레이 형식 변경NextXIDinPG_CONTROLDATA및 관련 장소 (Joe Conway, Bruce Momjian)

    형식의 epoch and-transaction-id 값을 표시번호:번호. 이전 형식번호/번호|LSNs.

  • 업데이트 확장 기능이 적절한 경우 평행-안전 (Andreas Karlsson) 표시됩니다.

    평행 쿼리 작업자 프로세스 내에서 함수를 실행할 수 있도록 많은 표준 확장이 업데이트되었습니다. 이러한 변경 사항은 데이터베이스에서 적용되지 않습니다pg_upgrade'D를 적용하지 않는 한 이전 버전에서.Alter Extension Update그러한 각 확장자 (클러스터의 각 데이터베이스에서).

E.25.3. 변화

아래스포츠 토토 변경 사항에 대한 자세한 설명이 있습니다.postgresql9.6 및 이전 주요 릴리스.

E.25.3.1. 섬기는 사람

E.25.3.1.1. 병렬 쿼리

  • Parallel Queries (Robert Haas, Amit Kapila, David Rowley, 기타)

    9.6,postgresql큰 쿼리의 병렬 실행에 대한 초기 지원을 소개합니다. 순차적 스캔을 통해 주행 테이블에 액세스되는 엄격하게 읽기 전용 쿼리 만 병렬화 될 수 있습니다.

    병렬 쿼리 실행은 기본적으로 (아직) 활성화되지 않았습니다. 허용하려면 새 구성 매개 변수를 설정max_parallel_workers_per_gather0보다 큰 값. 병렬 처리 사용에 대한 추가 제어는 다른 새로운 구성 매개 변수를 통해 사용할 수 있습니다force_parallel_mode, parallel_setup_cost, parallel_tuple_costmin_parallel_relation_size.

  • 함수의 평행 안전 상태를 표시하기위한 인프라 제공 (Robert Haas, Amit Kapila)

E.25.3.1.2. 인덱스

  • 허용효과적인 사용을위한 색인 빌드Maintenance_work_mem1GB보다 큰 설정 (Robert Abraham, Teodor Sigaev)

  • 진 지수의 보류중인 목록에서 즉시 여유 공간지도로 삭제 된 페이지 추가 (Jeff Janes, Teodor Sigaev)

    테이블이 자주 진공 청소되지 않으면 부풀게됩니다.

  • addgin_clean_pending_list ()Gin Index (Jeff Janes)에 대한 보류 목록 청소의 수동 호출을 허용하는 기능

    이전에, 그러한 정리는 부모 테이블 진공 청소기 또는 분석의 부산물로 만 발생했습니다.

  • 죽은 색인 튜플의 취급 개선gist색인 (Anastasia Lubennikova)

    데드 인덱스 튜플은 이제 인덱스 스캔이 해당 힙 튜플이 죽었다는 것을 알게되면 표시됩니다. 튜플을 삽입 할 때는 페이지에 공간을 만들기 위해 필요한 경우 마크 된 튜플이 제거됩니다.

  • ANDSP-Gist유형의 운영자 클래스Box(Alexander Lebedev)

E.25.3.1.3. 정렬

  • 외부 정렬 단계를 수행 할 때 (Peter Geoghegan)을 수행 할 때 QuickSort를 사용하여 QuickSort를 사용하여 성능을 향상시킵니다.

    새로운 접근 방식은를 더 잘 사용합니다.CPU일반적인 캐시 크기 및 데이터 볼륨에 대한 캐시. 필요한 경우 동작은 새로운 구성 매개 변수를 통해 조정할 수 있습니다.대체 _sort_tuples.

  • 동일한 문자열이 여러 번 발생하는 곳 (Peter Geoghegan)

  • 속도 정렬uuid, BYTEAchar (n)사용하여 필드"약식"키 (Peter Geoghegan)

    약식 키에 대한 지원도 비 디펜트 연산자 클래스에 추가되었습니다text_pattern_ops, varchar_pattern_opsbpchar_pattern_ops. 주문 세트 집계의 처리는 이제 약식 키를 이용할 수 있습니다.

  • 속도 업동시에 색인 생성치료에 의해TID정렬 중 64 비트 정수 (Peter Geoghegan)

E.25.3.1.4. 잠금

  • 에 대한 경합 감소ProcarrayLock(Amit Kapila, Robert Haas)

  • 버퍼 컨텐츠 잠금 장치를 버퍼 디스크립터로 이동하여 성능 향상 (Andres Freund, Simon Riggs)

  • 확장 성을 향상시키기 위해 공유 버퍼 헤더 스피 록을 원자 작업으로 교체합니다 (Alexander Korotkov, Andres Freund)

  • 스핀 락 대신 원자 연산을 사용하여 보호합니다lwlock's 대기 대기열 (Andres Freund)

  • 파티션 공유 해시 테이블 프리리스트는 멀티에 대한 경합을 줄입니다CPU-소켓 서버 (Aleksander Alekseev)

  • BTREE Index 진공 청소기 재생 중 대기 서버에서의 연동 감소 (Simon Riggs)

    이 변경 사항은 그러한 작업을 재생하는 동안 때때로 발생하는 상당한 복제 지연을 피합니다.

E.25.3.1.5. Optimizer Statistics

  • 개선분석의 숫자가 많은 열에 대한 추정치 (Tomas Vondra, Alex Shulgin)

    이전분석비의 수를 과소 평가하는 경향null많은 열의 뚜렷한 값nulls, 또한 가장 공동체 값을 계산하는 데 부정확했습니다.

  • 쿼리 결과 (Tomas Vondra)스포츠 토토 고유 한 값 수에 대한 플래너의 추정치 향상

  • 외국의 주요 관계를 사용하여 Predicates (Tomas Vondra, David Rowley)에 대한 선택성을 추론합니다.

    표이면t외국의 주요 제한 사항이 있습니다.(a, b) 참조 r (x, y), a여기서T.A = R.X 및 T.B = R.Y하나 이상을 선택할 수 없습니다r행 당 행t행. 플래너는 이전에 이것을 고려했습니다and조건은 독립적이며 종종 선택성을 크게 오해 할 것입니다. 이제 비교여기서해당 외국의 주요 제약 조건에 대한 조건 및 더 나은 추정치를 생성합니다.

E.25.3.1.6. 진공

  • 얼어 붙은 튜플 만 포함 된 페이지를 다시 바 검기를 피하십시오 (Masahiko Sawada, Robert Haas, Andres Freund)

    이전에, raparound anti-raparound 진공 청소기는 할 일이없는 페이지, 심지어 테이블의 모든 페이지를 방문해야했습니다. 이제 이미 냉동 튜플 만 포함 된 페이지는 테이블의 가시성 맵에서 식별되며 트랜잭션 랩 어라운드 방지를 수행 할 때도 진공 청소기로 건너 뛸 수 있습니다.

    필요한 경우, 진공 청소기는 새로운 것을 사용하여 모든 프록 린 페이지를 처리해야 할 수 있습니다disable_page_skipping옵션. 일반적으로 이것은 필요하지 않아야하지만 가시성 맵 손상에서 회복하는 데 도움이 될 수 있습니다.

  • 중 쓸모없는 힙 통찰 시도를 피하십시오진공(Jeff Janes, Tom Lane)

    이 변경은 자리가 불가능한 경우 일부 경우 독점 테이블 잠금을 피하는 것을 피합니다. 주요 이점은 대기 서버에서 불필요한 쿼리 취소를 피함으로써 발생합니다.

E.25.3.1.7. 일반 성능

  • 구식 허용MVCC구성 가능한 타임 아웃 (Kevin Grittner) 이후 무효화 될 스냅 샷

    일반적으로, 마지막 거래까지 진공 청소기를 통해 삭제 된 튜플은 물리적으로 제거 할 수 없습니다."참조"그들은 사라졌습니다. 공간을 재활용 할 수 없기 때문에 오랫동안 열려있는 거래는 상당한 테이블 부풀어 오를 수 있습니다.Old_snapShot_threshold, 얼마나 오래 ANMVCC스냅 샷은 유효합니다. 그 후, 죽은 튜플은 제거의 후보입니다.

  • 무시그룹 by다른 열에 기능적으로 의존하는 열 (David Rowley)

    if a그룹 by절은 동일한 테이블의 다른 열뿐만 아니라 비 이중 기본 키의 모든 열을 포함하고 다른 열은 중복되어 그룹화스포츠 토토 떨어질 수 있습니다. 이것은 많은 일반적인 경우 계산을 절약합니다.

  • 사용 허용색인 전용 스캔인덱스의 부분 색인스포츠 토토여기서인덱스되지 않은 조항 참조 열 (Tomas Vondra, Kyotaro Horiguchi)

    예를 들어,에 정의 된 색인t (b) a> 0스포츠 토토 색인 생성 tidx_partial 만들기이제 지정된 쿼리스포츠 토토 인덱스 전용 스캔에 ​​사용할 수 있습니다여기서 a> 0달리 사용하지 않습니다a. 이전에는 이건 허용되지 않았기 때문에a색인 열로 나열되지 않습니다.

  • 공연 체크 포인트 작성 정렬 순서 (Fabien Coelho, Andres Freund)

    이전에, 체크 포인트는 공유 버퍼에 나타나는 순서로 더러운 페이지를 썼는데, 이는 일반적으로 거의 무작위입니다. 그것은 특히 회전 매체에서 제대로 수행하지 못합니다.

  • 커널 디스크 버퍼 (Fabien Coelho, Andres Freund)에 더러운 데이터의 축적을 방지하기 위해 구성 가능한 숫자의 쓰기 후 커널 쓰기 백을 트리거하는 경우

    postgresql데이터를 커널의 디스크 캐시에 작성하여 시간이 지남에 따라 물리적 스토리지로 플러시됩니다. 많은 운영 체제는이를 관리하는 것에 대해 현명하지 않으며 한 번에 플러시하기로 결정하기 전에 많은 양의 더러운 데이터를 축적 할 수 있도록하여 플러싱이 완료 될 때까지 새로운 I/O 요청에 대해 긴 지연이 발생합니다.

    On Linux,sync_file_range ()이 목적으로 사용되며 기능은 단점이 거의 없기 때문에 Linux에서 기본적으로 켜져 있습니다. 이 플러싱 기능은 다른 플랫폼에서도 사용할 수 있습니다msync ()또는posix_fadvise (), 그러나 해당 인터페이스는 바람직하지 않은 부작용이 있으므로 비 Linux 플랫폼에서 기본적으로 기능이 비활성화됩니다.

    새 구성 매개 변수backend_flush_after, bgwriter_flush_after, Checkpoint_flush_afterWal_writer_flush_after이 동작을 통제하십시오.

  • 동일한 인수와 전환 기능이있는 경우 여러 집계스포츠 토토 계산을 공유하여 집계 기능 성능 향상 (David Rowley)

    예를 들어탭스포츠 토토 Avg (x), 분산 (x)을 선택하십시오두 집계 모두에 단일 당당 계산을 사용할 수 있습니다.

  • 현재 트랜잭션의 스냅 샷을 확인하여 최근에 생성 된 튜플에 대한 가시성 테스트 속도PG_CLOG, 소스 트랜잭션이 커밋되어야하는지 결정하려면 (Jeff Janes, Tom Lane)

  • 튜플 힌트 비트가 이전보다 빨리 설정되도록 허용 (Andres Freund)

  • 단기간 준비된 거래의 성과 향상 (Stas Kelvich, Simon Riggs, Pavan Deolasee)

    2 단계 커밋 정보는 이제에만 기록되었습니다.Wal동안거래 준비Wal동안준비그 후 곧 발생한다면. 별도의 상태 파일은 다음 체크 포인트 시점까지 보류중인 거래가 커밋되거나 중단되지 않는 경우에만 생성됩니다.

  • 메모리 컨텍스트 파괴 성능 향상 (Jan Wieck)

  • 많은 추적 객체 (Aleksander Alekseev)가있는 리소스 소유자의 성능 향상

  • 출력 함수의 속도 향상타임 스탬프, Time날짜데이터 유형 (David Rowley, Andres Freund)

  • 취하는 작업 재생 중에 핫 스탠드 쿼리의 불필요한 취소를 피하십시오accessexclusiveLocks (Jeff Janes)

  • 관계 확장 잠금 잠금 장치 (Dilip Kumar)에 대한 경합이있을 때 관계를 확장합니다.

    이것은 경합을 줄임으로써 확장 성을 향상시킵니다.

  • 더 나은 확장 성을 위해 막힘 버퍼 수를 늘리십시오 (Amit Kapila, Andres Freund)

  • 속도 업 표현 평가pl/pgsql유지하여ParamlistInfo항상 유효한 간단한 변수 항목 (Tom Lane)

  • 감소하지 않으면SO_SNDBUF최근 Windows 버전 (Chen Huajun)에서 기본값 아래 설정

  • 비활성화update_process_title기본적으로 Windows (Takayuki Tsunakawa)

    프로세스 제목을 업데이트하는 오버 헤드는 대부분의 다른 플랫폼보다 Windows에서 훨씬 큽니다. 대부분의 Windows 사용자가 프로세스 제목을 표시 할 수있는 도구가 없기 때문에이를 수행하는 것이 덜 유용합니다.

E.25.3.1.8. 모니터링

  • addPG_STAT_PROGRESS_VACUUM진행 상황보고를 제공하기위한 시스템보기진공운영 (Amit Langote, Robert Haas, Vinayak Pokale, Rahila Syed)

  • addPG_CONTROL_SYSTEM (), pg_control_checkpoint (), PG_CONTROL_RECOVERY ()PG_CONTROL_INIT ()필드를 노출시키는 기능PG_CONTROLtoSQL(Joe Conway, Michael Paquier)

  • addPG_CONFIGSystem View (Joe Conway)

    이보기는에서 사용할 수있는 동일한 정보를 노출시킵니다.PG_CONFIG명령 줄 유틸리티, 즉 다양한 컴파일 타임 구성 정보에 대한postgresql.

  • A 추가확인 _flush_lsn열에pg_replication_slots시스템보기 (Marko Tiikkaja)

  • addPG_STAT_WAL_RECEIVER핫 스탠드 서버의 상태에 대한 정보를 제공하는 시스템보기Wal수신기 프로세스 (Michael Paquier)

  • addpg_blocking_pids ()다른 세션 블록을 확실하게 식별하는 기능 (Tom Lane)

    이 함수는 주어진 프로세스 ID로 세션을 차단하는 모든 세션의 프로세스 ID 배열을 반환합니다. 역사적으로 사용자는에 대한 자체 합의를 사용하여 그러한 정보를 얻었습니다.PG_LOCKS보기. 그러나 모든 정확성을 가지고 그런 식으로 그렇게하는 것은 불합리하게 지루하며, 병렬 쿼리를 추가하면 세션의 주요 프로세스가 아닌 아동 근로자 프로세스에 의해 자물쇠가 보류되거나 기다릴 수 있기 때문에.

  • 함수 추가pg_current_xlog_flush_location ()현재 트랜잭션 로그 플러시 위치 (Tomas Vondra)를 노출하려면

  • 함수 추가pg_notification_queue_usage ()Notify대기열은 (Brendan Jurd)

  • 메모리 컨텍스트 통계 덤프 (Tom Lane)의 제한 제한

    메모리 외 실패 중에 우체국 마스터 로그에 출력되는 메모리 사용 덤프는 이제 매우 큰 보고서를 생성하기보다는 많은 메모리 컨텍스트가있을 때 통계를 요약합니다. 도 있습니다."Grand Total"요약 라인 지금.

E.25.3.1.9. 인증

  • A 추가BSD인증 방법BSD인증 서비스postgresql클라이언트 인증 (Marisa Emerson)

    BSD 인증은 현재에만 사용할 수 있습니다OpenBSD.

  • 사용시PAM인증, 클라이언트 IP 주소 또는 호스트 이름을 제공.PAMpam_rhost품목 (Grzegorz Sampolski)

  • 더 많은 유형의 비밀번호 인증 실패 (Tom Lane)를 위해 우체국 장 마스터 로그에 세부 사항 제공

    일반적으로 연락 할 수있는 모든 비밀번호 인증 실패 사례는 이제 구체적으로 제공해야합니다세부 사항로그의 필드.

  • 지원반경암호최대 128 자 길이 (Marko Tiikkaja)

  • 새로운 추가SSPI인증매개 변수compat_realmandupn_username여부를 제어하려면NetBios또는Kerberos영역 이름과 사용자 이름은SSPI인증 (Christian Ullrich)

E.25.3.1.10. 서버 구성

  • 너무 오랫동안 유휴 상태에있는 상태에있는 경우 세션이 자동으로 종료되도록하십시오 (Vik Fearing)

    이 동작은 새로운 구성 매개 변수에 의해 제어됩니다idle_in_transaction_session_timeout. 잊혀진 트랜잭션이 잠금 장치를 보유하거나 진공 청소를 너무 오랫동안 방지하는 것을 방지하는 것이 유용 할 수 있습니다.

  • 최대 허용 된 값을 높이십시오Checkpoint_Timeout~ 24 시간 (Simon Riggs)

  • 허용exply_io_concurrency28001_28122

  • addlog_line_prefix옵션%n밀리 초 (Tomas Vondra, Jeff Davis)와 함께 현재 시간을 UNIX Epoch 형식으로 인쇄하려면

  • addSYSLOG_SEVERENCE_NUMBERSandsyslog_split_messages구성 매개 변수 로그인 할 때 메시지 형식에 대한 더 많은 제어를 제공하는 구성 매개 변수Syslog(Peter Eisentraut)

  • 합병아카이브andhot_standbyWal_level단일 새 값으로 구성 매개 변수Replica(Peter Eisentraut)

    이러한 설정을 구별하는 것이 더 이상 유용하지 않으며,이를 병합하는 것은 계획된 미래의 복제 설정 단순화를 향한 단계입니다. 이전 이름은 여전히 ​​허용되지만로 변환됩니다.Replica내부.

  • 구성 옵션 추가-with-systemd호출 활성화sd_notify ()서버 시작 및 중지시 (Peter Eisentraut)

    이것은를 사용할 수 있습니다SystemD유형의 서비스 단위Notify,의 관리를 크게 단순화합니다postgresqlunderSystemD.

  • 서버 허용SSL키 파일 그룹 읽기 액세스가 소유 한 경우루트(Christoph Berg)

    이전에, 우리는 키 파일을 사용자가 소유하고 있다고 주장했다.postgresql서버이지만 일부 시스템스포츠 토토는 불편합니다 (예 :데비안) 중앙에 인증서를 관리하도록 구성된. 따라서 키 파일이 소유 한 경우를 허용합니다.루트그룹 읽기 액세스가 있습니다. 그룹에 신뢰할 수없는 사용자가 포함되지 않도록하는 것은 운영 체제 관리자에게 달려 있습니다.

E.25.3.1.11. 신뢰할 수 있음

  • 포스트 마스터가 죽으면 종료되도록 강제 백엔드 (Rajeev Rastogi, Robert Haas)

    정상적인 상황스포츠 토토 우체국 장은 항상 아동 과정을 세워야합니다. 어떤 이유로 포스트 마스터가 죽으면 백엔드 세션이 오류로 나가도록 강요하십시오.

  • 제약-폭력 실패 (Thomas Munro)를보고하기 전 직렬화 성 충돌 확인

    직렬화 가능한 트랜잭션 격리를 사용할 때 동시 트랜잭션으로 인한 오류는 직렬화 실패로 나타나야하므로 재 시도가 성공할 수 있다는 응용 프로그램을 신청해야합니다. 불행히도, 이것은 동시 삽입으로 인한 중복 키 실패에 대해 확실하게 발생하지 않습니다.

  • 무효화 메시지가 기록되어 있는지 확인하십시오Wal거래가없는 거래에 의해 발행 된 경우에도xid할당 (Andres Freund)

    이것은 대기 서버의 트랜잭션이 새로운 인덱스와 같은 변경 사항을 알아 차리지 못하는 일부 코너 케이스를 수정합니다.

  • 여러 프로세스가 청소를 시도하는 것을 방지합니다색인의 보류중인 목록 동시에 (Teodor Sigaev, Jeff Janes)

    이것은 의도적으로 허용되었지만 경주 조건을 유발하여 진공 상태 누락 된 인덱스 항목을 삭제해야합니다..

E.25.3.2. 복제 및 복구

  • 동기식 복제가 여러 동시 동기 대기 서버 (Masahiko Sawada, Bea Emerson, Michael Paquier, Fujii Masao, Kyotaro Horiguchi)를 지원하도록 허용합니다.

    커밋을 완료하기 전에 커밋을 인정 해야하는 대기 서버의 수는 이제의 일부로 구성 가능합니다.synchronous_standby_names매개 변수.

  • 새 설정 추가Remote_apply구성 매개 변수의 경우synchronous_commit(Thomas Munro)

    이 모드스포츠 토토 마스터는 거래가 될 때까지 기다립니다응용디스크에 작성된 대기 서버에서. 즉, 대기에서 시작된 트랜잭션에 의존하여 마스터가 이전에 인정 한 모든 커밋을보기 위해..

  • 복제 프로토콜에 기능을 추가하고 해당 옵션PG_CREATE_PHYSICAL_REPLICATION_SLOT (), 예약 허용Wal즉시 복제 슬롯을 만들 때 (Gurjeet Singh, Michael Paquier)

    이것은 복제 슬롯을 생성하여 모든를 보장 할 수 있습니다.Wal베이스 백업에 필요한 것이 가능합니다.

  • A 추가-슬롯옵션PG_BASEBACKUP(Peter Eisentraut)

    이것은 LetsPG_BASEBACKUP용도로 정의 된 복제 슬롯 사용Wal스트리밍. 베이스 백업이 완료되면 일반 스트리밍 복제를 위해 동일한 슬롯을 선택하면 새 대기 서버를 원활하게 시작할 수 있습니다.

  • 확장pg_start_backup ()andpg_stop_backup ()비 독점적 인 백업을 지원하려면 (Magnus Hagander)

E.25.3.3. 쿼리

  • 튜플 세트를 반환하여 간단하게 반환하는 함수를 허용nullS (Andrew Gierth, Tom Lane)

    의 맥락스포츠 토토함수스포츠 토토 선택 (...), 일련의 복합 값을 반환 한 함수는 이전에 평원을 반환 할 수 없었습니다null세트의 일부로 값. 이제 그것은 허용되고 해석됩니다nulls. 예를 들어, 복합 값의 배열을 연출하지 않으면 코너 케이스 오류를 피합니다.

  • 대상 열 목록스포츠 토토 배열 위시 및 필드 선택삽입다중행 (Tom Lane)

    이전에, 그러한 경우는 동일한 대상 열이 두 번 이상 언급 된 경우 실패했습니다 (예 :탭에 삽입 (x [1], x [2]) 값 (...).

  • 적절한 경우 연기 평가selectAT 이후까지 출력 표현식주문 bySort (Konstantin Knizhnik)

    이 변경 사항은 출력 목록의 휘발성 또는 고가의 기능이에 의해 제안 된 순서로 실행되도록합니다주문 byLimit절. 이전에는 주문이 인덱스 스캔 또는 사전 결석 정렬에 의해 수행 된 경우에도 이러한 특성이 유지되었지만 최상위 정렬에 의해 수행 된 경우에는 그렇지 않습니다..

  • 64 비트 (Andreas Scherbaum)로 처리 된 튜플의 수를 기록하는 카운터 확대

    이 변경 사항은 명령 태그 (예 :를 허용합니다.select, 튜플 카운트가 40 억보다 크게 올바르게보고합니다. 이것은 PL/PGSQL에도 적용됩니다진단 받기 ... row_count명령.

  • mule_internal인코딩 (Tom Lane)

    이전에, 사이릴 릭 및 중앙 유럽 단일 바이트 인코딩에 대한 많은 전환이 관련mule_internal코딩 방식 및 대상 인코딩으로. 비효율적 인 것 외에도, 이것은 변환이 번역 할 수없는 문자에 직면 할 때, 오류 메시지는로 전환하지 않는 것에 대해 혼란스럽게 불평 할 것임을 의미합니다.mule_internal, 사용자가 가시 가능한 인코딩 대신.

  • 동일한 역할 ID (Shigeru Hanada, Ashutosh Bapat, Etsuro Fujita) 하에서 테이블에 액세스 할 때만 원격 테이블 조인을 수행하는 것을 고려하십시오.

    이전에, 외국인 JING 푸시 다운 인프라는 보안 문제를 개별 외국 데이터 포장지에 전적으로 확보했지만 너무 쉬워졌습니다.FDW실수로 미묘한 보안 구멍을 만들려면. 따라서 각 테이블에 액세스 할 역할 ID를 결정하는 핵심 코드의 작업을 만들고 모든 관련 관계에 대해 역할이 동일하지 않으면 푸시 다운을 시도하지 마십시오.

E.25.3.4. 유틸리티 명령

  • 허용COPYan의 출력을 복사하려면삽입/업데이트/삭제 ... 반환쿼리 (Marko Tiikkaja)

    이전에 중간체CTE이 결과를 얻기 위해 작성해야했습니다.

  • 소개Alter개체확장에 의존(Abhijit Menon-Sen)

    이 명령은 데이터베이스 객체를 확장자에 따라 표시 할 수 있도록하여 확장자가 삭제되면 자동으로 삭제되도록합니다 (필요하지 않고캐스케이드). 그러나 객체는 확장의 일부가 아니므로에 의해 별도로 덤프됩니다.pg_dump.

  • makeAlter개체스키마 설정객체가 이미 요청 된 스키마에있을 때 아무 것도하지 않고, 대부분의 오브젝트 유형 (Marti raudsepp)에 대해 오류를 던지지 않고

  • 옵션 추가Alter Operator기존 연산자 (Yury Zhuravlev)와 관련된 선택성 함수 변경을 허용하려면

  • AND존재하지 않으면옵션ALTER 테이블 추가 열(Fabrízio de Royes Mello)

  • 필요한 자물쇠 강도 감소Alter TableFillFactor 및 Autovacuum 관련 관계 옵션을 설정할 때 (Fabrízio de Royes Mello, Simon Riggs)

  • 소개액세스 방법 만들기확장자가 색인 액세스 방법을 생성하도록 허용합니다 (Alexander Korotkov, Petr Jelínek)

  • A 추가캐스케이드옵션확장 생성자동으로 모든 확장을 생성하려면 요청 된 하나는 (PETR Jelínek)에 의존합니다.

  • make테이블 생성 ... 좋아요포함OID열이있는 경우 (Bruce Momjian)이있는 경우

  • if acheck제약 조건이 선언 됨유효하지 않음테이블 작성 명령스포츠 토토 자동으로 유효한 것으로 표시합니다 (Amit Langote, Amul Sul)

    테이블에 기존 행이 없기 때문에 안전합니다. 이것은 오랜 행동과 일치합니다외국 키제약 조건.

  • 수정드롭 운영자명확하게pg_operator.oprcomandpg_operator.oprnegate삭제 된 연산자 (Roma Sokolov)

    이전에는 그러한 링크가 그대로 남아 있었는데, 이는 운영자가 삭제했을 가능성이 거의없는 이벤트에서 문제를 일으킬 수 있습니다OID다른 연산자를 위해 재사용되었습니다.

  • 동일한 하위 플랜을 두 번 표시하지 마십시오설명출력 (Tom Lane)

    어떤 경우에는 일반적으로 인덱스 조건에서 하위 비행 노드가 포함됩니다.설명동일한 하위 플랜에 대한 데이터를 두 번 인쇄합니다.

  • 시스템 열에서 인덱스 생성을 허용하지 않음OID열 (David Rowley)

    이러한 인덱스는 지원되지 않은 것으로 간주되지 않았으며 시스템이 인덱스를 업데이트하지 않고 튜플의 시스템 컬럼 필드를 변경할 수 있기 때문에 매우 잘못 행동 할 것입니다. 그러나 이전에는 그들이 생성되는 것을 방지하기위한 오류 점검이 없었습니다.

E.25.3.5. 권한 관리

  • 권한 시스템을 사용하여 민감한 기능에 대한 액세스를 관리합니다 (Stephen Frost)

    이전에 많은 보안에 민감한 기능에는 하드 유선 검사가 포함되어 있으며, 이는 비 uperuser가 호출 한 경우 오류가 발생했습니다. 이로 인해 상대적으로 보행자 작업에 슈퍼 서서 역할을 사용했습니다.initdb기본 공개 취소execute이 기능에 대한 특권. 이를 통해 설치는 모든 슈퍼 서서 권한이 필요하지 않은 신뢰할 수있는 역할에 그러한 기능을 허용하도록 선택할 수 있습니다.

  • 일부 생성내장 역할이전에 슈퍼업자 전용 기능 (Stephen Frost)에 대한 액세스 권한을 부여하는 데 사용할 수 있습니다.

    현재 그러한 역할은입니다.pg_signal_backend, 그러나 앞으로 더 많은 추가가 추가 될 것으로 예상됩니다.

E.25.3.6. 데이터 유형

  • 개선전체 텍스트 검색문구 검색, 즉 특정 순서로 서로 인접 해있는 렉시 메스 또는 그들 사이에 지정된 거리 (Teodor Sigaev, Oleg Bartunov, Dmitry Ivanov)

    문구 검색 쿼리를 지정할 수 있습니다.TSQUERY새 연산자를 사용한 입력<-->and<N. 전자는 Lexemes 전후에 Lexemes가 그 순서대로 서로 인접 해 보인다는 것을 의미합니다.NLexemes Apar.

  • 배열 슬라이스 지정자에서 하나 또는 두 경계를 생략 허용합니다 (예 :array_col [3 :](Yury Zhuravlev)

    생략 된 경계는 해당 배열 첨자의 상한 또는 하한으로 간주됩니다. 이것은 많은 일반적인 사용 사례에 대한 간단한 사양을 허용합니다.

  • 범위 외 날짜 및 타임 스탬프 (Vitaly Burovoy)에 대해 더 조심하십시오.

    이 변경 사항은 예상치 못한 범위 외 오류를 방지합니다시간대가있는 타임 스탬프구현 한도에 매우 가까운 값. 이전에는"동일"값이 허용 될 수 있습니다.TimeZone설정, 즉 덤프 및 재 장전이 제시 될 때 허용 된 값에서 실패 할 수 있음을 의미합니다. 이제 한계는 동등한 것에 따라 시행됩니다UTC현지 시간이 아닌 시간,TimeZone.

    또한postgresql이제 새 날짜 또는 타임 스탬프 값을 계산하는 작업의 오버 플로우를 감지하는 데 더주의를 기울입니다.날짜 + 정수.

  • 기하학적 데이터 유형의 경우InfinityandNAN구성 요소 값은 입력 및 출력 중에 일관되게 처리됩니다 (Tom Lane)

    이러한 값은 이제 항상 간단한 것과 동일하게 인쇄합니다float8열, 입력에서 동일한 방식으로 허용됩니다. 이전에는 행동이 플랫폼 의존적이었습니다.

  • 업그레이드Ispell현대를 다루는 사전 유형Hunspell더 많은 언어 (Artur Zakirov) 파일 및 지원

  • Xehind 제약 구현정규 표현(Tom Lane)

    외관 제약 조건은 텍스트를 소비하지 않는다는 점에서 제약 조건과 같습니다. 그러나 그것은 현재 지점에서 시작하는 것이 아니라 문자열의 현재 지점에서 끝나는 경기의 존재 (또는 존재하지 않는)를 점검합니다.

  • 명백한 3 자리 홀탈 탈출이있는 경우 정규 표현에서\NNN377 (255 Decimal)을 초과하고 대신 2 자리 옥탈 탈출 (Tom Lane)이라고 가정합니다.

    이것은 동작을 최신 상태로 만듭니다TCL릴리스.

  • 트랜잭션 ID 운영자 추가xid < xidandxid < int4, 해당 평등 연산자 (Michael Paquier)와의 일관성을 위해

E.25.3.7. 기능

  • addJSONB_INSERT ()새 요소를 a에 삽입하는 함수JSONB배열, 또는 extray 또는 rray 또는 evervely invelying a atJSONB개체 (Dmitry Dolgov)

  • 정확도 향상ln (), log (), exp ()pow ()타입의 함수숫자(Dean Rasheed)

  • A 추가스케일 (숫자)A의 디스플레이 스케일을 추출하는 기능숫자값 (Marko Tiikkaja)

  • 학위로 작동하는 삼각 함수 추가 (Dean Rasheed)

    예를 들어sind ()주장을 학위로 측정하는 반면sin ()라디안의 측정. 이러한 기능은 정확한 결과가 예상 될 수있는 값에 대한 정확한 결과를 제공하기 위해 약간의 길이로 이동합니다.Sind (30) = 0.5.

  • Trigonometric 함수가 처리하는지 확인InfinityandNAN입력posixStandard (Dean Rasheed)

    theposix표준은 이러한 기능이 반환되어야한다고 말합니다NANforNAN입력,를 포함한 범위 외 입력에 대한 오류를 던져야합니다.Infinity. 이전에는 우리의 행동이 플랫폼마다 다릅니다.

  • maketo_timestamp (float8)float 변환InfinitytoimestampInfinity(Vitaly Burovoy)

    이전에는 무한 입력에 실패했습니다.

  • 새로운 기능 추가TSVECTOR데이터 (Stas Kelvich)

    새로운 기능은TS_DELETE (), TS_FILTER (), UNNEST (), tsvector_to_array (), array_to_tsvector ()및 변형setweight ()지정된 lexeme에 대해서만 가중치를 설정합니다.

  • 허용TS_STAT ()andtsvector_update_trigger ()45087_45222Citext여기서텍스트예상됩니다 (Teodor Sigaev)

  • Variadic 함수 추가num_nulls ()andnum_nonnulls ()NULL 또는 NULL (Marko Tiikkaja) 인 인수의 수를 계산합니다.

    ​​예제 사용은입니다.check (num_nonnulls (a, b, c) = 1)정확히 A, B, C 중 하나가 아니라고 주장합니다.null. 이러한 기능은 또한 배열에서 NULL 또는 NULL 요소의 수를 계산하는 데 사용될 수 있습니다.

  • 함수 추가parse_ident ()자격을 갖추고 인용 할 수있는 자격을 분할하려면SQL부품에 식별자 (Pavel Stehule)

  • into_number (), 해석 AV다음 자리 수의 전력으로 10으로 나누는 형식 코드V(Bruce Momjian)

    이것은 역 방식으로 작동하게합니다.to_char ().

  • 만들기to_reg*()함수 유형을 허용텍스트아님cstring(Petr Korobeinikov)

    이것은 인수가 단순한 문자 그대로 상수가 아닌 대부분의 경우 명백한 캐스트를 작성할 필요가 없습니다.

  • addpg_size_bytes ()인간 읽을 수있는 크기 문자열을 숫자로 변환 할 수있는 기능 (Pavel Stehule, Vitaly Burovoy, Dean Rasheed)

    이 함수는 문자열이 생성 된 문자열과 같은 문자열을 변환합니다pg_size_pretty ()로 바이트로. 예제 사용은입니다.pg_class스포츠 토토 oid :: regclass를 선택하십시오..

  • inpg_size_pretty (), 양수 숫자와 유사하게 형식의 음수 (Adrian Vondendriesch)

    이전에, 음수 숫자는 절대로 축약되지 않았으며 바이트로 인쇄되었습니다.

  • 선택 사항 추가Missing_ok논쟁current_setting ()기능 (David Christensen)

    이것은 인식되지 않은 매개 변수 이름에 대한 오류를 피하고 대신 a를 반환 할 수 있습니다.null.

  • 다양한 카탈로그 검사 함수 변경null유효하지 않은 입력 (Michael Paquier)

    pg_get_viewdef ()이제 반환null잘못된 견해가 주어지면OID, 그리고 몇 가지 유사한 함수도 마찬가지로 returnnull잘못된 입력. 이전에는 그러한 사례가 보통"캐시 조회 실패"사용자를 향한 경우에 발생하지 않는 오류.

  • 수정pg_replication_origin_xact_reset ()인수가 없으려면 (Fujii Masao)

    문서는 인수가 없으며 C 코드는 주장을 기대하지 않았지만의 입력은PG_PROC실수로 두 가지 인수를 지정했습니다.

E.25.3.8. 서버 측 언어

  • inpl/pgsql, 불일치 감지계속and출구실행 시간이 아닌 함수를 컴파일하는 동안 문장 (Jim Nasby)

  • 확장pl/python의 오류보고 및 메시지보고 함수는 기본 오류 메시지 (Pavel Stehule) 외에 추가 메시지 필드를 지정할 수 있도록합니다.

  • SPI, 그리고 여러 세트 퇴행 PL/Python 함수가 하나의 쿼리 내에서 호출 될 때 동작을 수정합니다 (Alexey Grishchenko, Tom Lane)

  • pl/python에서 세션-제외 메모리 누출 수정 (Heikki Linnakangas, Haribabu Kommi, Tom Lane)

  • Modernizepl/tclTCL을 사용하려면"개체" APIs 간단한 문자열 대신 (Jim Nasby, Karl Lehenbauer)

    경우에 따라 성능을 크게 향상시킬 수 있습니다. 참고pl/tcl이제 TCL 8.4 이상이 필요합니다.

  • inpl/tcl, 데이터베이스보고 오류 Make TCL에서 추가 정보를 반환합니다ErrorCode글로벌 변수 (Jim Nasby, Tom Lane)

    이 기능은 오류에 대한 보조 데이터를 반환하기위한 TCL 규칙을 따릅니다.

  • 수정pl/tcl데이터베이스 인코딩과 간의 인코딩 변환을 수행하려면UTF-8, TCL이 기대하는 것 (Tom Lane)

    이전에, 문자열은 전환없이 통과되어 비의 오작동으로 이어졌습니다ASCII데이터베이스 인코딩이 아닌 경우 문자UTF-8.

E.25.3.9. 클라이언트 인터페이스

  • 로컬 화되지 않은 버전의 추가심각도 필드오류 및 통지 메시지 (Tom Lane)

    이 변경 사항은 클라이언트 코드가 심각도 문자열의 현지화 된 변형에 대해 걱정할 필요없이 오류 또는 통지의 심각성을 결정할 수 있습니다.

  • 기능을 소개libpq여기서컨텍스트메시지 필드는 항상 또는 비 방어 메시지 (Pavel Stehule)에 대해서만 억제 할 수 있습니다.

    기본 동작PQERRORMESSAGE ()이제 인쇄 할 예정컨텍스트오류에 대해서만. 새로운 기능PQSETERRORCONTEXTVEVEIBLE ()이 조정에 사용될 수 있습니다.

  • 지원 추가libpq다른 Verbosity 레벨로 오류 메시지를 재생하려면 (Alex Shulgin)

    이것은 새로운 기능으로 수행됩니다PQRESULTVERBOSEERRORMESSAGE (). 이것은 지원합니다PSQL's New\ errverbose기능, 다른 고객에게도 유용 할 수 있습니다.

  • 개선libpq'spqhost ()기본 UNIX-Socket Connections (Tom Lane)에 대한 유용한 데이터를 반환 할 수 있습니다.

    이전에 반환 될 것입니다null명시적인 호스트 사양이없는 경우; 이제 기본 소켓 디렉토리 경로를 반환합니다.

  • 수정ECPG의 Lexer는 전처리 서기 디렉토리 라인 (Michael Meskes)스포츠 토토 시작하는 주석 내스포츠 토토 라인 브레이크를 처리합니다.

E.25.3.10. 클라이언트 응용 프로그램

  • A 추가--- 스트릭 나임즈옵션pg_dumpandPG_RESTORE(Pavel Stehule)

    이 옵션은 A와 일치하지 않으면 프로그램이 불만을 제기합니다-t또는-n조용히 아무것도하지 않고 옵션.

  • inpg_dump, 시스템 객체에 대한 특권 과제의 로컬로 제작 된 덤프 (Stephen Frost)

    슈퍼업자가 내장 또는 확장 제작 된 개체에 대한 권한 과제를 변경하는 것이 항상 가능했지만, 이러한 변경 사항은 이전에는 덤프 및 재로드에서 손실되었습니다. 지금,pg_dump그러한 변경 사항을 인식하고 덤프합니다. (그러나 이것은 9.6 이상 서버스포츠 토토 덤프 할 때만 작동합니다.)

  • 허용pg_dump확장자 소유 스키마 (Martín Marqués) 내에있는 비 extension 소유 객체를 덤프하려면

    이전에 그러한 객체는 실수로 스키마를 소유하고있는 확장자에 속한다고 생각 되었기 때문에 무시되었습니다.

  • inpg_dumpoutput, 객체 태그에 대한 객체 태그에 테이블 이름을 포함시킨다.

E.25.3.10.1. PSQL

  • 배수 지원-cand-f명령 줄 옵션 (Pavel Stehule, Catalin IACOB)

    지정된 작업은 옵션이 제공되는 순서대로 수행됩니다.PSQL종료.

  • A 추가\ crosstabview교차 태정 디스플레이스포츠 토토 쿼리 결과를 인쇄하는 명령 (Daniel Vérité)

    CrosStab 디스플레이에서 한 쿼리 결과 열의 데이터 값은 열과 행 헤더가 다른 쿼리 결과 열에서 나오는 그리드에 배치됩니다..

  • AND\ errverbose전체 Verbosity에서 마지막 서버 오류를 표시하는 명령 (Alex Shulgin)

    이것은 예기치 않은 오류를받은 후 유용합니다 - 더 이상 조정할 필요가 없습니다Verbosity기본적으로 표시되지 않은 오류 필드를보기 위해 변수 및 실패를 재현합니다.

  • add\ evand\ sv보기 정의 편집 및 표시를위한 명령 (PETR Korobeinikov)

    이들은 기존과 평행합니다\ efand\ sf함수 명령.

  • A 추가\ gexec쿼리를 실행하고 결과를 새로운 쿼리로 다시 제출하는 명령 (Corey Huinker)

  • 허용\ PSET CString테이블 제목을 설정하려면\ cString(Bruce Momjian)

  • in\ pset 확장 자동모드, 하나의 열만 사용하여 쿼리 결과에 확장 형식을 사용하지 마십시오 (Andreas Karlsson, Robert Haas)

  • 헤더 출력 개선\ watchCommand (Michael Paquier, Tom Lane)

    포함\ pset title문자열이 설정된 경우 문자열, 헤더의 조립식 부분을 줄이면타임 스탬프(모든Ns). 또한 타임 스탬프 형식은 이제 순종PSQL'S Locale 환경.

  • 탭 완성 로직 개선 전체 입력 쿼리를 고려하여 현재 줄 (Tom Lane)

    이전에, 여러 줄로 명령을 나누면 이전 줄에서 단어를 볼 필요가있는 탭 완료 규칙을 물리 쳤습니다.

  • 탭 완성 행동의 수많은 사소한 개선 (Peter Eisentraut, Vik Fearing, Kevin Grittner, Kyotaro Horiguchi, Jeff Janes, Andreas Karlsson, Fujii Masao, Thomas Munro, Masahiko Sawada, Pavel Stehule)

  • A 추가프롬프트옵션%P연결된 백엔드 (Julien Rouhaud)의 프로세스 ID를 삽입하려면

  • 컨텍스트메시지 필드는 항상 또는 비 방어 메시지 (Pavel Stehule)에 대해서만 억제 할 수 있습니다.

    인쇄컨텍스트오류의 경우에만 기본 동작입니다. 특수 변수를 설정하여 변경할 수 있습니다show_context.

  • make\ df+기능 액세스 권한 및 평행 안전 속성 표시 (Michael Paquier)

E.25.3.10.2. pgbench

  • SQL 명령에서pgbench스크립트는 이제 Newlines가 아닌 세미콜론으로 끝납니다 (Kyotaro Horiguchi, Tom Lane)

    이 변경 사항은 스크립트의 SQL 명령이 여러 줄에 걸쳐 있도록 허용합니다. 기존 사용자 정의 스크립트는 이미없는 각 줄의 끝에 세미콜론을 추가하려면 수정해야합니다.pgbench.)

  • 부동 소수점 산술 및 일부 지원내장 기능, Backslash 명령 (Fabien Coelho)의 표현식

  • 교체\ setrandom내장 기능 (Fabien Coelho)

    새로운 내장 기능은 포함random (), random_exponential ()random_gaussian ()\ setrandom이지만 더 큰 표현에 포함시킬 수 있기 때문에 사용하기가 더 쉽습니다. 이러한 추가가 만들어 졌기 때문에\ setrandom쓸데없는, 제거하십시오.

  • 맞춤형 스크립트뿐만 아니라 내장 스크립트의 여러 사본을 호출 할 수 있습니다.

    이것은 새로운 상태로 완료되었습니다-B스위치는와 유사하게 작동합니다-f사용자 정의 스크립트 용.

  • 스크립트 (Fabien Coelho)의 선택 확률 (가중치) 변경 허용

    여러 스크립트가 지정되면 각pgbench트랜잭션은 무작위로 실행할 하나를 선택합니다. 이전에는 항상 균일 한 확률로 이루어졌지만 이제는 다른 스크립트에 대해 다른 선택 확률을 지정할 수 있습니다.

  • 다중 스크립트 실행 (Fabien Coelho)에서 각 스크립트에 대한 통계를 수집합니다.

    이 기능은 기존 전역 및 명령 당 통계에 중간 세부 수준을 추가합니다.

  • A 추가-Progress-timestamp실행 시작 이후 시간 대신 UNIX Epoch 타임 스탬프로 진행 상황을보고하는 옵션 (Fabien Coelho)

  • 클라이언트 연결 수 허용 (-c) 스레드 수의 정확한 배수가 아닌 경우 (-j) (Fabien Coelho)

  • 언제-t옵션이 사용됩니다. 지정된 시간이 끝날 때 즉시 중지하십시오 (Fabien Coelho)

    이전에 낮은 트랜잭션 비율을 지정하면pgbench지정된 것보다 훨씬 길게 대기합니다.

E.25.3.11. 서버 응용 프로그램

  • 중 오류보고 개선initdb의 부트 스트랩 단계 (Tom Lane)

    이전에, 여기에서 오류로 전체 입력 파일을로보고했습니다."실패 쿼리"; 이제 현재 쿼리 만보 고됩니다.initdb의 입력 파일을 빈 줄로 구분해야합니다.

  • 속도 업initdb모든 포스트 부트 스트랩 단계 (Tom Lane)에 하나의 독립형 지원 세션 만 사용하여.

  • 개선pg_rewind대상 타임 라인이 변경 될 때 작동 할 수 있도록 (Alexander Korotkov)

    예를 들어, 홍보 대기를 이전 마스터 타임 라인의 일부 상태로 되돌릴 수 있습니다..

E.25.3.12. 소스 코드

  • 쓸데없는 제거heap_formtuple/Heap_ModifyTuple/Heap_deformtuple기능 (Peter Geoghegan)

  • 매크로 추가AllocsetContextCreate ()더 간단하고 안전한 전화 (Tom Lane)

    메모리 컨텍스트에 대한 개별 크기 매개 변수 작성은 이제 새로운 매크로 중 하나를 사용하는 데 유리하게 더 이상 사용되지 않습니다allocset_default_sizes, allocset_small_sizes또는allocset_start_small_sizes. 그러나 기존 코드는 계속 작동합니다.

  • 무조건 사용정적 인라인헤더 파일의 기능 (Andres Freund)

    이것은 매우 오래된 컴파일러가있는 경고 및/또는 코드 공간을 낭비 할 수 있지만 표기법 개선은 그만한 가치가있는 것 같습니다.

  • 개선테스트 인프라 (Michael Paquier, Craig Ringer, Álvaro Herrera, Stephen Frost)

    특히이 인프라를 사용하여 복구 시나리오를 테스트 할 수 있습니다.

  • makeTRACE_LWLOCKS이름별로 개별 잠금 장치 식별 (Robert Haas)

  • 개선PSQL의 Tab-Completion Code Infrastructure (Thomas Munro, Michael Paquier)

    Tab-Completion 규칙은 이제 쓰기가 훨씬 쉽고 더 작습니다.

  • 손톱PG_SHSECLABEL시스템 카탈로그에 캐시에 카탈로그를 사용하여 연결 인증 중에 액세스 할 수 있도록 (Adam Brightwell)

    핵심 코드는 인증을 위해이 카탈로그를 사용하지 않지만 확장자가 상담 할 수 있습니다.

  • 구조 조정색인 액세스 방법API그 대부분을 숨기려면C레벨 (Alexander Korotkov, Andrew Gierth)

    이 변경 사항은 색인을 현대화합니다AM API외국 데이터 포장지 및 테이블 샘플 처리기에 채택한 설계와 비슷합니다. 이것은 단순화C코드는 설치 가능한 확장에서 인덱스 액세스 방법을 정의하는 것이 훨씬 실용적입니다. 결과적으로 대부분의 열은입니다.PG_AM시스템 카탈로그가 사라졌습니다. 새로운검사 기능SQL 쿼리가 발견 할 수있는 인덱스 AM 속성을 결정할 수 있도록 추가되었습니다PG_AM.

  • addPG_INIT_PRIVS시스템 카탈로그의 원래 권한을 보유하는 시스템 카탈로그initdb-제작 및 확장 제작 물체 (Stephen Frost)

    이 인프라가 허용pg_dump시스템 객체에 첨부 된 권한에 설치가 이루어질 수있는 변경 사항을 덤프합니다. 이전에는 이러한 변경 사항이 덤프 및 재 장전에서 손실되지만 이제는 보존됩니다.

  • 확장자가 사용자 정의 할당 방식을 변경lwlocks(Amit Kapila, Robert Haas)

    the​​requestAdDinlWlocks ()함수가 제거되고 대체requestNamedLwlocktranche (). 이것은 더 나은 사용자 정의 식별을 허용합니다lwlocks, 오류가 덜 발생합니다.

  • 격리 테스터를 개선하여 여러 세션이 동시에 기다릴 수 있도록하여 교착 시나리오 테스트 (Robert Haas)

  • 확장 가능한 노드 유형을 소개합니다 (Kaigai Kohei)

    이 변경이 허용FDWs 또는 사용자 정의 스캔 제공자는 이전에 가능한 것보다 더 편리한 형식으로 플랜 트리에 데이터를 저장하는 사용자 정의 스캔 제공자입니다.

  • 생성 및 비교를 통해 플래너/조인 쿼리 단계와 플래너를 거래하게합니다Paths, 많은 임시 로직 (Tom Lane) 교체

    이 변경 사항은 오늘날 한계 사용자가 가시 가능한 개선만을 제공하지만, 이전 코드 구조를 사용하여 비현실적 인 상류층 개선에 대한 향후 작업을 가능하게합니다..

  • 부분 집계 지원 (David Rowley, Simon Riggs)

    이 변경을 통해 병렬 작업자 프로세스가 집계 계산에 협력 할 수 있도록 집계 기능의 계산이 별도의 부품으로 분할 될 수 있습니다. 향후 로컬 및 원격 데이터의 집계가 원격 끝스포츠 토토 부분적으로 발생할 수 있습니다.

  • 일반 명령 진행 상황보고 시설 추가 (Vinayak Pokale, Rahila Syed, Amit Langote, Robert Haas)

  • 별도의PSQL'sFlexLexer 다른 고객 프로그램 (Tom Lane, Kyotaro Horiguchi)

    이것은 명령 경계를 식별하기에 충분히 SQL 명령을 구문 분석 할 수있는 프로그램의 코드 복제를 제거합니다. 전체 일반적인 상태에서 그렇게하는 것은 원하는 것보다 더 고통스럽고 지금까지는PSQL우리가 지원하는 고객 프로그램들 사이에서 실제로 그것을 얻었습니다.

    새 소스 코드 하위 디렉토리src/fe_utils/고객 프로그램에서 공유되는이 코드와 기타 코드를 보유하기 위해 작성되었습니다. 이전에는 이러한 공유는 빌드 타임에 상징적 링크 또는 복사 소스 파일에 의해 이루어졌으며, 이는 추악하고 중복 컴파일이 필요했습니다.

  • 소개waiteventset API일반적으로 한 번의 대기에서 다음 대기로 변경되지 않는 이벤트 세트를 효율적으로 대기 할 수 있도록 (Andres Freund, Amit Kapila)

  • 쓰기 용 일반 인터페이스 추가WalRecords (Alexander Korotkov, Petr Jelínek, Markus Nullmeier)

    이 변경 사항은 확장자가 쓸 수 있도록합니다Wal표준 레이아웃을 사용하여 페이지 변경을 기록합니다. 재생 해야하는 문제Wal확장에 액세스하지 않으면 일반 재생 코드가 있어야합니다. 이를 통해 확장자는 예를 들어 인덱스 액세스 방법을 구현하고Wal그들을위한 지원.

  • 제네릭 지원Wal논리 디코딩을위한 메시지 (Petr Jelínek, Andres Freund)

    이 기능은 확장자가 데이터를 삽입 할 수 있도록합니다.Wal논리적 디코딩 플러그인으로 읽을 수 있지만 실제 데이터 복원에 연결되어 있지 않은 스트림.

  • SP-Gist 연산자 클래스가 임의의 저장을 허용"Traversal Value"지수를 내려 가면서 (Alexander Lebedev, Teodor Sigaev)

    이것은 다소 비슷합니다"재구성 값", 그러나 인덱스 열과 동일한 데이터 유형이 아니라 임의의 데이터 덩어리 일 수 있습니다..

  • a 소개log_server_only메시지 레벨Ereport ()(David Steele)

    이 레벨은log메시지가 클라이언트에게 전송되지 않는 경우를 제외하고. 감사 및 유사한 응용 프로그램에 사용하기위한 것입니다.

  • a 제공MakeFile생성 된 모든 헤더를 빌드하는 대상 (Michael Paquier, Tom Lane)

    잠수함 생성 헤더생성 된 백엔드 헤더 파일이 최신 상태인지 확인하기 위해 이제 호출 할 수 있습니다. 이것은 구축 될 수있는 하위 부문스포츠 토토 유용합니다"독립형".

  • 지원 OpenSSL 1.1.0 (Andreas Karlsson, Heikki Linnakangas)

E.25.3.13. 추가 모듈

  • 구성 매개 변수 추가auto_explain.sample_rate허용Contrib/Auto_explain모든 쿼리의 구성 가능한 비율 만 캡처하려면 (Craig Ringer, Julien Rouhaud)

    이것은 무거운 쿼리 트래픽에 대한 오버 헤드를 줄일 수 있지만 평균적으로 유용한 정보를 얻을 수 있습니다.

  • addContrib/Bloom블룸 필터링 (Teodor Sigaev, Alexander Korotkov)을 기반으로 인덱스 액세스 방법을 구현하는 모듈

    이것은 주로 비 코어 인덱스 액세스 방법에 대한 개념 증명이지만 많은 열을 검색하는 쿼리에 대한 권리에 유용 할 수 있습니다..

  • inContrib/Cube, 큐브에 대한 거리 연산자를 소개하고 Cube Columns (Stas Kelvich)의 GIST 인덱스에서 KNN 스타일 검색을 지원합니다.

  • makeContrib/Hstore'shstore_to_jsonb_loose ()andhstore_to_json_loose ()함수는 숫자가 무엇인지에 동의합니다 (Tom Lane)

    이전,hstore_to_jsonb_loose ()숫자 모양의 문자열을JSON정확히 일치하지 않더라도 문자열이 아닌 숫자JSON숫자에 대한 구문 사양. 이것은와 일치하지 않았습니다.hstore_to_json_loose (), 따라서 테스트를 조여JSON구문.

  • 선택성 추정 기능 추가Contrib/Intarray해당 연산자를 사용하여 쿼리 계획을 개선하기위한 운영자 (Yury Zhuravlev, Alexander Korotkov)

  • makeContrib/PageInspect'sheap_page_items ()함수 각 튜플에 원시 데이터를 표시하고 새로운 기능을 추가합니다tuple_data_split ()andheap_page_item_attrs ()개별 튜플 필드 검사 (Nikolay Shaplov)

  • 선택 사항 추가S2K반복 카운트 매개 변수로Contrib/Pgcrypto'spgp_sym_encrypt ()함수 (Jeff Janes)

  • 지원 추가"단어 유사성"toContrib/PG_TRGM(Alexander Korotkov, Artur Zakirov)

    이 함수와 연산자는 하나의 문자열과 다른 문자열의 가장 유사한 단일 단어 사이의 유사성을 측정합니다.

  • 구성 매개 변수 추가pg_trgm.similarity_thresholdforContrib/PG_TRGM의 유사성 임계 값 (Artur Zakirov)

    이 임계 값은 항상 구성 가능했지만 이전에는 특수 목적 기능에 의해 제어되었습니다set_limit ()andshow_limit (). 이제는 더 이상 사용되지 않습니다.

  • 개선Contrib/PG_TRGM'S Gin 운영자 클래스 공통 및 희귀 키가 나타나는 인덱스 검색 속도를 높이기 위해 (Jeff Janes)

  • 유사성 검색의 성능 향상Contrib/PG_TRGM진 인덱스 (Christophe Fornaroli)

  • addcontrib/pg_visibility테이블 가시성 맵 검사를 허용하는 모듈 (Robert Haas)

  • addssl_extension_info ()함수 toContrib/Sslinfo, 정보를 인쇄하려면SSLextensions에 존재합니다X509현재 연결에 사용되는 인증서 (Dmitry Voronin)

E.25.3.13.1. postgres_fdw

  • 확장자가 외국 서버의 옵션 (Paul Ramsey)에서 화이트리스트에 올라가는 경우 원격 실행을 위해 확장 프로그램 및 기능을 전송하도록 허용

    사용자는 원격 데이터베이스의 호환 버전으로 확장자가 존재하는 것으로 알려진 경우 사용자 가이 기능을 활성화 할 수 있습니다. 확장 연산자와 관련된 쿼리를보다 효율적으로 실행할 수 있습니다.

  • 원격 서버 (Ashutosh Bapat)에서 정렬 수행을 고려하십시오.

  • 원격 서버 (Shigeru Hanada, Ashutosh Bapat)에서 조인을 수행하는 것을 고려하십시오.

  • 실행 가능한 경우 수행업데이트또는삭제전적으로 원격 서버 (Etsuro Fujita)

    이전, 원격 업데이트는 A를 전송했습니다.업데이트 선택명령 한 다음 선택한 행을 하나씩 업데이트하거나 삭제합니다. 작업에 로컬 처리가 필요한 경우에도 여전히 필요하지만 이제 쿼리의 모든 요소가 원격 서버로 안전하게 보낼 수있는 경우 원격으로 수행 할 수 있습니다.

  • 페치 크기를 서버 또는 테이블 옵션으로 설정하도록 허용 (Corey Huinker)

    이전,postgres_fdw원격 쿼리스포츠 토토 한 번에 100 행을 항상 가져 왔습니다. 이제 동작은 구성 가능합니다.

  • 동일한 원격 사용자 (Ashutosh Bapat)에 맵핑되는 로컬 사용자 ID에 대한 단일 외국 서버 연결을 사용하십시오.

  • 원격 서버 (Michael Paquier, Etsuro Fujita)로 쿼리 취소 요청을 전송합니다.

    이전에, 로컬 쿼리 취소 요청은 이미 중재 된 원격 쿼리가 일찍 종료되지 않았다..