database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL News 9333 게시물 읽기
 News | Q&A | Columns | Tutorials | Devel | Files | Links
No. 9333
PostgreSQL 9.3 릴리즈 노트
작성자
김상기(ioseph)
작성일
2013-09-03 13:46ⓒ
2013-09-09 17:48ⓜ
조회수
7,588

 

1. 개요

  • materialized view 지원
  • 단일 테이블을 사용하는 뷰는 자료 조작 쿼리가 가능해 짐
  • JSON 자료형 조작에 대한 기능이 대폭 확대
  • 서브쿼리를 사용하는 FROM절이나, 함수를 호출할 때 표준 SQL 구문인 LATERAL 옵션을 사용할 수 있음
  • 외부 테이블의 자료 조작 작업을 위한 외부 자료 랩퍼 기능 확대
  • contrib에서 Postgres foreign data wrapper 모듈 제공
  • 이벤트 트리거 도입 (create table, role 같은 작업에 대해서 트리거를 사용할 수 있음)
  • 데이터 파일 체크섬 기능 추가 (개발자, 버그 추적용)
  • 스트리밍 리플리케이션 기능에서 대기서버가 변경된 타임라인에 따라 계속 대기 할 수 있으며, 운영 서버 전환이 빨라짐
  • 공유 메모리 사용에 대해 더이상 커널 환경 설정 매개변수에 의존적이지 않음
  • 참조키 잠금 현상에서 관계없는 자료들에 대한 변경 시 잠금 현상 없음

2. v9.3 마이그레이션 안내

2.1. 서버 설정

  • replication_timeout 매개변수 이름이 wal_sender_timeout 으로 바뀜
  • commit_delay 설정이 다른 세션 프로세스와 관계된 작업으로 변경 됨에 따라 슈퍼유저만 바꿀 수 있게 바뀜
  • 정렬 작업에서 사용할 수 있는 메모리 전체를 사용함 (테스트 필요)

2.2. 기타

  • 만료된 튜플에 대한 update, delete 구문 적용 시 오류 냄
    (실무 환경에서는 일어나지 않을 것 같음, 테스트 필요)
  • ON UPDATE SET NULL/SET DEFAULT 구문 기능 변경
    (옛 버전과 비교 필요)
  • pg_constraint.confmatchtype 초기값이 ""에서 "simple"로 바뀜
    (이 카탈로그를 사용하는 쿼리 변경 필요)
  • WAL 쪼가리 파일이 F0에서 FF로 끝나서 이름 바뀜
    (아카이브 쪽 파일 처리하는 작업 확인 필요)
  • to_char()에서 사용하는 D, FM 관련 소수점 처리가 특정 로케일 환경에서 오동작 하던 것 수정 됨
    (한국어 기반 - LC_CTYPE, LC_COLLATE 값이 C 환경에서는 변경 사항 없음, ko_KR.UTF-8 환경에서 테스트 필요)
  • 레코드 리턴 함수를 STRICT 스칼라 리턴 함수로 사용할 경우, 그 값이 null 인 경우 아무것도 리턴하지 않음
    (옛 버전에서는 null 값을 가진 로우를 리턴함 - 확인 필요)

3. 바뀐 것들

3.1. 서버

  1. 잠금
    • 참조키 관련 잠금 현상 개선
    • lock_timeout 환경 변수 새로 추가
    • 세션별 lock 캐시 사용
  2. 인덱스
    • range 자료형에 대해서도 SP-GiST 지원
    • GiST 인덱스에 대해서도 unloged 기능 제공
    • hash 인덱스 동시성 개선
  3. 최적화기
    • range 자료형에 대한 통계정보 사용
    • 불필요한 cheaper 시작 비용 줄임
    • 인덱스 사용에 따른 잠정 비용 계산 개선
  4. 일반 성능관련
    • COPY FREEZE 구문 추가 - 대량 자료 등록 성능 개선
    • NUMERIC 자료형 연산 성능 개선
    • commit_delay 작동 방식 변경
    • 트랜잭션 처리 기능 개선 - lock 캐시 사용
    • CREATE TEMPORARY TABLE ... ON COMMIT DELETE ROWS 성능 개선
    • pg_stat_tmp 통계 정보 임시 파일이 전역과 각 데이터베이스 별로 분리
  5. 모니터링
    • 데이터파일 손상을 모니터링 하는 체크섬 기능 추가 - 성능과 안정성 테스트 필요
      initdb 에서만 설정 가능
    • pg_terminate_backend() 함수를 자기와 같은 권한을 가진 사용자끼리 사용할 수 있게 변경
    • 통계 수집기가 시스템 시간에 관계 없이 작동 하도록 변경
      옛 버전은 시스템 시간이 DB 시간보다 늦으면 작동하지 않았음
  6. 인증
    • LDAP 관련 문서와 오류 출력 개선
    • LDAP 인증에서 URL 양식 지원
    • 보다 엄격해진 SSL 인증
    • pg_ident.conf 파일도 pg_hab.conf 처럼 처리 (reload 해야 변경 사항 적용)
  7. 서버 설정
    • 커널 환경 설정 없이 공유 메모리 사용
    • unix_socket_directory 설정이 unix_socket_directories 로 바뀌면서 여러 유닉스 소켓을 동시에 사용할 수 있게 함
    • include_dir 추가로 서버 실행 환경 변수 설정 파일을 여러 개 설정 할 수 있도록 함
    • initdb 명령 기본 shared_buffers 값을 128MB로 변경
    • postmaster가 종료시 external_pid_file 로 설정된 파일 삭제

3.2. 리플리케이션과 복구

  • 운영 서버 타임라인이 변경 되어도 그대로 대기 서버에서 스트리밍 리플리케에션을 계속 할 수 있음
  • pg_is_in_backup() 함수와 pg_backup_start_time() 함수 제공
  • 로그 전달 스트리밍 리플리케이션에서 synchronous_commit 비활성화 됨 - 속도 개선
  • 대기 서버가 운영 서버로 바뀌는 작업 속도 향상
  • pg_controldata 명령으로 마지막 체크포인트 리두 위치를 보여 줌
  • pg_receivexlog 명령을 이용해서 아키텍쳐가 다른 서버에 대해서도 스트리밍 리플리케이션이 가능해 짐
  • pg_basebackup --write-recovery-conf 명령으로 기본 recovery.conf 파일을 만들 수 있음 - 보다 쉽게 대기 서버를 구축할 수 있음.
  • pg_receivexlog, pg_basebackup 명령에서 --xlog-method 옵션을 이용한 라임라인 변경 가능
  • wal_receiver_timeout 환경 설정값 추가 - 서버가 동기화 장애 파악이 더 빨라짐

3.3. 쿼리

  • FROM-절에 LATERAL 옵션 사용 가능
    (내용 추가 필요)
  • COPY 명령과 psql \copy 명령에서 외부 프로그램의 파이프를 사용할 수 있음.

3.4. 객체 다루기

  • 이벤트 트리거 지원 - DDL 작업시 트리거를 사용할 수 있음
  • DML 작업이 가능한 외부 자료 덮개(foreign data wrapper) 구현 가능
    postgres 덮개 추가
  • 룰에서 OLD/NEW 참조자에 다중 VALUES를 사용할 수 있음
  • CREATE SCHEMA ... IF NOT EXISTS 구문 추가
  • REASSIGN OWNED 구문 추가 - 롤 변경 관련
  1. CREATE TABLE
    • 덩달아 만들어지는 인덱스, 시퀀스 메시지 이제 안 보임, 로그 수준을 DEBUG1 수준으로 바꿈
    • DROP TABLE IF EXISTS 구문에서 스키마 이름이 없어도 오류를 내지 않음.
  2. 제약조건
    • 응용 프로그램 개발자를 위한 오류 처리에서 제약조건 관련 오류코드 추가 됨
      오류 메시지 문자열 처리에서 오류 코드 처리로도 가능해짐
  3. ALTER
    • ALTER TYPE ... ADD VALUE 구문에서 IF NOT EXISTS 옵션 추가
      (나열형(enum) 자료형에 자료를 추가할 때 유용하게 쓸 수 있음)
    • ALTER ROLE ALL SET 구문 추가 - 모든 사용자에게 특정 설정을 할 경우 유용
    • ALTER RULE ... RENAME 구문 추가
  4. VIEW
    • materialized view 지원
      아직까지는 원본 테이블의 자료 변화에 따른 자동 뷰 갱신이나, 변경 분 자동 반영 기능은 없음
    • 단일 테이블을 참조하는 뷰인 경우 자동으로 DML 작업이 가능해짐
    • 뷰 생성 쿼리 보기 기능이 향상됨
    • CREATE RECURSIVE VIEW 구문 지원

3.5. 자료형

  • 큰놈 large object 크기가 2GB 에서 4TB로 변경
  • 지역시간대 time zone 이름으로 전체 이름 사용 가능, 예, "America/Chicago"
  • JSON 관련 조작 함수, 연산자 추가

3.6. 함수

  • array_remove(), array_replace() 추가
  • Allow concat() and format() to properly expand VARIADIC-labeled arguments
  • format() 좌우정렬 개선
  • to_char(), to_date(), to_timestamp() 관련 함수 개선

3.7. 서버 내장 프로시져 언어

(생략)

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

  • pg_isready 명령 추가 (서버에 접속 가능한지 체크)
  • pg_restore, clusterdb, reindexdb, vacuumdb 명령에서 --table 옵션 값을 pg_dump 그것처럼 여러 테이블을 지정할 수 있음
  • pg_dumpall, pg_basebackup, pg_receivexlog 명령에서 --dbname 옵션 추가
  • libpq에 접속 정보를 리턴하는 PQconninfo() 함수 추가
  1. psql
    • 탭 자동완성 기능과 패턴 검색 기능 향상
    • 표준 입력으로 읽을 때도 --single-transaction 옵션 사용할 수 있음
    • 하위 버전 서버에 접속 할 때 보여줬던 경고 메시지 안 보임
    1. 역슬래시 명령어들
      • \watch 추가, 이전 쿼리 반복 실행
      • \gset
      • \conninfo
      • \df+ 에서 "Security" 칼럼 추가
      • \l 명령 인자 값으로 검색 패턴 사용 가능
      • \g file 작동 방식이 오류난 쿼리 건너 뛰고 실행
    2. 출력
      • latex-longtable 출력 가능, latex 출력양식에서 border=3 출력 모드 지원
      • 자료만 출력하는 경우 "(No rows)" 출력 없음
      • In psql, no longer print an empty line for unaligned, expanded output for zero rows
        (변화를 모르겠음)
  2. pg_dump
    • --jobs 옵션 추가, 테이블 단위 다중 덤프
    • 객체 의존성 관련 덤프 순서가 보다 정밀해 짐
    • pg_dump, pg_basebackup에서 tar 파일로 만들 경우, POSIX 호환
    • --dbname 옵션 추가
  3. initdb
    • 데이터 디렉토리를 만들고 fsync 함 --nosync 옵션으로 기능 끌 수 있음
    • --sync-only 옵션 추가, pg_upgrade 명령에서 사용됨
    • 최상위 마운트 위치에서 데이터 디렉토리를 만들 때 경고 보임

3.9. 소스 코드

(생략)

3.10. 부가 확장 모듈

  • postgres 외부 자료 덮개 (DML 작업 가능)
  • pg_xlogdump
  • pg_trgm에서 정규식으로 검색 시 인덱스 사용 할 수 있음
  • pg_trgm 멀티바이트 문자들 지원 (이제 쓸 때가 되었다!)
  • pgstattuple 에서 GIN 인덱스에서 여유 공간을 살펴볼 수 있는 함수 추가
  • oid2name, pgbench, vacuumlo 에서 application_name 값 지정됨
  • pg_test_timing 출력 더 예쁘게
  • pg_test_fsync 출력 더 예쁘게
  • dblink에서 validator 선택사항 개선

3.11. 문서

(생략)

[Top]
No.
제목
작성자
작성일
조회
9383PostgreSQL 9.3.2 Released
김상기
2013-12-07
4226
9361PostgreSQL 9.3.1 Released
김상기
2013-10-11
4430
9336PostgreSQL 9.3 Released
김상기
2013-09-10
4267
9333PostgreSQL 9.3 릴리즈 노트
김상기
2013-09-03
7588
9261PostgreSQL 9.2.4 Released (주요!) [1]
김상기
2013-04-05
4938
9251PostgreSQL 공식 설명서 번역 프로젝트 시작합니다. [4]
김상기
2013-03-07
5196
9233PostgreSQL 9.2.3 Released
김상기
2013-02-13
4293
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.047초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다