[Pgday.Seoul 2017] 7. PostgreSQL DB Tuning 기업사례 - 송춘자

PgDay.Seoul
PgDay.SeoulPgDay.Seoul
PostgreSQL
DB Tuning 기업사례
PGDay.Seoul 2017
송춘자(cjsong@naver.com)
송춘자 cjsong@naver.com
 ChemEssen,Inc 개발부서장
 고려대학교 컴퓨터정보통신대학원 소프트웨어공학과
 ‘16 PostgreSQL DB 시작
 ‘99 web program 시작
 ‘97 Oracle Process Monitoring tool 제작 by PB
 ‘96 OCP-DBA 7.3 취득
 ‘93 UNIX & C System program 시작
About ChemEssen, Inc
 2006 설립, 40개 기술특허, 글로벌 웹서비스
 화학기술과 정보기술의 융합 서비스 제공
 Chemical Quantum Application + Mathematical Modeling + IT
검색 속도 개선 상황 발생
 신규 자료 입력 발생
 Master data 285만건  1억6백만건, 37배 증가
 Master data size 25 GB  1 TB, 40배 증가
 검색속도 저하 발생
 651 msec  10분 17초, 948 배 증가 (ID)
 1.2 초  7분 20초, 367 배 증가 (name)
 773 msec  10분, 776 배 증가 (smiles)
 Chemical data 특수성
 IUPAC Name
• (3R,6R,7R)-2,3,7-trimethyl-6-(propan-2-yl)tetradecane
• N'-[(2E)-3-(3,4-dimethoxyphenyl)prop-2-enoyl]-2-phenylacetohydrazide
 Smiles
• CC(C)CCCC(C)C3CCC4C2CC=C1CC(O)CCC1(C)C2CCC34C
 Formula
• C27H46O
• C11H14O3S2
속도 개선 결과
구분 Column type 285만건
1억6백만건
개선전
1억6백만건
개선후
ID VC(12) 651 msec 10분 17초 32 msec
Name VC(4890) 1.2 sec 6분 16초 7 sec
Smiles Text 773 msec 10분 25초 547 msec
Formula VC(50) 1.2 sec 10분 33초 32 msec
InChIKey VC(50) 930 msec 10분 22초 46 msec
속도개선방법
 개발소스에서 사용중인 SQL query 변경
 업무규칙 변경 가능 부분 협의 적용
 Index 재생성
 Text Search 기능 적용
 DBMS Parameter 조정
Text Search 기능 적용 순서
 검색 전용 tsvector 컬럼 추가
ALTER TABLE chemicalsc.tb_chem_info
ADD COLUMN textsearchable_index_col tsvector;
 Data update
UPDATE chemicalsc.tb_chem_info SET textsearchable_index_col
= to_tsvector('english', coalesce(replace(upper(iupac_name), ' ', ''), ''));
 Gin 인덱스 생성
CREATE INDEX idx_chem_info_textsearchable_index_col
ON chemicalsc.tb_chem_info USING gin (textsearchable_index_col)
TABLESPACE tbs_chemical_idx00;
Sql query - 개선 전
SELECT chem_info_id, iupac_name,
(length('Benzene') - length(iupac_name) + 100) as jaro
FROM chemicalsc.tb_chem_info
WHERE iupac_name_upper_stuck like replace(upper( '%Benzene%' ), ' ', '' )
ORDER BY jaro desc, iupac_name asc
LIMIT 2000;
Sql query - 개선 후
SET work_mem to '100MB';
SELECT chem_info_id, iupac_name,
(length('benzen’) - length(iupac_name)+100) as jaro
FROM chemicalsc.tb_chem_info
WHERE textsearchable_index_col @@ to_tsquery('english', 'benzen')
ORDER BY jaro desc, iupac_name asc
LIMIT 2000;
DB Server Spec
 Version: PostgreSQL 9.5.8 on x86_64-pc-linux-gnu
 CPU : XeonE5-2643 3.3GHz*8
 RAM : 32 GB
 Disk : 24 TB (1+0)
 Max Connection : 100
postgresql.conf
 effective_cache_size
 데이터 캐싱에 사용할 수 있는 메모리 양
 인덱스 사용여부 결정
 shaed_buffers할당메모리+사용가능한OS캐시 메모리
 시스템 전체메모리 *(50% ~ 75%)
 32GB * 50% = 16GB, 32GB * 75% = 24GB
 maintenance_work_mem
 Vacuum, create index 작업시 사용
 1GB당50MB
 32 * 50MB = 1,600 MB
 shared_buffers
 Disk IO최소화 목적
 시스템 전체 메모리 *25%
 32 GB * 0.25 = 8 GB
postgresql.conf
 work_mem
 sort, bitmap작업,hash join, merge join작업
 최대크기=total RAM /max_connections/ 4
 안전크기=total RAM /max_connections/ 16
 세션마다 다르게 설정 가능
 32 GB / 100 / 4 = 0.08 GB = 80 MB
 32 GB / 100 / 16 = 0.02 GB = 20 MB
 wal_buffers
 DB변경사항을 임시 저장하는 버퍼
 16MB
 max_wal_size / min_wal_size
 2GB / 1GB
 stats_temp_directory
 /run/shm
Data update하면서…
 인덱스 생성은 data insert / update 이후 생성
 인덱스 생성된 상태에서
data file 301개 update 처리진행 42일 소요
 Vaccum 설정 check 필수 – 1억건 이상
 data file 301개 auto vaccum 처리 10일 소요
 데이터 insert 시 COPY command 이용
 set command 이후 copy command
 Source data 파일 여러 개 분할하여 COPY 진행
 입력 실패시 재작업 최소화
Q & A
감사합니다
1 of 14

Recommended

[Pgday.Seoul 2021] 1. 예제로 살펴보는 포스트그레스큐엘의 독특한 SQL by
[Pgday.Seoul 2021] 1. 예제로 살펴보는 포스트그레스큐엘의 독특한 SQL[Pgday.Seoul 2021] 1. 예제로 살펴보는 포스트그레스큐엘의 독특한 SQL
[Pgday.Seoul 2021] 1. 예제로 살펴보는 포스트그레스큐엘의 독특한 SQLPgDay.Seoul
422 views20 slides
PostgreSQL 튜닝워크샵 (2017년8월) by
PostgreSQL 튜닝워크샵 (2017년8월)PostgreSQL 튜닝워크샵 (2017년8월)
PostgreSQL 튜닝워크샵 (2017년8월)DBdemy
10.9K views207 slides
[Pgday.Seoul 2021] 2. Porting Oracle UDF and Optimization by
[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
238 views107 slides
Mvcc in postgreSQL 권건우 by
Mvcc in postgreSQL 권건우Mvcc in postgreSQL 권건우
Mvcc in postgreSQL 권건우PgDay.Seoul
3.7K views42 slides
PostgreSQL 공간관리 살펴보기 이근오 by
PostgreSQL 공간관리 살펴보기 이근오PostgreSQL 공간관리 살펴보기 이근오
PostgreSQL 공간관리 살펴보기 이근오PgDay.Seoul
2.1K views45 slides
[Pgday.Seoul 2020] SQL Tuning by
[Pgday.Seoul 2020] SQL Tuning[Pgday.Seoul 2020] SQL Tuning
[Pgday.Seoul 2020] SQL TuningPgDay.Seoul
1.2K views44 slides

More Related Content

What's hot

[Pgday.Seoul 2017] 2. PostgreSQL을 위한 리눅스 커널 최적화 - 김상욱 by
[Pgday.Seoul 2017] 2. PostgreSQL을 위한 리눅스 커널 최적화 - 김상욱[Pgday.Seoul 2017] 2. PostgreSQL을 위한 리눅스 커널 최적화 - 김상욱
[Pgday.Seoul 2017] 2. PostgreSQL을 위한 리눅스 커널 최적화 - 김상욱PgDay.Seoul
931 views62 slides
[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정 by
[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정
[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정PgDay.Seoul
188 views33 slides
PostgreSQL Deep Internal by
PostgreSQL Deep InternalPostgreSQL Deep Internal
PostgreSQL Deep InternalEXEM
2.5K views134 slides
MySQL 상태 메시지 분석 및 활용 by
MySQL 상태 메시지 분석 및 활용MySQL 상태 메시지 분석 및 활용
MySQL 상태 메시지 분석 및 활용I Goo Lee
5.9K views28 slides
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~ by
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~Miki Shimogai
118.7K views88 slides
MySQL_SQL_Tunning_v0.1.3.docx by
MySQL_SQL_Tunning_v0.1.3.docxMySQL_SQL_Tunning_v0.1.3.docx
MySQL_SQL_Tunning_v0.1.3.docxNeoClova
331 views33 slides

What's hot(20)

[Pgday.Seoul 2017] 2. PostgreSQL을 위한 리눅스 커널 최적화 - 김상욱 by PgDay.Seoul
[Pgday.Seoul 2017] 2. PostgreSQL을 위한 리눅스 커널 최적화 - 김상욱[Pgday.Seoul 2017] 2. PostgreSQL을 위한 리눅스 커널 최적화 - 김상욱
[Pgday.Seoul 2017] 2. PostgreSQL을 위한 리눅스 커널 최적화 - 김상욱
PgDay.Seoul931 views
[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정 by PgDay.Seoul
[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정
[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정
PgDay.Seoul188 views
PostgreSQL Deep Internal by EXEM
PostgreSQL Deep InternalPostgreSQL Deep Internal
PostgreSQL Deep Internal
EXEM2.5K views
MySQL 상태 메시지 분석 및 활용 by I Goo Lee
MySQL 상태 메시지 분석 및 활용MySQL 상태 메시지 분석 및 활용
MySQL 상태 메시지 분석 및 활용
I Goo Lee5.9K views
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~ by Miki Shimogai
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
Miki Shimogai118.7K views
MySQL_SQL_Tunning_v0.1.3.docx by NeoClova
MySQL_SQL_Tunning_v0.1.3.docxMySQL_SQL_Tunning_v0.1.3.docx
MySQL_SQL_Tunning_v0.1.3.docx
NeoClova331 views
TPC-DSから学ぶPostgreSQLの弱点と今後の展望 by Kohei KaiGai
TPC-DSから学ぶPostgreSQLの弱点と今後の展望TPC-DSから学ぶPostgreSQLの弱点と今後の展望
TPC-DSから学ぶPostgreSQLの弱点と今後の展望
Kohei KaiGai6.3K views
[Pgday.Seoul 2017] 8. PostgreSQL 10 새기능 소개 - 김상기 by PgDay.Seoul
[Pgday.Seoul 2017] 8. PostgreSQL 10 새기능 소개 - 김상기[Pgday.Seoul 2017] 8. PostgreSQL 10 새기능 소개 - 김상기
[Pgday.Seoul 2017] 8. PostgreSQL 10 새기능 소개 - 김상기
PgDay.Seoul3.1K views
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料) by NTT DATA Technology & Innovation
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料) by NTT DATA Technology & Innovation
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL WAL for DBAs by PGConf APAC
PostgreSQL WAL for DBAs PostgreSQL WAL for DBAs
PostgreSQL WAL for DBAs
PGConf APAC4.6K views
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ... by NTT DATA Technology & Innovation
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
イルカさんチームからゾウさんチームに教えたいMySQLレプリケーション by yoku0825
イルカさんチームからゾウさんチームに教えたいMySQLレプリケーションイルカさんチームからゾウさんチームに教えたいMySQLレプリケーション
イルカさんチームからゾウさんチームに教えたいMySQLレプリケーション
yoku082510.4K views
[2016 데이터 그랜드 컨퍼런스] 5 2(보안,품질). 투비웨이 데이터정제와품질검증을위한mdm 시스템의기능과역할 by K data
[2016 데이터 그랜드 컨퍼런스] 5 2(보안,품질). 투비웨이  데이터정제와품질검증을위한mdm 시스템의기능과역할[2016 데이터 그랜드 컨퍼런스] 5 2(보안,품질). 투비웨이  데이터정제와품질검증을위한mdm 시스템의기능과역할
[2016 데이터 그랜드 컨퍼런스] 5 2(보안,품질). 투비웨이 데이터정제와품질검증을위한mdm 시스템의기능과역할
K data1.7K views
Tricks every ClickHouse designer should know, by Robert Hodges, Altinity CEO by Altinity Ltd
Tricks every ClickHouse designer should know, by Robert Hodges, Altinity CEOTricks every ClickHouse designer should know, by Robert Hodges, Altinity CEO
Tricks every ClickHouse designer should know, by Robert Hodges, Altinity CEO
Altinity Ltd13.6K views
HA環境構築のベスト・プラクティス by EnterpriseDB
HA環境構築のベスト・プラクティスHA環境構築のベスト・プラクティス
HA環境構築のベスト・プラクティス
EnterpriseDB1.4K views

Similar to [Pgday.Seoul 2017] 7. PostgreSQL DB Tuning 기업사례 - 송춘자

제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀 by
제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀EXEM
601 views51 slides
AWS 6월 웨비나 | AWS에서 MS SQL 서버 운영하기 (김민성 솔루션즈아키텍트) by
AWS 6월 웨비나 | AWS에서 MS SQL 서버 운영하기 (김민성 솔루션즈아키텍트)AWS 6월 웨비나 | AWS에서 MS SQL 서버 운영하기 (김민성 솔루션즈아키텍트)
AWS 6월 웨비나 | AWS에서 MS SQL 서버 운영하기 (김민성 솔루션즈아키텍트)Amazon Web Services Korea
5.8K views54 slides
Amazon Redshift의 이해와 활용 (김용우) - AWS DB Day by
Amazon Redshift의 이해와 활용 (김용우) - AWS DB DayAmazon Redshift의 이해와 활용 (김용우) - AWS DB Day
Amazon Redshift의 이해와 활용 (김용우) - AWS DB DayAmazon Web Services Korea
26.8K views94 slides
[Foss4 g2013 korea]postgis와 geoserver를 이용한 대용량 공간데이터 기반 일기도 서비스 구축 사례 by
[Foss4 g2013 korea]postgis와 geoserver를 이용한 대용량 공간데이터 기반 일기도 서비스 구축 사례[Foss4 g2013 korea]postgis와 geoserver를 이용한 대용량 공간데이터 기반 일기도 서비스 구축 사례
[Foss4 g2013 korea]postgis와 geoserver를 이용한 대용량 공간데이터 기반 일기도 서비스 구축 사례BJ Jang
3.7K views38 slides
데이타베이스 기본튜닝 by
데이타베이스 기본튜닝 데이타베이스 기본튜닝
데이타베이스 기본튜닝 Jinuk Bhak
888 views82 slides
제 5회 엑셈 수요 세미나 자료 연구컨텐츠팀 by
제 5회 엑셈 수요 세미나 자료 연구컨텐츠팀제 5회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 5회 엑셈 수요 세미나 자료 연구컨텐츠팀EXEM
481 views19 slides

Similar to [Pgday.Seoul 2017] 7. PostgreSQL DB Tuning 기업사례 - 송춘자(20)

제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀 by EXEM
제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀
EXEM601 views
AWS 6월 웨비나 | AWS에서 MS SQL 서버 운영하기 (김민성 솔루션즈아키텍트) by Amazon Web Services Korea
AWS 6월 웨비나 | AWS에서 MS SQL 서버 운영하기 (김민성 솔루션즈아키텍트)AWS 6월 웨비나 | AWS에서 MS SQL 서버 운영하기 (김민성 솔루션즈아키텍트)
AWS 6월 웨비나 | AWS에서 MS SQL 서버 운영하기 (김민성 솔루션즈아키텍트)
[Foss4 g2013 korea]postgis와 geoserver를 이용한 대용량 공간데이터 기반 일기도 서비스 구축 사례 by BJ Jang
[Foss4 g2013 korea]postgis와 geoserver를 이용한 대용량 공간데이터 기반 일기도 서비스 구축 사례[Foss4 g2013 korea]postgis와 geoserver를 이용한 대용량 공간데이터 기반 일기도 서비스 구축 사례
[Foss4 g2013 korea]postgis와 geoserver를 이용한 대용량 공간데이터 기반 일기도 서비스 구축 사례
BJ Jang3.7K views
데이타베이스 기본튜닝 by Jinuk Bhak
데이타베이스 기본튜닝 데이타베이스 기본튜닝
데이타베이스 기본튜닝
Jinuk Bhak888 views
제 5회 엑셈 수요 세미나 자료 연구컨텐츠팀 by EXEM
제 5회 엑셈 수요 세미나 자료 연구컨텐츠팀제 5회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 5회 엑셈 수요 세미나 자료 연구컨텐츠팀
EXEM481 views
광안 1반 2팀 엠퀴즈 최종 발표 자료.pptx by YeongKiKim1
광안 1반 2팀 엠퀴즈 최종 발표 자료.pptx광안 1반 2팀 엠퀴즈 최종 발표 자료.pptx
광안 1반 2팀 엠퀴즈 최종 발표 자료.pptx
YeongKiKim1186 views
Big query at GDG Korea Cloud meetup by Jude Kim
Big query at GDG Korea Cloud meetupBig query at GDG Korea Cloud meetup
Big query at GDG Korea Cloud meetup
Jude Kim3.9K views
SQream DB, GPU-accelerated data warehouse by NAVER Engineering
SQream DB, GPU-accelerated data warehouseSQream DB, GPU-accelerated data warehouse
SQream DB, GPU-accelerated data warehouse
NAVER Engineering1.3K views
실전! AWS 기반 데이터베이스 마이그레이션::최홍식::AWS Summit Seoul 2018 by Amazon Web Services Korea
실전! AWS 기반 데이터베이스 마이그레이션::최홍식::AWS Summit Seoul 2018실전! AWS 기반 데이터베이스 마이그레이션::최홍식::AWS Summit Seoul 2018
실전! AWS 기반 데이터베이스 마이그레이션::최홍식::AWS Summit Seoul 2018
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4 by Seok-joon Yun
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
Seok-joon Yun1.6K views
AWS Partner ConneXions Online – New Year Edition - AWS re:Invent 2020 Tech Re... by Amazon Web Services Korea
AWS Partner ConneXions Online – New Year Edition - AWS re:Invent 2020 Tech Re...AWS Partner ConneXions Online – New Year Edition - AWS re:Invent 2020 Tech Re...
AWS Partner ConneXions Online – New Year Edition - AWS re:Invent 2020 Tech Re...
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017 by Amazon Web Services Korea
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
Graviton2 기반의 EC2 인스턴스 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나 by Amazon Web Services Korea
Graviton2 기반의 EC2 인스턴스 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나Graviton2 기반의 EC2 인스턴스 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나
Graviton2 기반의 EC2 인스턴스 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나
Alluxio: Data Orchestration on Multi-Cloud by Jinwook Chung
Alluxio: Data Orchestration on Multi-CloudAlluxio: Data Orchestration on Multi-Cloud
Alluxio: Data Orchestration on Multi-Cloud
Jinwook Chung205 views
Amazon aurora 2 by EXEM
Amazon aurora 2Amazon aurora 2
Amazon aurora 2
EXEM331 views
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드 by cranbe95
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
cranbe953.4K views
DEVIEW 2013 Presentation by Won Gil Kim
DEVIEW 2013 PresentationDEVIEW 2013 Presentation
DEVIEW 2013 Presentation
Won Gil Kim2.3K views
Amazon Aurora 신규 서비스 알아보기::최유정::AWS Summit Seoul 2018 by Amazon Web Services Korea
Amazon Aurora 신규 서비스 알아보기::최유정::AWS Summit Seoul 2018Amazon Aurora 신규 서비스 알아보기::최유정::AWS Summit Seoul 2018
Amazon Aurora 신규 서비스 알아보기::최유정::AWS Summit Seoul 2018
제 9회 엑셈 수요 세미나 자료 연구컨텐츠팀 by EXEM
제 9회 엑셈 수요 세미나 자료 연구컨텐츠팀제 9회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 9회 엑셈 수요 세미나 자료 연구컨텐츠팀
EXEM808 views

More from PgDay.Seoul

[pgday.Seoul 2022] POSTGRES 테스트코드로 기여하기 - 이동욱 by
[pgday.Seoul 2022] POSTGRES 테스트코드로 기여하기 - 이동욱[pgday.Seoul 2022] POSTGRES 테스트코드로 기여하기 - 이동욱
[pgday.Seoul 2022] POSTGRES 테스트코드로 기여하기 - 이동욱PgDay.Seoul
186 views30 slides
[pgday.Seoul 2022] PostgreSQL with Google Cloud by
[pgday.Seoul 2022] PostgreSQL with Google Cloud[pgday.Seoul 2022] PostgreSQL with Google Cloud
[pgday.Seoul 2022] PostgreSQL with Google CloudPgDay.Seoul
230 views49 slides
[Pgday.Seoul 2020] 포스트그레스큐엘 자국어화 이야기 by
[Pgday.Seoul 2020] 포스트그레스큐엘 자국어화 이야기[Pgday.Seoul 2020] 포스트그레스큐엘 자국어화 이야기
[Pgday.Seoul 2020] 포스트그레스큐엘 자국어화 이야기PgDay.Seoul
498 views17 slides
[Pgday.Seoul 2019] AppOS 고성능 I/O 확장 모듈로 성능 10배 향상시키기 by
[Pgday.Seoul 2019] AppOS 고성능 I/O 확장 모듈로 성능 10배 향상시키기[Pgday.Seoul 2019] AppOS 고성능 I/O 확장 모듈로 성능 10배 향상시키기
[Pgday.Seoul 2019] AppOS 고성능 I/O 확장 모듈로 성능 10배 향상시키기PgDay.Seoul
940 views40 slides
[Pgday.Seoul 2019] Citus를 이용한 분산 데이터베이스 by
[Pgday.Seoul 2019] Citus를 이용한 분산 데이터베이스[Pgday.Seoul 2019] Citus를 이용한 분산 데이터베이스
[Pgday.Seoul 2019] Citus를 이용한 분산 데이터베이스PgDay.Seoul
1.5K views29 slides
[Pgday.Seoul 2019] Advanced FDW by
[Pgday.Seoul 2019] Advanced FDW[Pgday.Seoul 2019] Advanced FDW
[Pgday.Seoul 2019] Advanced FDWPgDay.Seoul
412 views30 slides

More from PgDay.Seoul(20)

[pgday.Seoul 2022] POSTGRES 테스트코드로 기여하기 - 이동욱 by PgDay.Seoul
[pgday.Seoul 2022] POSTGRES 테스트코드로 기여하기 - 이동욱[pgday.Seoul 2022] POSTGRES 테스트코드로 기여하기 - 이동욱
[pgday.Seoul 2022] POSTGRES 테스트코드로 기여하기 - 이동욱
PgDay.Seoul186 views
[pgday.Seoul 2022] PostgreSQL with Google Cloud by PgDay.Seoul
[pgday.Seoul 2022] PostgreSQL with Google Cloud[pgday.Seoul 2022] PostgreSQL with Google Cloud
[pgday.Seoul 2022] PostgreSQL with Google Cloud
PgDay.Seoul230 views
[Pgday.Seoul 2020] 포스트그레스큐엘 자국어화 이야기 by PgDay.Seoul
[Pgday.Seoul 2020] 포스트그레스큐엘 자국어화 이야기[Pgday.Seoul 2020] 포스트그레스큐엘 자국어화 이야기
[Pgday.Seoul 2020] 포스트그레스큐엘 자국어화 이야기
PgDay.Seoul498 views
[Pgday.Seoul 2019] AppOS 고성능 I/O 확장 모듈로 성능 10배 향상시키기 by PgDay.Seoul
[Pgday.Seoul 2019] AppOS 고성능 I/O 확장 모듈로 성능 10배 향상시키기[Pgday.Seoul 2019] AppOS 고성능 I/O 확장 모듈로 성능 10배 향상시키기
[Pgday.Seoul 2019] AppOS 고성능 I/O 확장 모듈로 성능 10배 향상시키기
PgDay.Seoul940 views
[Pgday.Seoul 2019] Citus를 이용한 분산 데이터베이스 by PgDay.Seoul
[Pgday.Seoul 2019] Citus를 이용한 분산 데이터베이스[Pgday.Seoul 2019] Citus를 이용한 분산 데이터베이스
[Pgday.Seoul 2019] Citus를 이용한 분산 데이터베이스
PgDay.Seoul1.5K views
[Pgday.Seoul 2019] Advanced FDW by PgDay.Seoul
[Pgday.Seoul 2019] Advanced FDW[Pgday.Seoul 2019] Advanced FDW
[Pgday.Seoul 2019] Advanced FDW
PgDay.Seoul412 views
[Pgday.Seoul 2018] PostgreSQL 11 새 기능 소개 by PgDay.Seoul
[Pgday.Seoul 2018]  PostgreSQL 11 새 기능 소개[Pgday.Seoul 2018]  PostgreSQL 11 새 기능 소개
[Pgday.Seoul 2018] PostgreSQL 11 새 기능 소개
PgDay.Seoul3K views
[Pgday.Seoul 2018] PostgreSQL 성능을 위해 개발된 라이브러리 OS 소개 apposha by PgDay.Seoul
[Pgday.Seoul 2018]  PostgreSQL 성능을 위해 개발된 라이브러리 OS 소개 apposha[Pgday.Seoul 2018]  PostgreSQL 성능을 위해 개발된 라이브러리 OS 소개 apposha
[Pgday.Seoul 2018] PostgreSQL 성능을 위해 개발된 라이브러리 OS 소개 apposha
PgDay.Seoul1.1K views
[Pgday.Seoul 2018] PostgreSQL Authentication with FreeIPA by PgDay.Seoul
[Pgday.Seoul 2018]  PostgreSQL Authentication with FreeIPA[Pgday.Seoul 2018]  PostgreSQL Authentication with FreeIPA
[Pgday.Seoul 2018] PostgreSQL Authentication with FreeIPA
PgDay.Seoul786 views
[Pgday.Seoul 2018] AWS Cloud 환경에서 PostgreSQL 구축하기 by PgDay.Seoul
[Pgday.Seoul 2018]  AWS Cloud 환경에서 PostgreSQL 구축하기[Pgday.Seoul 2018]  AWS Cloud 환경에서 PostgreSQL 구축하기
[Pgday.Seoul 2018] AWS Cloud 환경에서 PostgreSQL 구축하기
PgDay.Seoul1.2K views
[Pgday.Seoul 2018] Greenplum의 노드 분산 설계 by PgDay.Seoul
[Pgday.Seoul 2018]  Greenplum의 노드 분산 설계[Pgday.Seoul 2018]  Greenplum의 노드 분산 설계
[Pgday.Seoul 2018] Greenplum의 노드 분산 설계
PgDay.Seoul1.6K views
[Pgday.Seoul 2018] replacing oracle with edb postgres by 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.Seoul606 views
[Pgday.Seoul 2017] 6. GIN vs GiST 인덱스 이야기 - 박진우 by PgDay.Seoul
[Pgday.Seoul 2017] 6. GIN vs GiST 인덱스 이야기 - 박진우[Pgday.Seoul 2017] 6. GIN vs GiST 인덱스 이야기 - 박진우
[Pgday.Seoul 2017] 6. GIN vs GiST 인덱스 이야기 - 박진우
PgDay.Seoul4.5K views
[Pgday.Seoul 2017] 5. 테드폴허브(올챙이) PostgreSQL 확장하기 - 조현종 by PgDay.Seoul
[Pgday.Seoul 2017] 5. 테드폴허브(올챙이) PostgreSQL 확장하기 - 조현종[Pgday.Seoul 2017] 5. 테드폴허브(올챙이) PostgreSQL 확장하기 - 조현종
[Pgday.Seoul 2017] 5. 테드폴허브(올챙이) PostgreSQL 확장하기 - 조현종
PgDay.Seoul435 views
[Pgday.Seoul 2017] 1. PostGIS의 사례로 본 PostgreSQL 확장 - 장병진 by PgDay.Seoul
[Pgday.Seoul 2017] 1. PostGIS의 사례로 본 PostgreSQL 확장 - 장병진[Pgday.Seoul 2017] 1. PostGIS의 사례로 본 PostgreSQL 확장 - 장병진
[Pgday.Seoul 2017] 1. PostGIS의 사례로 본 PostgreSQL 확장 - 장병진
PgDay.Seoul2.4K views
[Pgday.Seoul 2017] 4. Composite Type/JSON 파라미터를 활용한 TVP구현(with C#, JAVA) - 지현명 by PgDay.Seoul
[Pgday.Seoul 2017] 4. Composite Type/JSON 파라미터를 활용한 TVP구현(with C#, JAVA) - 지현명[Pgday.Seoul 2017] 4. Composite Type/JSON 파라미터를 활용한 TVP구현(with C#, JAVA) - 지현명
[Pgday.Seoul 2017] 4. Composite Type/JSON 파라미터를 활용한 TVP구현(with C#, JAVA) - 지현명
PgDay.Seoul573 views
[Pgday.Seoul 2017] 3. PostgreSQL WAL Buffers, Clog Buffers Deep Dive - 이근오 by PgDay.Seoul
[Pgday.Seoul 2017] 3. PostgreSQL WAL Buffers, Clog Buffers Deep Dive - 이근오[Pgday.Seoul 2017] 3. PostgreSQL WAL Buffers, Clog Buffers Deep Dive - 이근오
[Pgday.Seoul 2017] 3. PostgreSQL WAL Buffers, Clog Buffers Deep Dive - 이근오
PgDay.Seoul1.4K views
PostgreSQL 9.6 새 기능 소개 by PgDay.Seoul
PostgreSQL 9.6 새 기능 소개PostgreSQL 9.6 새 기능 소개
PostgreSQL 9.6 새 기능 소개
PgDay.Seoul3.2K views
pg_hba.conf 이야기 by PgDay.Seoul
pg_hba.conf 이야기pg_hba.conf 이야기
pg_hba.conf 이야기
PgDay.Seoul831 views
Pgday bdr 천정대 by PgDay.Seoul
Pgday bdr 천정대Pgday bdr 천정대
Pgday bdr 천정대
PgDay.Seoul1.6K views

[Pgday.Seoul 2017] 7. PostgreSQL DB Tuning 기업사례 - 송춘자

  • 1. PostgreSQL DB Tuning 기업사례 PGDay.Seoul 2017 송춘자(cjsong@naver.com)
  • 2. 송춘자 cjsong@naver.com  ChemEssen,Inc 개발부서장  고려대학교 컴퓨터정보통신대학원 소프트웨어공학과  ‘16 PostgreSQL DB 시작  ‘99 web program 시작  ‘97 Oracle Process Monitoring tool 제작 by PB  ‘96 OCP-DBA 7.3 취득  ‘93 UNIX & C System program 시작
  • 3. About ChemEssen, Inc  2006 설립, 40개 기술특허, 글로벌 웹서비스  화학기술과 정보기술의 융합 서비스 제공  Chemical Quantum Application + Mathematical Modeling + IT
  • 4. 검색 속도 개선 상황 발생  신규 자료 입력 발생  Master data 285만건  1억6백만건, 37배 증가  Master data size 25 GB  1 TB, 40배 증가  검색속도 저하 발생  651 msec  10분 17초, 948 배 증가 (ID)  1.2 초  7분 20초, 367 배 증가 (name)  773 msec  10분, 776 배 증가 (smiles)  Chemical data 특수성  IUPAC Name • (3R,6R,7R)-2,3,7-trimethyl-6-(propan-2-yl)tetradecane • N'-[(2E)-3-(3,4-dimethoxyphenyl)prop-2-enoyl]-2-phenylacetohydrazide  Smiles • CC(C)CCCC(C)C3CCC4C2CC=C1CC(O)CCC1(C)C2CCC34C  Formula • C27H46O • C11H14O3S2
  • 5. 속도 개선 결과 구분 Column type 285만건 1억6백만건 개선전 1억6백만건 개선후 ID VC(12) 651 msec 10분 17초 32 msec Name VC(4890) 1.2 sec 6분 16초 7 sec Smiles Text 773 msec 10분 25초 547 msec Formula VC(50) 1.2 sec 10분 33초 32 msec InChIKey VC(50) 930 msec 10분 22초 46 msec
  • 6. 속도개선방법  개발소스에서 사용중인 SQL query 변경  업무규칙 변경 가능 부분 협의 적용  Index 재생성  Text Search 기능 적용  DBMS Parameter 조정
  • 7. Text Search 기능 적용 순서  검색 전용 tsvector 컬럼 추가 ALTER TABLE chemicalsc.tb_chem_info ADD COLUMN textsearchable_index_col tsvector;  Data update UPDATE chemicalsc.tb_chem_info SET textsearchable_index_col = to_tsvector('english', coalesce(replace(upper(iupac_name), ' ', ''), ''));  Gin 인덱스 생성 CREATE INDEX idx_chem_info_textsearchable_index_col ON chemicalsc.tb_chem_info USING gin (textsearchable_index_col) TABLESPACE tbs_chemical_idx00;
  • 8. Sql query - 개선 전 SELECT chem_info_id, iupac_name, (length('Benzene') - length(iupac_name) + 100) as jaro FROM chemicalsc.tb_chem_info WHERE iupac_name_upper_stuck like replace(upper( '%Benzene%' ), ' ', '' ) ORDER BY jaro desc, iupac_name asc LIMIT 2000;
  • 9. Sql query - 개선 후 SET work_mem to '100MB'; SELECT chem_info_id, iupac_name, (length('benzen’) - length(iupac_name)+100) as jaro FROM chemicalsc.tb_chem_info WHERE textsearchable_index_col @@ to_tsquery('english', 'benzen') ORDER BY jaro desc, iupac_name asc LIMIT 2000;
  • 10. DB Server Spec  Version: PostgreSQL 9.5.8 on x86_64-pc-linux-gnu  CPU : XeonE5-2643 3.3GHz*8  RAM : 32 GB  Disk : 24 TB (1+0)  Max Connection : 100
  • 11. postgresql.conf  effective_cache_size  데이터 캐싱에 사용할 수 있는 메모리 양  인덱스 사용여부 결정  shaed_buffers할당메모리+사용가능한OS캐시 메모리  시스템 전체메모리 *(50% ~ 75%)  32GB * 50% = 16GB, 32GB * 75% = 24GB  maintenance_work_mem  Vacuum, create index 작업시 사용  1GB당50MB  32 * 50MB = 1,600 MB  shared_buffers  Disk IO최소화 목적  시스템 전체 메모리 *25%  32 GB * 0.25 = 8 GB
  • 12. postgresql.conf  work_mem  sort, bitmap작업,hash join, merge join작업  최대크기=total RAM /max_connections/ 4  안전크기=total RAM /max_connections/ 16  세션마다 다르게 설정 가능  32 GB / 100 / 4 = 0.08 GB = 80 MB  32 GB / 100 / 16 = 0.02 GB = 20 MB  wal_buffers  DB변경사항을 임시 저장하는 버퍼  16MB  max_wal_size / min_wal_size  2GB / 1GB  stats_temp_directory  /run/shm
  • 13. Data update하면서…  인덱스 생성은 data insert / update 이후 생성  인덱스 생성된 상태에서 data file 301개 update 처리진행 42일 소요  Vaccum 설정 check 필수 – 1억건 이상  data file 301개 auto vaccum 처리 10일 소요  데이터 insert 시 COPY command 이용  set command 이후 copy command  Source data 파일 여러 개 분할하여 COPY 진행  입력 실패시 재작업 최소화