Postgresql/아키텍처 3

PostgreSQL architecture (Local Memory)

Local Memory ㄴ 세션별로 독립적인 메모리 공간ㄴ 작업 유형에 따라 동적 할당ㄴ 성능 최적화 고려사항 큰 정렬 작업이 많은 경우 work_mem 증가대규모 vacuum 작업 시 maintenance_work_mem 조정- maintenance_work_mem: VACUUM, INDEX 생성, 테이블 변경, FK추가 등 관리 작업에 사용- work_mem: 정렬, 해시 테이블 등의 작업에 사용- temp_buffers: 임시 테이블을 위한 버퍼- catalog_cache: system catalog 메타데이터 사용공간 -- 현재 세션의 메모리 사용량 확인SELECT * FROM pg_stat_activity WHERE pid = pg_backend_pid(); [TEST] 동시접속자 10명이 트랜..

[book] PostgreSQL 9.6 성능 이야기 - vacuum

postgresql 중 vacuum 이란 것에 대해서 정리 vaccum 이란 불필요한 데이터를 정리하고 압축해서 디스크공간의 효율성을 높인다오래된 트랜잭션을 정리하는 작업도 수행Multi-Version Concurrency Control = 동시에 여러 개의 데이터 버전을 제공할수 있는 기법오라클의 MVCC와 postgresql MVCC의 차이특성PostgreSQLOracleMVCC 구현 방식같은 row의 여러 버전이 테이블에 함께 저장됨Dead tuple은 vacuum으로 정리Undo 세그먼트에 이전 버전 저장자동으로 관리됨공간 관리vacuum 작업 필요관리자의 주기적인 관리 필요테이블 bloat 발생 가능Undo 세그먼트 자동 관리별도 관리 작업 불필요테이블 크기 안정적동시성 처리읽기 작업이 쓰기를 ..

PostgreSQL architecture (shared Memory)

Shared Memory (공유 메모리) ㄴ 디스크 I/O를 최소화하기 위해 사용되는 메모리 공간ㄴ PAGE SIZE 8K(Default)이다. 파라미터는 shared_buffersㄴ oracle 의 SGA와 유사 shared buffer = data : page (block)단위로 구성이 되고 기본이 8k 크기oracle의 buffer cache 와 유사하고 postgresql.conf 의 shared_buffers 파라미터 값으로 크기 조정 가능기본이 128MB 1GB이상의 RAM이 있는 서버에는 25%를 권장한다. ( shared_buffers = RAM * 0.25 )4GB RAM: 1GB (25%)8GB RAM: 2GB (25%)16GB RAM: 4GB (25%)32GB RAM: 8GB (25%..