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명이 트랜잭션 1000개 사용시 vmstat 메모리 확인
1. 10개의 client 가 접속, thread 4개
2. free 메모리 줄어드는것 확인
3. local 로 된 프로세스 확인
프로세스
데몬 프로세스 : postgresql.conf, pg_hba.conf
wal writer 실습
pgbench -h localhost -p 5432 -U postgres -i -s 30 pgbenchtest
wal file이 로테이션 돌면서 write 되었음.
iotop 으로 walwriter가 실행중인것 확인
postgresql 은 database와 schema가 나뉘어져있고 아래 구성대로 생성한다.
--DB생성
create database hr;
--user 생성
create user hr with password 'hr' superuser;
--db owner 변경
alter database hr owner to hr;
--스키마생성
create schema hr;
--권한부여
grant usage on schema hr to hr;
--테이블생성
CREATE TABLE dept (
dept_no INT PRIMARY KEY,
dept_name VARCHAR(100) NOT NULL,
dept_loc VARCHAR(100)
);
CREATE TABLE emp (
emp_no INT PRIMARY KEY,
emp_name VARCHAR(100) NOT NULL,
job VARCHAR(50),
manager INT,
start_date DATE,
salary NUMERIC(10, 2),
dept_no INT,
FOREIGN KEY (dept_no) REFERENCES hr.dept(dept_no),
FOREIGN KEY (manager) REFERENCES hr.emp(emp_no)
);
--데이터생성
INSERT INTO dept(dept_no,dept_name,dept_loc) VALUES (1,'Administration',1700);
INSERT INTO dept(dept_no,dept_name,dept_loc) VALUES (2,'Marketing',1800);
INSERT INTO dept(dept_no,dept_name,dept_loc) VALUES (3,'Purchasing',1700);
INSERT INTO dept(dept_no,dept_name,dept_loc) VALUES (4,'Human Resources',2400);
INSERT INTO dept(dept_no,dept_name,dept_loc) VALUES (5,'Shipping',1500);
INSERT INTO dept(dept_no,dept_name,dept_loc) VALUES (6,'IT',1400);
INSERT INTO dept(dept_no,dept_name,dept_loc) VALUES (7,'Public Relations',2700);
INSERT INTO dept(dept_no,dept_name,dept_loc) VALUES (8,'Sales',2500);
INSERT INTO dept(dept_no,dept_name,dept_loc) VALUES (9,'Executive',1700);
INSERT INTO dept(dept_no,dept_name,dept_loc) VALUES (10,'Finance',1700);
INSERT INTO emp(emp_no, emp_name, job, manager, start_date, salary, dept_no) VALUES (100, 'Steven King', 'Job Title 4',
NULL, '1987-06-17', 24000.00, 9);
INSERT INTO emp(emp_no, emp_name, job, manager, start_date, salary, dept_no) VALUES (101, 'Neena Kochhar', 'Job Title 5', 100,
'1989-09-21', 17000.00, 9);
INSERT INTO emp(emp_no, emp_name, job, manager, start_date, salary, dept_no) VALUES (102, 'Lex De Haan', 'Job Title 5', 100,
'1993-01-13', 17000.00, 9);
INSERT INTO emp(emp_no, emp_name, job, manager, start_date, salary, dept_no) VALUES (103, 'Alexander Hunold', 'Job Title 9',
102, '1990-01-03', 9000.00, 6);
INSERT INTO emp(emp_no, emp_name, job, manager, start_date, salary, dept_no) VALUES (104, 'Bruce Ernst', 'Job Title 9', 103,
'1991-05-21', 6000.00, 6);
INSERT INTO emp(emp_no, emp_name, job, manager, start_date, salary, dept_no) VALUES (105, 'David Austin', 'Job Title 9', 103,
'1997-06-25', 4800.00, 6);
INSERT INTO emp(emp_no, emp_name, job, manager, start_date, salary, dept_no) VALUES (106, 'Valli Pataballa', 'Job Title 9',
103, '1998-02-05', 4800.00, 6);
INSERT INTO emp(emp_no, emp_name, job, manager, start_date, salary, dept_no) VALUES (107, 'Diana Lorentz', 'Job Title 9', 103,
'1999-02-07', 4200.00, 6);
INSERT INTO emp(emp_no, emp_name, job, manager, start_date, salary, dept_no) VALUES (108, 'Nancy Greenberg', 'Job Title 7',
101, '1994-08-17', 12000.00, 10);
INSERT INTO emp(emp_no, emp_name, job, manager, start_date, salary, dept_no) VALUES (109, 'Daniel Faviet', 'Job Title 6', 108,
'1994-08-16', 9000.00, 10);
--뷰생성
CREATE VIEW emp_v AS SELECT d.dept_name, e.emp_no, e.emp_name, e.job, e.manager FROM dept d JOIN emp e ON d.dept_no =
e.dept_no;
'Postgresql' 카테고리의 다른 글
쿼리성능 분석 툴 pg_stat_statements (0) | 2024.12.17 |
---|---|
PostgreSQL 15.8 시스템 변수 최적화 (0) | 2024.12.11 |
VACUUM type 에 따른 redo 발생량 차이 (0) | 2024.11.13 |
[book] PostgreSQL 9.6 성능 이야기 - vacuum (0) | 2024.10.30 |
PostgreSQL architecture (shared Memory) (0) | 2024.10.22 |