SlideShare a Scribd company logo
1 of 39
Download to read offline
PostgreSQL 9.6 새 기능
이지호(search5@gmail.com)
강연자 소개
u 이름: 이지호, 호: 서치(슬기 서, 기다릴 치), 영문 중간 이름: persy
u 소속: 한국방송통신대학교 대학원 정보과학과, (주)위비즈넷, 사단법인 E.S.C
u 98년 알짜레드햇 6.0에서 PostgreSQL 6.4를 보고 아!!! 이거다!!
PostgreSQL은 어떤 데이터베이스에요?
u PostgreSQL은 1986년 캘리포니아 버클리에서 시작해 1988년 만들어진 BSD 기반의 오픈소
스 데이터베이스
u 이후 여러번의 지속적인 개선을 통해 1996년 PostgreSQL 발표.
u PostgreSQL이 제공하는 특징
u 연산자, 복합 자료형, 집계 함수, 자료형 변환자, 확장 함수 등 제공
u 테이블 생성 및 조회시 상속 기능 사용 가능
u 함수(프로시저) 사용 가능(pl/pgsql이 공식이나 python, java, php, perl, tcl도 가능)
u 이름은 어떻게 부르나요? -> 여러분이 부르고 싶은대로 부르세요.
PostgreSQL 커뮤니티
u 한국 PostgreSQL 사용자 모임은
u http://www.facebook.com/groups/postgres.kr
u 2016년 10월 10일 기준 1,030명에 이르는 회원수를 자랑합니다.
u 모임은?
u 매달 넷째주 일요일에 애 안봐도 되고, 애인 안 만나도 되고, 다른 할 일도 없는 분들이
모여 정기 기술 세미나를 오후 2시 ~ 오후 5시까지 하고,
u 주말의 필수품목인 ‘알콜’ Drinking을 하지 않는 정말 건전한 모임을 합니다.
Parallel execution of sequential scans,
joins and aggregates
Parallel execution of sequential scans,
joins and aggregates
u max_parallel_workers_per_gather (integer) - 병렬 쿼리를 실행할 작업자 수. 기본값 0
u max_worker_processes (integer) - 백그라운드 프로세스의 최대 수. 기본값: 시스템 코어 수
u parallel_setup_cost (floating point) - Sets the planner's estimate of the cost of launching
parallel worker processes. The default is 1000.
u parallel_tuple_cost (floating point) - Sets the planner's estimate of the cost of transferring
one tuple from a parallel worker process to another process. The default is 0.1.
u min_parallel_relation_size (integer) - Sets the minimum size of relations to be considered
for parallel scan. The default is 8 megabytes (8MB).
Parallel execution of sequential scans,
joins and aggregates
=# EXPLAIN SELECT count(*) FROM partest;
QUERY PLAN
-----------------------------------------------------------------------
Aggregate (cost=37059.38..37059.39 rows=1 width=8)
-> Seq Scan on partest (cost=0.00..31417.50 rows=2256750 width=0)
Parallel execution of sequential scans,
joins and aggregates
template1=# set max_parallel_workers_per_gather = 1;
template1=# EXPLAIN SELECT count(*) FROM partest;
QUERY PLAN
-----------------------------------------------------------------------
Finalize Aggregate (cost=24556.00..24556.01 rows=1 width=8)
-> Gather (cost=24555.88..24555.99 rows=1 width=8)
Workers Planned: 1
-> Partial Aggregate (cost=23555.88..23555.89 rows=1 width=8)
-> Parallel Seq Scan on partest (cost=0.00..20614.71 rows=1176471 width=0)
Parallel execution of sequential scans,
joins and aggregates
template1=# set max_parallel_workers_per_gather = 3;
template1=# EXPLAIN SELECT count(*) FROM partest;
QUERY PLAN
-----------------------------------------------------------------------
Finalize Aggregate (cost=20266.88..20266.89 rows=1 width=8)
-> Gather (cost=20266.67..20266.88 rows=1 width=8)
Workers Planned: 2
-> Partial Aggregate (cost=19266.67..19266.68 rows=1 width=8)
-> Parallel Seq Scan on partest (cost=0.00..17183.33 rows=833333 width=0)
Parallel execution of sequential scans,
joins and aggregates
template1=# set max_parallel_workers_per_gather = 5;
template1=# explain analyze select min(col1) from partest;
QUERY PLAN
-----------------------------------------------------------------------
Finalize Aggregate (cost=127493.90..127493.91 rows=1 width=8) …
-> Gather (cost=127493.37..127493.88 rows=5 width=8) …
Workers Planned: 5
Workers Launched: 5
-> Partial Aggregate (cost=126493.37..126493.38 rows=1 width=8) …
-> Parallel Seq Scan on partest (cost=0.00..121493.30 rows=…) …
Planning time: 0.110 ms
Execution time: 1422.139 ms
Parallel execution of sequential scans,
joins and aggregates
template1=# set max_parallel_workers_per_gather = 6;
template1=# explain analyze select min(col1) from partest;
QUERY PLAN
-----------------------------------------------------------------------
Finalize Aggregate (cost=127493.90..127493.91 rows=1 width=8) …
-> Gather (cost=127493.37..127493.88 rows=5 width=8) …
Workers Planned: 6
Workers Launched: 6
-> Partial Aggregate (cost=126493.37..126493.38 rows=1 width=8) …
-> Parallel Seq Scan on partest (cost=0.00..121493.30 rows=…) …
Planning time: 0.110 ms
Execution time: 1422.139 ms
Autovacuum no longer performs
repetitive scanning of old data
u PostgreSQL 9.6 부터 성능 향상을 위해 영구보관용 데이터에 대해서
auto vacuum 중지
u PostgreSQL 9.6 이전까지 모든 힙 페이지 스캔
u 9.6은 마지막 동결 이후 수정된 페이지만 스캔
u 이 결정 덕분에 쓰기가 드문 테이블 성능 향상 혜택
Synchronous replication now allows multiple
standby servers for increased reliability
How replication works
Synchronous replication now allows multiple
standby servers for increased reliability
synchronous_commit = off
Synchronous replication now allows multiple
standby servers for increased reliability
synchronous_commit = local
Synchronous replication now allows multiple
standby servers for increased reliability
synchronous_commit = on (default)
Synchronous replication now allows multiple
standby servers for increased reliability
synchronous_commit = remote_write
Synchronous replication now allows multiple
standby servers for increased reliability
synchronous_commit = remote_apply
Synchronous replication now allows multiple
standby servers for increased reliability
u synchronous_standby_names =	
  ‘standby_name [,	
  …]’
u synchronous_standby_names =	
  ‘num (standby_name [,	
  …])’
u ex)	
  synchronous_standby_names =	
  ‘2(*)’
u synchronous_standby_names is	
  empty
u If	
  this parameter	
  is	
  empty as	
  shown it	
  changes behaviour of	
  
setting synchronous_commit to on, remote_write or remote_apply to	
  behave same	
  
as local (ie,	
  the COMMIT will only wait for	
  flushing to	
  local disk).
postgres_fdw now supports remote
joins, sorts, UPDATEs, and DELETEs
FDW
Foreign  
Server
Foreign  
Server
Foreign  
Server
SQL 쿼리
Join, Sort, Updates, Deletes
Allow Limiting of Snapshot Age
old_snapshot_threshold 값은 서버를 시작할때만 설정 가능(DEFAULT: -1, 0, 1min - 60d)
Session  1 Session  2
show  old_snapshot_threshold;;
create  table  snaptest(x  int);;
insert  into  snaptest values  (1);;
begin  work;;
set  transaction  isolation  level  serializable;;
select  *  from  snaptest;;
update  snaptest set  x  =  2;;
select  pg_sleep(100);;
vacuum  snaptest;;
select  *  from  snaptest;;
ERROR:snapshot  too  old;;
Allow Sessions with Long-Idle
Transactions To Be Terminated
u 오래 기다리고 있는 세션에 대해서 연결을 기다리지 않고 세션 자동 종료. default: 0
=# SET idle_in_transaction_session_timeout = ’2s’;
=# BEGIN WORK;
-- sit idle for 3 seconds
=# SELECT 1;
FATAL: terminating connection due to idle-in-transaction timeout
server closed the connection unexpectedly
CREATE	
  EXTENSION	
  CASCADE	
  Support
u PostgreSQL 9.6 이전에 EXTENSION 설치 시 종속성 부터 설치
=# create extension cube;
=# create extension earthdistance;
u PostgreSQL 9.6 부터는 EXTENSION의 control 파일에 종속성 정의
=# create extension earthdistance cascade;
NOTICE: installing required extension "cube"
CREATE EXTENSION
CREATE	
  EXTENSION	
  CASCADE	
  Support
# blackhole extension
comment = 'Minimal Extension Template’
default_version = '1.0’
module_pathname = '$libdir/blackhole’
relocatable = true
requires = ’cube, jsonlog’
=# create extension blackhole cascade
SUPPORT	
  CROSSTABVIEW	
  IN	
  PSQL
u PostgreSQL 9.6 이전엔 crosstab 쿼리는 tablefunc 모듈 사용.
=# create table test2 as
select
('{a,b,c,d,e,f}'::text[])[1 + floor(random() * 6)] as type_1,
('{m,n,o,p,q,r}'::text[])[1 + floor(random() * 6)] as type_2,
random() * 1000 as some_float
from generate_series(1,20000);
SUPPORT	
  CROSSTABVIEW	
  IN	
  PSQL
u =# select type_1, type_2, count(*)
from test2 group by type_1, type_2 crosstabview
type_1 | q | n | o | r | m | p
--------+-----+-----+-----+-----+-----+-----
f | 519 | 569 | 515 | 593 | 519 | 560
e | 605 | 539 | 547 | 555 | 587 | 577
c | 574 | 590 | 534 | 549 | 541 | 556
d | 569 | 487 | 569 | 521 | 523 | 553
b | 543 | 594 | 547 | 573 | 548 | 590
a | 586 | 576 | 568 | 555 | 559 | 510
(6 rows)
type_1	
  |	
  type_2	
  |	
  some_float
-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
1	
  |	
  	
  	
  	
  	
  b	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  m	
  	
  	
  	
  	
  |409.59995565936
2	
  |	
   e	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  n	
  	
  	
  	
  	
  	
  |453.834847547114
3	
  |	
   f	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  o	
  	
  	
  	
  	
  	
  |113.634209148586
4	
  |	
   b	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  n	
  	
  	
  	
  	
  	
  |332.8404747881
5	
  |	
   d	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  n	
  	
  	
  	
  	
  	
  |832.656755112112
6	
  |	
   b	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  o	
  	
  	
  	
  	
  	
  |525.860982947052
7	
  |	
   b	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  r	
  	
  	
  	
  	
  	
  |873.10529500246
Generic	
  WAL	
  facility
u PostgreSQL 9.6은 외부 개발자가 CUSTOM EXTENSION 개발을 쉽게 할
수 있도록 일반화된 WAL 인터페이스 제공
u GenericXLogStart
u GenericXLogRegisterBuffer
u GenericXLogFinish
u GenericXLogAbort
Allow COPY to copy the output of
an INSERT/UPDATE/DELETE ... RETURNING query
=# COPY (INSERT INTO tab_data VALUES (1, 'aa'), (2, 'bb') RETURNING a, b) TO stdout;
1 aa
2 bb
=# COPY (UPDATE tab_data SET b = 'cc' WHERE a = 1 RETURNING *) TO stdout;
1 cc
=# COPY (DELETE FROM tab_data WHERE a = 2 RETURNING *) TO stdout;
2 bb
Prompt variable to show PId of backend
u psql 프롬프트에 Postmaster PID 표시
u 주의)  pg_bouncer, pg_pool 등 사용시 PID 예측 불가
=# set PROMPT1 '%n@%/ : %p $ '
depesz@depesz : 26853 $
u prompt에 사용 가능한 모든 옵션:
u https://www.postgresql.org/docs/current/static/app-­psql.html#APP-­PSQL-­PROMPTING
Monitoring Features
u Add System Catalog
u Vacuum progress reporting
u pg_config System View
u System view to monitor WAL receiver status
u Modified System Catalog
u pg_stat_activity wait-type reporting
u Add System Function
u pg_control Values Exposed
u Notification queue monitoring
Monitoring Features -
pg_stat_activity wait-type reporting
u PostgreSQL 9.6에서 pg_stat_activity catalog 컬럼 추가
u wait_event_type - The type of event for which the backend is waiting
u wait_event - Wait event name if backend is currently waiting
u The value of wait_event_type column
• LWLockNamed - Waiting by a particular lightweight lock
• LWLockTranche - Waiting by the lightweight lock for the group
• Lock - Waiting by weight lock (LOCK TABLE statement etc)
• BufferPin - PIN waiting for the buffer
u wait_event
• https://www.postgresql.org/docs/9.6/static/monitoring-stats.html
Monitoring Features -
Vacuum progress reporting
u This catalog provides information about the state of the progress of vacuum processing.
This catalog is readable by the general superuser.
Column	
  Name Data	
  Type Description	
  
pid integer	
   Process	
  ID	
  of	
  backend
datid oid OID	
  of	
  database
datname name Connected	
  database	
  name
relid oid OID	
  of	
  the	
  table	
  being	
  vacuumed
phase text Current	
  processing	
  phase	
  of	
  vacuum
heap_blks_total bigint Total	
  number	
  of	
  heap	
  blocks	
  in	
  the	
  table
heap_blks_scanned bigint Number	
  of	
  heap	
  blocks	
  scanned
heap_blks_vacuumed bigint Number	
  of	
  heap	
  blocks	
  vacuumed
index_vacuum_count bigint Number	
  of	
  completed	
  index	
  vacuum	
  cycles
max_dead_tuples bigint Number	
  of	
  dead	
  tuples	
  that	
  we	
  can	
  store	
  before	
  needing	
  to	
  perform	
  an	
  index	
  
vacuum	
  cycle
num_dead_tuples bigint Number	
  of	
  dead	
  tuples	
  collected	
  since	
  the	
  last	
  index	
  vacuum	
  cycle
Monitoring Features -
Vacuum progress reporting
postgres=# SELECT * FROM pg_stat_progress_vacuum ;
-[ RECORD 1 ]-----------+--------------
pid | 3184
datid | 16385
datname | demodb
relid | 16398
phase | scanning heap
heap_blks_total | 10052
heap_blks_scanned | 2670
heap_blks_vacuumed | 2669
index_vacuum_count | 0
max_dead_tuples | 291
num_dead_tuples | 185
Monitoring Features -
pg_config System View
u pg_config를 시스템 유저 권한으로 SQL로 조회
u Column: name, setting
postgres=#	
  SELECT	
  *	
  FROM	
  pg_config	
  ;	
  
name	
   |	
  setting
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
BINDIR	
   |	
  /usr/local/pgsql/bin
DOCDIR	
   |	
  /usr/local/pgsql/share/doc
HTMLDIR	
   |	
  /usr/local/pgsql/share/doc
INCLUDEDIR	
   |	
  /usr/local/pgsql/include
PKGINCLUDEDIR	
  |	
  /usr/local/pgsql/include
Monitoring Features -
pg_control Values Exposed
Name Return	
  Type Description
pg_control_checkpoint() record
Returns	
  information	
  about	
  current	
  checkpoint	
  
state.
pg_control_system() record
Returns	
  information	
  about	
  current	
  control	
  file	
  s
tate.
pg_control_init() record
Returns	
  information	
  about	
  cluster	
  initialization	
  
state.
pg_control_recovery() record Returns	
  information	
  about	
  recovery	
  state.
They also show information about write-ahead logging and checkpoint processing. This
information is cluster-wide, and not specific to any one database
Monitoring Features -
System view to monitor WAL receiver status
This catalog provides information about the state of a slave instance's WAL receiver
process in replication environment. This catalog is readable by the general user.
pid integer Process  ID  of  the  WAL  receiver  process
status text Activity  status  of  the  WAL  receiver  process
receive_start_lsn pg_lsn
First  transaction  log  position  used  when  WAL  
receiver  is  started
receive_start_tli integer
First  timeline  number  used  when  WAL  receiver  is  
started
received_lsn pg_lsn
Last  transaction  log  position  already  received  and  
flushed  to  disk,  the  initial  value
received_tli integer
Timeline  number  of  last  transaction  log  position  
received  and  flushed  to  disk,  the  initial  value
last_msg_send_time timestamp  with  time  zone
Send  time  of  last  message  received  from  origin  WAL  
sender
Monitoring Features -
System view to monitor WAL receiver status (…)
This catalog provides information about the state of a slave instance's WAL receiver
process in replication environment. This catalog is readable by the general user.
pid integer Process  ID  of  the  WAL  receiver  process
last_msg_receipt_time timestamp  with  time  zone
Receipt  time  of  last  message  received  from  origin  
WAL  sender
latest_end_lsn pg_lsn
Last  transaction  log  position  reported  to  origin  WAL  
sender
latest_end_time timestamp  with  time  zone
Time  of  last  transaction  log  position  reported  to  
origin  WAL  sender
slot_name text Replication  slot  name  used  by  this  WAL  receiver
conninfo text
Connection  string  used  by  this  WAL  receiver,  with  
security-­sensitive  fields  obfuscated.
Monitoring Features -
Notification queue monitoring
u PostgreSQL 큐는 8GB까지의 제한 존재
u DBA 관리자가 큐에 남은 작업이 있는지 확인할 필요
=# select pg_notification_queue_usage();
u 이 함수가 반환하는 실수 양에 따라 남아있는 작업량 판단 가능
감사합니다.
Q&A

More Related Content

What's hot

Advanced backup methods (Postgres@CERN)
Advanced backup methods (Postgres@CERN)Advanced backup methods (Postgres@CERN)
Advanced backup methods (Postgres@CERN)Anastasia Lubennikova
 
제 8회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 8회 엑셈 수요 세미나 자료 연구컨텐츠팀제 8회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 8회 엑셈 수요 세미나 자료 연구컨텐츠팀EXEM
 
Performance schema 설정
Performance schema 설정Performance schema 설정
Performance schema 설정EXEM
 
Amazon aurora 1
Amazon aurora 1Amazon aurora 1
Amazon aurora 1EXEM
 
Automating Disaster Recovery PostgreSQL
Automating Disaster Recovery PostgreSQLAutomating Disaster Recovery PostgreSQL
Automating Disaster Recovery PostgreSQLNina Kaufman
 
Введение в современную PostgreSQL. Часть 2
Введение в современную PostgreSQL. Часть 2Введение в современную PostgreSQL. Часть 2
Введение в современную PostgreSQL. Часть 2Dzianis Pirshtuk
 
제 6회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 6회 엑셈 수요 세미나 자료 연구컨텐츠팀제 6회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 6회 엑셈 수요 세미나 자료 연구컨텐츠팀EXEM
 
What's new in PostgreSQL 11 ?
What's new in PostgreSQL 11 ?What's new in PostgreSQL 11 ?
What's new in PostgreSQL 11 ?José Lin
 
PGDay.Amsterdam 2018 - Stefan Fercot - Save your data with pgBackRest
PGDay.Amsterdam 2018 - Stefan Fercot - Save your data with pgBackRestPGDay.Amsterdam 2018 - Stefan Fercot - Save your data with pgBackRest
PGDay.Amsterdam 2018 - Stefan Fercot - Save your data with pgBackRestPGDay.Amsterdam
 
Mvcc in postgreSQL 권건우
Mvcc in postgreSQL 권건우Mvcc in postgreSQL 권건우
Mvcc in postgreSQL 권건우PgDay.Seoul
 
PostgreSQL Administration for System Administrators
PostgreSQL Administration for System AdministratorsPostgreSQL Administration for System Administrators
PostgreSQL Administration for System AdministratorsCommand Prompt., Inc
 
Mastering PostgreSQL Administration
Mastering PostgreSQL AdministrationMastering PostgreSQL Administration
Mastering PostgreSQL AdministrationEDB
 
pg_proctab: Accessing System Stats in PostgreSQL
pg_proctab: Accessing System Stats in PostgreSQLpg_proctab: Accessing System Stats in PostgreSQL
pg_proctab: Accessing System Stats in PostgreSQLMark Wong
 
了解Oracle rac brain split resolution
了解Oracle rac brain split resolution了解Oracle rac brain split resolution
了解Oracle rac brain split resolutionmaclean liu
 
pg_proctab: Accessing System Stats in PostgreSQL
pg_proctab: Accessing System Stats in PostgreSQLpg_proctab: Accessing System Stats in PostgreSQL
pg_proctab: Accessing System Stats in PostgreSQLMark Wong
 
10 Reasons to Start Your Analytics Project with PostgreSQL
10 Reasons to Start Your Analytics Project with PostgreSQL10 Reasons to Start Your Analytics Project with PostgreSQL
10 Reasons to Start Your Analytics Project with PostgreSQLSatoshi Nagayasu
 

What's hot (20)

Advanced backup methods (Postgres@CERN)
Advanced backup methods (Postgres@CERN)Advanced backup methods (Postgres@CERN)
Advanced backup methods (Postgres@CERN)
 
제 8회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 8회 엑셈 수요 세미나 자료 연구컨텐츠팀제 8회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 8회 엑셈 수요 세미나 자료 연구컨텐츠팀
 
Performance schema 설정
Performance schema 설정Performance schema 설정
Performance schema 설정
 
Amazon aurora 1
Amazon aurora 1Amazon aurora 1
Amazon aurora 1
 
Db2
Db2Db2
Db2
 
Automating Disaster Recovery PostgreSQL
Automating Disaster Recovery PostgreSQLAutomating Disaster Recovery PostgreSQL
Automating Disaster Recovery PostgreSQL
 
Введение в современную PostgreSQL. Часть 2
Введение в современную PostgreSQL. Часть 2Введение в современную PostgreSQL. Часть 2
Введение в современную PostgreSQL. Часть 2
 
제 6회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 6회 엑셈 수요 세미나 자료 연구컨텐츠팀제 6회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 6회 엑셈 수요 세미나 자료 연구컨텐츠팀
 
MySQLinsanity
MySQLinsanityMySQLinsanity
MySQLinsanity
 
What's new in PostgreSQL 11 ?
What's new in PostgreSQL 11 ?What's new in PostgreSQL 11 ?
What's new in PostgreSQL 11 ?
 
PGDay.Amsterdam 2018 - Stefan Fercot - Save your data with pgBackRest
PGDay.Amsterdam 2018 - Stefan Fercot - Save your data with pgBackRestPGDay.Amsterdam 2018 - Stefan Fercot - Save your data with pgBackRest
PGDay.Amsterdam 2018 - Stefan Fercot - Save your data with pgBackRest
 
Mvcc in postgreSQL 권건우
Mvcc in postgreSQL 권건우Mvcc in postgreSQL 권건우
Mvcc in postgreSQL 권건우
 
PostgreSQL Administration for System Administrators
PostgreSQL Administration for System AdministratorsPostgreSQL Administration for System Administrators
PostgreSQL Administration for System Administrators
 
Mastering PostgreSQL Administration
Mastering PostgreSQL AdministrationMastering PostgreSQL Administration
Mastering PostgreSQL Administration
 
pg_proctab: Accessing System Stats in PostgreSQL
pg_proctab: Accessing System Stats in PostgreSQLpg_proctab: Accessing System Stats in PostgreSQL
pg_proctab: Accessing System Stats in PostgreSQL
 
了解Oracle rac brain split resolution
了解Oracle rac brain split resolution了解Oracle rac brain split resolution
了解Oracle rac brain split resolution
 
Full Text Search in PostgreSQL
Full Text Search in PostgreSQLFull Text Search in PostgreSQL
Full Text Search in PostgreSQL
 
PostgreSQL Replication Tutorial
PostgreSQL Replication TutorialPostgreSQL Replication Tutorial
PostgreSQL Replication Tutorial
 
pg_proctab: Accessing System Stats in PostgreSQL
pg_proctab: Accessing System Stats in PostgreSQLpg_proctab: Accessing System Stats in PostgreSQL
pg_proctab: Accessing System Stats in PostgreSQL
 
10 Reasons to Start Your Analytics Project with PostgreSQL
10 Reasons to Start Your Analytics Project with PostgreSQL10 Reasons to Start Your Analytics Project with PostgreSQL
10 Reasons to Start Your Analytics Project with PostgreSQL
 

Similar to PostgreSQL 9.6 새 기능 소개

[Pgday.Seoul 2019] Citus를 이용한 분산 데이터베이스
[Pgday.Seoul 2019] Citus를 이용한 분산 데이터베이스[Pgday.Seoul 2019] Citus를 이용한 분산 데이터베이스
[Pgday.Seoul 2019] Citus를 이용한 분산 데이터베이스PgDay.Seoul
 
PostgreSQL 8.4 TriLUG 2009-11-12
PostgreSQL 8.4 TriLUG 2009-11-12PostgreSQL 8.4 TriLUG 2009-11-12
PostgreSQL 8.4 TriLUG 2009-11-12Andrew Dunstan
 
クラウドDWHとしても進化を続けるPivotal Greenplumご紹介
クラウドDWHとしても進化を続けるPivotal Greenplumご紹介クラウドDWHとしても進化を続けるPivotal Greenplumご紹介
クラウドDWHとしても進化を続けるPivotal Greenplumご紹介Masayuki Matsushita
 
Стажировка 2016-07-27 02 Денис Нелюбин. PostgreSQL и jsonb
Стажировка 2016-07-27 02 Денис Нелюбин. PostgreSQL и jsonbСтажировка 2016-07-27 02 Денис Нелюбин. PostgreSQL и jsonb
Стажировка 2016-07-27 02 Денис Нелюбин. PostgreSQL и jsonbSmartTools
 
Build a Complex, Realtime Data Management App with Postgres 14!
Build a Complex, Realtime Data Management App with Postgres 14!Build a Complex, Realtime Data Management App with Postgres 14!
Build a Complex, Realtime Data Management App with Postgres 14!Jonathan Katz
 
A brief introduction to PostgreSQL
A brief introduction to PostgreSQLA brief introduction to PostgreSQL
A brief introduction to PostgreSQLVu Hung Nguyen
 
pg_proctab: Accessing System Stats in PostgreSQL
pg_proctab: Accessing System Stats in PostgreSQLpg_proctab: Accessing System Stats in PostgreSQL
pg_proctab: Accessing System Stats in PostgreSQLCommand Prompt., Inc
 
Testing multi outputformat based mapreduce
Testing multi outputformat based mapreduceTesting multi outputformat based mapreduce
Testing multi outputformat based mapreduceAshok Agarwal
 
Postgres Vienna DB Meetup 2014
Postgres Vienna DB Meetup 2014Postgres Vienna DB Meetup 2014
Postgres Vienna DB Meetup 2014Michael Renner
 
Openstack taskflow 簡介
Openstack taskflow 簡介Openstack taskflow 簡介
Openstack taskflow 簡介kao kuo-tung
 
PostgreSQL Extensions: A deeper look
PostgreSQL Extensions:  A deeper lookPostgreSQL Extensions:  A deeper look
PostgreSQL Extensions: A deeper lookJignesh Shah
 
CQL performance with Apache Cassandra 3.0 (Aaron Morton, The Last Pickle) | C...
CQL performance with Apache Cassandra 3.0 (Aaron Morton, The Last Pickle) | C...CQL performance with Apache Cassandra 3.0 (Aaron Morton, The Last Pickle) | C...
CQL performance with Apache Cassandra 3.0 (Aaron Morton, The Last Pickle) | C...DataStax
 
Postgresql quick guide
Postgresql quick guidePostgresql quick guide
Postgresql quick guideAshoka Vanjare
 
Tests unitaires pour PostgreSQL avec pgTap
Tests unitaires pour PostgreSQL avec pgTapTests unitaires pour PostgreSQL avec pgTap
Tests unitaires pour PostgreSQL avec pgTapRodolphe Quiédeville
 
John Melesky - Federating Queries Using Postgres FDW @ Postgres Open
John Melesky - Federating Queries Using Postgres FDW @ Postgres OpenJohn Melesky - Federating Queries Using Postgres FDW @ Postgres Open
John Melesky - Federating Queries Using Postgres FDW @ Postgres OpenPostgresOpen
 

Similar to PostgreSQL 9.6 새 기능 소개 (20)

[Pgday.Seoul 2019] Citus를 이용한 분산 데이터베이스
[Pgday.Seoul 2019] Citus를 이용한 분산 데이터베이스[Pgday.Seoul 2019] Citus를 이용한 분산 데이터베이스
[Pgday.Seoul 2019] Citus를 이용한 분산 데이터베이스
 
PostgreSQL 8.4 TriLUG 2009-11-12
PostgreSQL 8.4 TriLUG 2009-11-12PostgreSQL 8.4 TriLUG 2009-11-12
PostgreSQL 8.4 TriLUG 2009-11-12
 
クラウドDWHとしても進化を続けるPivotal Greenplumご紹介
クラウドDWHとしても進化を続けるPivotal Greenplumご紹介クラウドDWHとしても進化を続けるPivotal Greenplumご紹介
クラウドDWHとしても進化を続けるPivotal Greenplumご紹介
 
Стажировка 2016-07-27 02 Денис Нелюбин. PostgreSQL и jsonb
Стажировка 2016-07-27 02 Денис Нелюбин. PostgreSQL и jsonbСтажировка 2016-07-27 02 Денис Нелюбин. PostgreSQL и jsonb
Стажировка 2016-07-27 02 Денис Нелюбин. PostgreSQL и jsonb
 
Build a Complex, Realtime Data Management App with Postgres 14!
Build a Complex, Realtime Data Management App with Postgres 14!Build a Complex, Realtime Data Management App with Postgres 14!
Build a Complex, Realtime Data Management App with Postgres 14!
 
Pdxpugday2010 pg90
Pdxpugday2010 pg90Pdxpugday2010 pg90
Pdxpugday2010 pg90
 
A brief introduction to PostgreSQL
A brief introduction to PostgreSQLA brief introduction to PostgreSQL
A brief introduction to PostgreSQL
 
pg_proctab: Accessing System Stats in PostgreSQL
pg_proctab: Accessing System Stats in PostgreSQLpg_proctab: Accessing System Stats in PostgreSQL
pg_proctab: Accessing System Stats in PostgreSQL
 
Groovy
GroovyGroovy
Groovy
 
Testing multi outputformat based mapreduce
Testing multi outputformat based mapreduceTesting multi outputformat based mapreduce
Testing multi outputformat based mapreduce
 
Postgres Vienna DB Meetup 2014
Postgres Vienna DB Meetup 2014Postgres Vienna DB Meetup 2014
Postgres Vienna DB Meetup 2014
 
9.1 Grand Tour
9.1 Grand Tour9.1 Grand Tour
9.1 Grand Tour
 
Openstack taskflow 簡介
Openstack taskflow 簡介Openstack taskflow 簡介
Openstack taskflow 簡介
 
PostgreSQL Extensions: A deeper look
PostgreSQL Extensions:  A deeper lookPostgreSQL Extensions:  A deeper look
PostgreSQL Extensions: A deeper look
 
Techday2010 Postgresql9
Techday2010 Postgresql9Techday2010 Postgresql9
Techday2010 Postgresql9
 
CQL performance with Apache Cassandra 3.0 (Aaron Morton, The Last Pickle) | C...
CQL performance with Apache Cassandra 3.0 (Aaron Morton, The Last Pickle) | C...CQL performance with Apache Cassandra 3.0 (Aaron Morton, The Last Pickle) | C...
CQL performance with Apache Cassandra 3.0 (Aaron Morton, The Last Pickle) | C...
 
Postgresql quick guide
Postgresql quick guidePostgresql quick guide
Postgresql quick guide
 
Spark_Documentation_Template1
Spark_Documentation_Template1Spark_Documentation_Template1
Spark_Documentation_Template1
 
Tests unitaires pour PostgreSQL avec pgTap
Tests unitaires pour PostgreSQL avec pgTapTests unitaires pour PostgreSQL avec pgTap
Tests unitaires pour PostgreSQL avec pgTap
 
John Melesky - Federating Queries Using Postgres FDW @ Postgres Open
John Melesky - Federating Queries Using Postgres FDW @ Postgres OpenJohn Melesky - Federating Queries Using Postgres FDW @ Postgres Open
John Melesky - Federating Queries Using Postgres FDW @ Postgres Open
 

More from PgDay.Seoul

[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정
[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정
[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정PgDay.Seoul
 
[pgday.Seoul 2022] POSTGRES 테스트코드로 기여하기 - 이동욱
[pgday.Seoul 2022] POSTGRES 테스트코드로 기여하기 - 이동욱[pgday.Seoul 2022] POSTGRES 테스트코드로 기여하기 - 이동욱
[pgday.Seoul 2022] POSTGRES 테스트코드로 기여하기 - 이동욱PgDay.Seoul
 
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재PgDay.Seoul
 
[pgday.Seoul 2022] PostgreSQL with Google Cloud
[pgday.Seoul 2022] PostgreSQL with Google Cloud[pgday.Seoul 2022] PostgreSQL with Google Cloud
[pgday.Seoul 2022] PostgreSQL with Google CloudPgDay.Seoul
 
[Pgday.Seoul 2021] 2. Porting Oracle UDF and Optimization
[Pgday.Seoul 2021] 2. Porting Oracle UDF and Optimization[Pgday.Seoul 2021] 2. Porting Oracle UDF and Optimization
[Pgday.Seoul 2021] 2. Porting Oracle UDF and OptimizationPgDay.Seoul
 
[Pgday.Seoul 2021] 1. 예제로 살펴보는 포스트그레스큐엘의 독특한 SQL
[Pgday.Seoul 2021] 1. 예제로 살펴보는 포스트그레스큐엘의 독특한 SQL[Pgday.Seoul 2021] 1. 예제로 살펴보는 포스트그레스큐엘의 독특한 SQL
[Pgday.Seoul 2021] 1. 예제로 살펴보는 포스트그레스큐엘의 독특한 SQLPgDay.Seoul
 
[Pgday.Seoul 2020] 포스트그레스큐엘 자국어화 이야기
[Pgday.Seoul 2020] 포스트그레스큐엘 자국어화 이야기[Pgday.Seoul 2020] 포스트그레스큐엘 자국어화 이야기
[Pgday.Seoul 2020] 포스트그레스큐엘 자국어화 이야기PgDay.Seoul
 
[Pgday.Seoul 2020] SQL Tuning
[Pgday.Seoul 2020] SQL Tuning[Pgday.Seoul 2020] SQL Tuning
[Pgday.Seoul 2020] SQL TuningPgDay.Seoul
 
[Pgday.Seoul 2019] AppOS 고성능 I/O 확장 모듈로 성능 10배 향상시키기
[Pgday.Seoul 2019] AppOS 고성능 I/O 확장 모듈로 성능 10배 향상시키기[Pgday.Seoul 2019] AppOS 고성능 I/O 확장 모듈로 성능 10배 향상시키기
[Pgday.Seoul 2019] AppOS 고성능 I/O 확장 모듈로 성능 10배 향상시키기PgDay.Seoul
 
[Pgday.Seoul 2019] Advanced FDW
[Pgday.Seoul 2019] Advanced FDW[Pgday.Seoul 2019] Advanced FDW
[Pgday.Seoul 2019] Advanced FDWPgDay.Seoul
 
[Pgday.Seoul 2018] PostgreSQL 11 새 기능 소개
[Pgday.Seoul 2018]  PostgreSQL 11 새 기능 소개[Pgday.Seoul 2018]  PostgreSQL 11 새 기능 소개
[Pgday.Seoul 2018] PostgreSQL 11 새 기능 소개PgDay.Seoul
 
[Pgday.Seoul 2018] PostgreSQL 성능을 위해 개발된 라이브러리 OS 소개 apposha
[Pgday.Seoul 2018]  PostgreSQL 성능을 위해 개발된 라이브러리 OS 소개 apposha[Pgday.Seoul 2018]  PostgreSQL 성능을 위해 개발된 라이브러리 OS 소개 apposha
[Pgday.Seoul 2018] PostgreSQL 성능을 위해 개발된 라이브러리 OS 소개 apposhaPgDay.Seoul
 
[Pgday.Seoul 2018] PostgreSQL Authentication with FreeIPA
[Pgday.Seoul 2018]  PostgreSQL Authentication with FreeIPA[Pgday.Seoul 2018]  PostgreSQL Authentication with FreeIPA
[Pgday.Seoul 2018] PostgreSQL Authentication with FreeIPAPgDay.Seoul
 
[Pgday.Seoul 2018] 이기종 DB에서 PostgreSQL로의 Migration을 위한 DB2PG
[Pgday.Seoul 2018]  이기종 DB에서 PostgreSQL로의 Migration을 위한 DB2PG[Pgday.Seoul 2018]  이기종 DB에서 PostgreSQL로의 Migration을 위한 DB2PG
[Pgday.Seoul 2018] 이기종 DB에서 PostgreSQL로의 Migration을 위한 DB2PGPgDay.Seoul
 
[Pgday.Seoul 2018] AWS Cloud 환경에서 PostgreSQL 구축하기
[Pgday.Seoul 2018]  AWS Cloud 환경에서 PostgreSQL 구축하기[Pgday.Seoul 2018]  AWS Cloud 환경에서 PostgreSQL 구축하기
[Pgday.Seoul 2018] AWS Cloud 환경에서 PostgreSQL 구축하기PgDay.Seoul
 
[Pgday.Seoul 2018] Greenplum의 노드 분산 설계
[Pgday.Seoul 2018]  Greenplum의 노드 분산 설계[Pgday.Seoul 2018]  Greenplum의 노드 분산 설계
[Pgday.Seoul 2018] Greenplum의 노드 분산 설계PgDay.Seoul
 
[Pgday.Seoul 2018] replacing oracle with edb postgres
[Pgday.Seoul 2018] replacing oracle with edb postgres[Pgday.Seoul 2018] replacing oracle with edb postgres
[Pgday.Seoul 2018] replacing oracle with edb postgresPgDay.Seoul
 
[Pgday.Seoul 2017] 6. GIN vs GiST 인덱스 이야기 - 박진우
[Pgday.Seoul 2017] 6. GIN vs GiST 인덱스 이야기 - 박진우[Pgday.Seoul 2017] 6. GIN vs GiST 인덱스 이야기 - 박진우
[Pgday.Seoul 2017] 6. GIN vs GiST 인덱스 이야기 - 박진우PgDay.Seoul
 
[Pgday.Seoul 2017] 5. 테드폴허브(올챙이) PostgreSQL 확장하기 - 조현종
[Pgday.Seoul 2017] 5. 테드폴허브(올챙이) PostgreSQL 확장하기 - 조현종[Pgday.Seoul 2017] 5. 테드폴허브(올챙이) PostgreSQL 확장하기 - 조현종
[Pgday.Seoul 2017] 5. 테드폴허브(올챙이) PostgreSQL 확장하기 - 조현종PgDay.Seoul
 
[Pgday.Seoul 2017] 1. PostGIS의 사례로 본 PostgreSQL 확장 - 장병진
[Pgday.Seoul 2017] 1. PostGIS의 사례로 본 PostgreSQL 확장 - 장병진[Pgday.Seoul 2017] 1. PostGIS의 사례로 본 PostgreSQL 확장 - 장병진
[Pgday.Seoul 2017] 1. PostGIS의 사례로 본 PostgreSQL 확장 - 장병진PgDay.Seoul
 

More from PgDay.Seoul (20)

[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정
[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정
[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정
 
[pgday.Seoul 2022] POSTGRES 테스트코드로 기여하기 - 이동욱
[pgday.Seoul 2022] POSTGRES 테스트코드로 기여하기 - 이동욱[pgday.Seoul 2022] POSTGRES 테스트코드로 기여하기 - 이동욱
[pgday.Seoul 2022] POSTGRES 테스트코드로 기여하기 - 이동욱
 
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
 
[pgday.Seoul 2022] PostgreSQL with Google Cloud
[pgday.Seoul 2022] PostgreSQL with Google Cloud[pgday.Seoul 2022] PostgreSQL with Google Cloud
[pgday.Seoul 2022] PostgreSQL with Google Cloud
 
[Pgday.Seoul 2021] 2. Porting Oracle UDF and Optimization
[Pgday.Seoul 2021] 2. Porting Oracle UDF and Optimization[Pgday.Seoul 2021] 2. Porting Oracle UDF and Optimization
[Pgday.Seoul 2021] 2. Porting Oracle UDF and Optimization
 
[Pgday.Seoul 2021] 1. 예제로 살펴보는 포스트그레스큐엘의 독특한 SQL
[Pgday.Seoul 2021] 1. 예제로 살펴보는 포스트그레스큐엘의 독특한 SQL[Pgday.Seoul 2021] 1. 예제로 살펴보는 포스트그레스큐엘의 독특한 SQL
[Pgday.Seoul 2021] 1. 예제로 살펴보는 포스트그레스큐엘의 독특한 SQL
 
[Pgday.Seoul 2020] 포스트그레스큐엘 자국어화 이야기
[Pgday.Seoul 2020] 포스트그레스큐엘 자국어화 이야기[Pgday.Seoul 2020] 포스트그레스큐엘 자국어화 이야기
[Pgday.Seoul 2020] 포스트그레스큐엘 자국어화 이야기
 
[Pgday.Seoul 2020] SQL Tuning
[Pgday.Seoul 2020] SQL Tuning[Pgday.Seoul 2020] SQL Tuning
[Pgday.Seoul 2020] SQL Tuning
 
[Pgday.Seoul 2019] AppOS 고성능 I/O 확장 모듈로 성능 10배 향상시키기
[Pgday.Seoul 2019] AppOS 고성능 I/O 확장 모듈로 성능 10배 향상시키기[Pgday.Seoul 2019] AppOS 고성능 I/O 확장 모듈로 성능 10배 향상시키기
[Pgday.Seoul 2019] AppOS 고성능 I/O 확장 모듈로 성능 10배 향상시키기
 
[Pgday.Seoul 2019] Advanced FDW
[Pgday.Seoul 2019] Advanced FDW[Pgday.Seoul 2019] Advanced FDW
[Pgday.Seoul 2019] Advanced FDW
 
[Pgday.Seoul 2018] PostgreSQL 11 새 기능 소개
[Pgday.Seoul 2018]  PostgreSQL 11 새 기능 소개[Pgday.Seoul 2018]  PostgreSQL 11 새 기능 소개
[Pgday.Seoul 2018] PostgreSQL 11 새 기능 소개
 
[Pgday.Seoul 2018] PostgreSQL 성능을 위해 개발된 라이브러리 OS 소개 apposha
[Pgday.Seoul 2018]  PostgreSQL 성능을 위해 개발된 라이브러리 OS 소개 apposha[Pgday.Seoul 2018]  PostgreSQL 성능을 위해 개발된 라이브러리 OS 소개 apposha
[Pgday.Seoul 2018] PostgreSQL 성능을 위해 개발된 라이브러리 OS 소개 apposha
 
[Pgday.Seoul 2018] PostgreSQL Authentication with FreeIPA
[Pgday.Seoul 2018]  PostgreSQL Authentication with FreeIPA[Pgday.Seoul 2018]  PostgreSQL Authentication with FreeIPA
[Pgday.Seoul 2018] PostgreSQL Authentication with FreeIPA
 
[Pgday.Seoul 2018] 이기종 DB에서 PostgreSQL로의 Migration을 위한 DB2PG
[Pgday.Seoul 2018]  이기종 DB에서 PostgreSQL로의 Migration을 위한 DB2PG[Pgday.Seoul 2018]  이기종 DB에서 PostgreSQL로의 Migration을 위한 DB2PG
[Pgday.Seoul 2018] 이기종 DB에서 PostgreSQL로의 Migration을 위한 DB2PG
 
[Pgday.Seoul 2018] AWS Cloud 환경에서 PostgreSQL 구축하기
[Pgday.Seoul 2018]  AWS Cloud 환경에서 PostgreSQL 구축하기[Pgday.Seoul 2018]  AWS Cloud 환경에서 PostgreSQL 구축하기
[Pgday.Seoul 2018] AWS Cloud 환경에서 PostgreSQL 구축하기
 
[Pgday.Seoul 2018] Greenplum의 노드 분산 설계
[Pgday.Seoul 2018]  Greenplum의 노드 분산 설계[Pgday.Seoul 2018]  Greenplum의 노드 분산 설계
[Pgday.Seoul 2018] Greenplum의 노드 분산 설계
 
[Pgday.Seoul 2018] replacing oracle with edb postgres
[Pgday.Seoul 2018] replacing oracle with edb postgres[Pgday.Seoul 2018] replacing oracle with edb postgres
[Pgday.Seoul 2018] replacing oracle with edb postgres
 
[Pgday.Seoul 2017] 6. GIN vs GiST 인덱스 이야기 - 박진우
[Pgday.Seoul 2017] 6. GIN vs GiST 인덱스 이야기 - 박진우[Pgday.Seoul 2017] 6. GIN vs GiST 인덱스 이야기 - 박진우
[Pgday.Seoul 2017] 6. GIN vs GiST 인덱스 이야기 - 박진우
 
[Pgday.Seoul 2017] 5. 테드폴허브(올챙이) PostgreSQL 확장하기 - 조현종
[Pgday.Seoul 2017] 5. 테드폴허브(올챙이) PostgreSQL 확장하기 - 조현종[Pgday.Seoul 2017] 5. 테드폴허브(올챙이) PostgreSQL 확장하기 - 조현종
[Pgday.Seoul 2017] 5. 테드폴허브(올챙이) PostgreSQL 확장하기 - 조현종
 
[Pgday.Seoul 2017] 1. PostGIS의 사례로 본 PostgreSQL 확장 - 장병진
[Pgday.Seoul 2017] 1. PostGIS의 사례로 본 PostgreSQL 확장 - 장병진[Pgday.Seoul 2017] 1. PostGIS의 사례로 본 PostgreSQL 확장 - 장병진
[Pgday.Seoul 2017] 1. PostGIS의 사례로 본 PostgreSQL 확장 - 장병진
 

Recently uploaded

Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 

Recently uploaded (20)

Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 

PostgreSQL 9.6 새 기능 소개

  • 1. PostgreSQL 9.6 새 기능 이지호(search5@gmail.com)
  • 2. 강연자 소개 u 이름: 이지호, 호: 서치(슬기 서, 기다릴 치), 영문 중간 이름: persy u 소속: 한국방송통신대학교 대학원 정보과학과, (주)위비즈넷, 사단법인 E.S.C u 98년 알짜레드햇 6.0에서 PostgreSQL 6.4를 보고 아!!! 이거다!!
  • 3. PostgreSQL은 어떤 데이터베이스에요? u PostgreSQL은 1986년 캘리포니아 버클리에서 시작해 1988년 만들어진 BSD 기반의 오픈소 스 데이터베이스 u 이후 여러번의 지속적인 개선을 통해 1996년 PostgreSQL 발표. u PostgreSQL이 제공하는 특징 u 연산자, 복합 자료형, 집계 함수, 자료형 변환자, 확장 함수 등 제공 u 테이블 생성 및 조회시 상속 기능 사용 가능 u 함수(프로시저) 사용 가능(pl/pgsql이 공식이나 python, java, php, perl, tcl도 가능) u 이름은 어떻게 부르나요? -> 여러분이 부르고 싶은대로 부르세요.
  • 4. PostgreSQL 커뮤니티 u 한국 PostgreSQL 사용자 모임은 u http://www.facebook.com/groups/postgres.kr u 2016년 10월 10일 기준 1,030명에 이르는 회원수를 자랑합니다. u 모임은? u 매달 넷째주 일요일에 애 안봐도 되고, 애인 안 만나도 되고, 다른 할 일도 없는 분들이 모여 정기 기술 세미나를 오후 2시 ~ 오후 5시까지 하고, u 주말의 필수품목인 ‘알콜’ Drinking을 하지 않는 정말 건전한 모임을 합니다.
  • 5. Parallel execution of sequential scans, joins and aggregates
  • 6. Parallel execution of sequential scans, joins and aggregates u max_parallel_workers_per_gather (integer) - 병렬 쿼리를 실행할 작업자 수. 기본값 0 u max_worker_processes (integer) - 백그라운드 프로세스의 최대 수. 기본값: 시스템 코어 수 u parallel_setup_cost (floating point) - Sets the planner's estimate of the cost of launching parallel worker processes. The default is 1000. u parallel_tuple_cost (floating point) - Sets the planner's estimate of the cost of transferring one tuple from a parallel worker process to another process. The default is 0.1. u min_parallel_relation_size (integer) - Sets the minimum size of relations to be considered for parallel scan. The default is 8 megabytes (8MB).
  • 7. Parallel execution of sequential scans, joins and aggregates =# EXPLAIN SELECT count(*) FROM partest; QUERY PLAN ----------------------------------------------------------------------- Aggregate (cost=37059.38..37059.39 rows=1 width=8) -> Seq Scan on partest (cost=0.00..31417.50 rows=2256750 width=0)
  • 8. Parallel execution of sequential scans, joins and aggregates template1=# set max_parallel_workers_per_gather = 1; template1=# EXPLAIN SELECT count(*) FROM partest; QUERY PLAN ----------------------------------------------------------------------- Finalize Aggregate (cost=24556.00..24556.01 rows=1 width=8) -> Gather (cost=24555.88..24555.99 rows=1 width=8) Workers Planned: 1 -> Partial Aggregate (cost=23555.88..23555.89 rows=1 width=8) -> Parallel Seq Scan on partest (cost=0.00..20614.71 rows=1176471 width=0)
  • 9. Parallel execution of sequential scans, joins and aggregates template1=# set max_parallel_workers_per_gather = 3; template1=# EXPLAIN SELECT count(*) FROM partest; QUERY PLAN ----------------------------------------------------------------------- Finalize Aggregate (cost=20266.88..20266.89 rows=1 width=8) -> Gather (cost=20266.67..20266.88 rows=1 width=8) Workers Planned: 2 -> Partial Aggregate (cost=19266.67..19266.68 rows=1 width=8) -> Parallel Seq Scan on partest (cost=0.00..17183.33 rows=833333 width=0)
  • 10. Parallel execution of sequential scans, joins and aggregates template1=# set max_parallel_workers_per_gather = 5; template1=# explain analyze select min(col1) from partest; QUERY PLAN ----------------------------------------------------------------------- Finalize Aggregate (cost=127493.90..127493.91 rows=1 width=8) … -> Gather (cost=127493.37..127493.88 rows=5 width=8) … Workers Planned: 5 Workers Launched: 5 -> Partial Aggregate (cost=126493.37..126493.38 rows=1 width=8) … -> Parallel Seq Scan on partest (cost=0.00..121493.30 rows=…) … Planning time: 0.110 ms Execution time: 1422.139 ms
  • 11. Parallel execution of sequential scans, joins and aggregates template1=# set max_parallel_workers_per_gather = 6; template1=# explain analyze select min(col1) from partest; QUERY PLAN ----------------------------------------------------------------------- Finalize Aggregate (cost=127493.90..127493.91 rows=1 width=8) … -> Gather (cost=127493.37..127493.88 rows=5 width=8) … Workers Planned: 6 Workers Launched: 6 -> Partial Aggregate (cost=126493.37..126493.38 rows=1 width=8) … -> Parallel Seq Scan on partest (cost=0.00..121493.30 rows=…) … Planning time: 0.110 ms Execution time: 1422.139 ms
  • 12. Autovacuum no longer performs repetitive scanning of old data u PostgreSQL 9.6 부터 성능 향상을 위해 영구보관용 데이터에 대해서 auto vacuum 중지 u PostgreSQL 9.6 이전까지 모든 힙 페이지 스캔 u 9.6은 마지막 동결 이후 수정된 페이지만 스캔 u 이 결정 덕분에 쓰기가 드문 테이블 성능 향상 혜택
  • 13. Synchronous replication now allows multiple standby servers for increased reliability How replication works
  • 14. Synchronous replication now allows multiple standby servers for increased reliability synchronous_commit = off
  • 15. Synchronous replication now allows multiple standby servers for increased reliability synchronous_commit = local
  • 16. Synchronous replication now allows multiple standby servers for increased reliability synchronous_commit = on (default)
  • 17. Synchronous replication now allows multiple standby servers for increased reliability synchronous_commit = remote_write
  • 18. Synchronous replication now allows multiple standby servers for increased reliability synchronous_commit = remote_apply
  • 19. Synchronous replication now allows multiple standby servers for increased reliability u synchronous_standby_names =  ‘standby_name [,  …]’ u synchronous_standby_names =  ‘num (standby_name [,  …])’ u ex)  synchronous_standby_names =  ‘2(*)’ u synchronous_standby_names is  empty u If  this parameter  is  empty as  shown it  changes behaviour of   setting synchronous_commit to on, remote_write or remote_apply to  behave same   as local (ie,  the COMMIT will only wait for  flushing to  local disk).
  • 20. postgres_fdw now supports remote joins, sorts, UPDATEs, and DELETEs FDW Foreign   Server Foreign   Server Foreign   Server SQL 쿼리 Join, Sort, Updates, Deletes
  • 21. Allow Limiting of Snapshot Age old_snapshot_threshold 값은 서버를 시작할때만 설정 가능(DEFAULT: -1, 0, 1min - 60d) Session  1 Session  2 show  old_snapshot_threshold;; create  table  snaptest(x  int);; insert  into  snaptest values  (1);; begin  work;; set  transaction  isolation  level  serializable;; select  *  from  snaptest;; update  snaptest set  x  =  2;; select  pg_sleep(100);; vacuum  snaptest;; select  *  from  snaptest;; ERROR:snapshot  too  old;;
  • 22. Allow Sessions with Long-Idle Transactions To Be Terminated u 오래 기다리고 있는 세션에 대해서 연결을 기다리지 않고 세션 자동 종료. default: 0 =# SET idle_in_transaction_session_timeout = ’2s’; =# BEGIN WORK; -- sit idle for 3 seconds =# SELECT 1; FATAL: terminating connection due to idle-in-transaction timeout server closed the connection unexpectedly
  • 23. CREATE  EXTENSION  CASCADE  Support u PostgreSQL 9.6 이전에 EXTENSION 설치 시 종속성 부터 설치 =# create extension cube; =# create extension earthdistance; u PostgreSQL 9.6 부터는 EXTENSION의 control 파일에 종속성 정의 =# create extension earthdistance cascade; NOTICE: installing required extension "cube" CREATE EXTENSION
  • 24. CREATE  EXTENSION  CASCADE  Support # blackhole extension comment = 'Minimal Extension Template’ default_version = '1.0’ module_pathname = '$libdir/blackhole’ relocatable = true requires = ’cube, jsonlog’ =# create extension blackhole cascade
  • 25. SUPPORT  CROSSTABVIEW  IN  PSQL u PostgreSQL 9.6 이전엔 crosstab 쿼리는 tablefunc 모듈 사용. =# create table test2 as select ('{a,b,c,d,e,f}'::text[])[1 + floor(random() * 6)] as type_1, ('{m,n,o,p,q,r}'::text[])[1 + floor(random() * 6)] as type_2, random() * 1000 as some_float from generate_series(1,20000);
  • 26. SUPPORT  CROSSTABVIEW  IN  PSQL u =# select type_1, type_2, count(*) from test2 group by type_1, type_2 crosstabview type_1 | q | n | o | r | m | p --------+-----+-----+-----+-----+-----+----- f | 519 | 569 | 515 | 593 | 519 | 560 e | 605 | 539 | 547 | 555 | 587 | 577 c | 574 | 590 | 534 | 549 | 541 | 556 d | 569 | 487 | 569 | 521 | 523 | 553 b | 543 | 594 | 547 | 573 | 548 | 590 a | 586 | 576 | 568 | 555 | 559 | 510 (6 rows) type_1  |  type_2  |  some_float -­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ 1  |          b                |            m          |409.59995565936 2  |   e                |            n            |453.834847547114 3  |   f                  |            o            |113.634209148586 4  |   b                |            n            |332.8404747881 5  |   d                |            n            |832.656755112112 6  |   b                |            o            |525.860982947052 7  |   b                |              r            |873.10529500246
  • 27. Generic  WAL  facility u PostgreSQL 9.6은 외부 개발자가 CUSTOM EXTENSION 개발을 쉽게 할 수 있도록 일반화된 WAL 인터페이스 제공 u GenericXLogStart u GenericXLogRegisterBuffer u GenericXLogFinish u GenericXLogAbort
  • 28. Allow COPY to copy the output of an INSERT/UPDATE/DELETE ... RETURNING query =# COPY (INSERT INTO tab_data VALUES (1, 'aa'), (2, 'bb') RETURNING a, b) TO stdout; 1 aa 2 bb =# COPY (UPDATE tab_data SET b = 'cc' WHERE a = 1 RETURNING *) TO stdout; 1 cc =# COPY (DELETE FROM tab_data WHERE a = 2 RETURNING *) TO stdout; 2 bb
  • 29. Prompt variable to show PId of backend u psql 프롬프트에 Postmaster PID 표시 u 주의)  pg_bouncer, pg_pool 등 사용시 PID 예측 불가 =# set PROMPT1 '%n@%/ : %p $ ' depesz@depesz : 26853 $ u prompt에 사용 가능한 모든 옵션: u https://www.postgresql.org/docs/current/static/app-­psql.html#APP-­PSQL-­PROMPTING
  • 30. Monitoring Features u Add System Catalog u Vacuum progress reporting u pg_config System View u System view to monitor WAL receiver status u Modified System Catalog u pg_stat_activity wait-type reporting u Add System Function u pg_control Values Exposed u Notification queue monitoring
  • 31. Monitoring Features - pg_stat_activity wait-type reporting u PostgreSQL 9.6에서 pg_stat_activity catalog 컬럼 추가 u wait_event_type - The type of event for which the backend is waiting u wait_event - Wait event name if backend is currently waiting u The value of wait_event_type column • LWLockNamed - Waiting by a particular lightweight lock • LWLockTranche - Waiting by the lightweight lock for the group • Lock - Waiting by weight lock (LOCK TABLE statement etc) • BufferPin - PIN waiting for the buffer u wait_event • https://www.postgresql.org/docs/9.6/static/monitoring-stats.html
  • 32. Monitoring Features - Vacuum progress reporting u This catalog provides information about the state of the progress of vacuum processing. This catalog is readable by the general superuser. Column  Name Data  Type Description   pid integer   Process  ID  of  backend datid oid OID  of  database datname name Connected  database  name relid oid OID  of  the  table  being  vacuumed phase text Current  processing  phase  of  vacuum heap_blks_total bigint Total  number  of  heap  blocks  in  the  table heap_blks_scanned bigint Number  of  heap  blocks  scanned heap_blks_vacuumed bigint Number  of  heap  blocks  vacuumed index_vacuum_count bigint Number  of  completed  index  vacuum  cycles max_dead_tuples bigint Number  of  dead  tuples  that  we  can  store  before  needing  to  perform  an  index   vacuum  cycle num_dead_tuples bigint Number  of  dead  tuples  collected  since  the  last  index  vacuum  cycle
  • 33. Monitoring Features - Vacuum progress reporting postgres=# SELECT * FROM pg_stat_progress_vacuum ; -[ RECORD 1 ]-----------+-------------- pid | 3184 datid | 16385 datname | demodb relid | 16398 phase | scanning heap heap_blks_total | 10052 heap_blks_scanned | 2670 heap_blks_vacuumed | 2669 index_vacuum_count | 0 max_dead_tuples | 291 num_dead_tuples | 185
  • 34. Monitoring Features - pg_config System View u pg_config를 시스템 유저 권한으로 SQL로 조회 u Column: name, setting postgres=#  SELECT  *  FROM  pg_config  ;   name   |  setting -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ BINDIR   |  /usr/local/pgsql/bin DOCDIR   |  /usr/local/pgsql/share/doc HTMLDIR   |  /usr/local/pgsql/share/doc INCLUDEDIR   |  /usr/local/pgsql/include PKGINCLUDEDIR  |  /usr/local/pgsql/include
  • 35. Monitoring Features - pg_control Values Exposed Name Return  Type Description pg_control_checkpoint() record Returns  information  about  current  checkpoint   state. pg_control_system() record Returns  information  about  current  control  file  s tate. pg_control_init() record Returns  information  about  cluster  initialization   state. pg_control_recovery() record Returns  information  about  recovery  state. They also show information about write-ahead logging and checkpoint processing. This information is cluster-wide, and not specific to any one database
  • 36. Monitoring Features - System view to monitor WAL receiver status This catalog provides information about the state of a slave instance's WAL receiver process in replication environment. This catalog is readable by the general user. pid integer Process  ID  of  the  WAL  receiver  process status text Activity  status  of  the  WAL  receiver  process receive_start_lsn pg_lsn First  transaction  log  position  used  when  WAL   receiver  is  started receive_start_tli integer First  timeline  number  used  when  WAL  receiver  is   started received_lsn pg_lsn Last  transaction  log  position  already  received  and   flushed  to  disk,  the  initial  value received_tli integer Timeline  number  of  last  transaction  log  position   received  and  flushed  to  disk,  the  initial  value last_msg_send_time timestamp  with  time  zone Send  time  of  last  message  received  from  origin  WAL   sender
  • 37. Monitoring Features - System view to monitor WAL receiver status (…) This catalog provides information about the state of a slave instance's WAL receiver process in replication environment. This catalog is readable by the general user. pid integer Process  ID  of  the  WAL  receiver  process last_msg_receipt_time timestamp  with  time  zone Receipt  time  of  last  message  received  from  origin   WAL  sender latest_end_lsn pg_lsn Last  transaction  log  position  reported  to  origin  WAL   sender latest_end_time timestamp  with  time  zone Time  of  last  transaction  log  position  reported  to   origin  WAL  sender slot_name text Replication  slot  name  used  by  this  WAL  receiver conninfo text Connection  string  used  by  this  WAL  receiver,  with   security-­sensitive  fields  obfuscated.
  • 38. Monitoring Features - Notification queue monitoring u PostgreSQL 큐는 8GB까지의 제한 존재 u DBA 관리자가 큐에 남은 작업이 있는지 확인할 필요 =# select pg_notification_queue_usage(); u 이 함수가 반환하는 실수 양에 따라 남아있는 작업량 판단 가능