본문 바로가기
728x90
반응형

데이터베이스/Postgresql50

[PostgreSQL] 슬로우쿼리를 잡아내는 3가지 방법 쿼리 시간이 어느정도 느려지면, 쿼리 실행문을 로그에 남기기 위해 postgresql.conf에 설정값 추가한다. log_min_duration_statement = 5000 그리고 config를 reload 해주면 된다. SELECT pg_reload_conf(); pg_reload_conf ---------------- t (1 row) 특정 데이터베이스, 특정 유저 권한에서 발생한 슬로우쿼리만 모니터링 할 수도 있다. ALTER DATABASE test SET log_min_duration_statement = 5000; ALTER DATABASE 남긴 로그 확인 이렇게 하면, 부하를 유발하는 단일 쿼리를 파악하기 쉽다. 그러나 처리 시간은 빠르지만, 여러번 호출되서 부하를 발생시키는 쿼리 실행을 .. 2021. 7. 16.
[PostgreSQL] DB Lock을 줄이는 7가지 팁 1. Default 값이 있는 필드를 추가하면 안된다 PostgreSQL 10이하 버전에서, Default 값이 있는 필드를 추가하면, 테이블 락이 걸릴 수 있다. 그리고 엄청 느리다. 그래서 이런 쿼리를 날리면 안된다. ALTER TABLE items ADD COLUMN updated_at timestamptz DEFAULT now(); 기본값이 없는 필드를 추가한 후, UPDATE를 날리거나 ALTER TABLE items ADD COLUMN updated_at timestamptz; UPDATE items SET updated_at = now(); 이렇게 쪼개서, UPDATE를 해주는게 좋다. ( 한번에 전체 테이블을 Update를 하면, 오래걸리니까. ) do { numRowsUpdated = e.. 2021. 7. 16.
[PostgreSQL] DBLINK 설정 및 사용 * DB LINK? - 현재 데이터베이스 세션 내에서 물리적으로 다른 곳에 위치한 데이터베이스 연결을 지원하는 확장성 모듈. - EXTENSION MODULE - extension 설치 후, 사용자 설정에 맞춰 사용하고 삭제하지 않는 이상 재설치는 불가. - 스키마 지정이 없으면 default로 public에 설치가 되므로 스키마별로 사용이 필요한 경우, ALTER로 변경하거나 삭제 후 재설치하여 사용. * DB LINK EXTENSION 설치 CREATE EXTENSION [ IF NOT EXISTS ] extension_name [WITH] [SCHEMA schema_name] [VERSION version] [FROM old_version] * DB LINK 관리 CREATE EXTENSION IF.. 2021. 7. 16.
[PostgreSQL] 테이블 lock 조회 및 kill하기 현재 수행중인 SQL 전체 조회 select datname, pid, usename, application_name, client_addr, client_port, backend_start, query_start, wait_event_type, state, backend_xmin query from pg_stat_activity; 위 쿼리 실행시 현재 DB에서 돌고 있는 SQL 전체를 조회할 수 있다. datid oid 데이터베이스oid datname name 데이터베이스 이름 pid integer 프로세스id usesysid oid 사용자고유번호 usename name 사용자이름 application_name text 응용프로그램이름 client_addr inet 접속ip client_hostname .. 2021. 7. 16.
[PostgreSQL] 기본 조회 명령어 및 변수 선언, 설정 1) help information - psql의 명령어에 대한 정보를 얻기 위해서는 psql로 접속하여 \? 를 입력하면 명령어에 대한 정보를 얻을 수 있다. - sql에 대한 명령어 정보를 얻고 싶을 때는 \h 를 입력하면 sql명령어에 대한 정보를 얻을 수 있다. 2. database 목록 확인 - \l 명령어를 통해 서버에 접속된 database 목록을 확인할 수 있다. - database 내 relation 정보를 확인하려면 \d를 입력한다. ● \dt : database 내 table 조회 ● \d+ : relation 상세 조회 ● \dS : System table 조회 ● \dv : view 조회 ● \dl : Large object 조회 ● \di : index 조회 ● \df : fun.. 2021. 7. 16.
[PostgreSQL] 계정/유저관리 1. user 조회 select * from pg_shadow; postgres=# select * from pg_shadow; usename | usesysid | usecreatedb | usesuper | userepl | usebypassrls | passwd | valuntil | useconfig ----------+----------+-------------+----------+---------+--------------+-------------------------------------+----------+----------- postgres | 10 | t | t | t | t | md53175bce1d3201d16594cebf9d7eb3f9d | | invako | 16384 | f |.. 2021. 7. 16.
[PostgreSQL] database 관리(생성/추가/삭제/변경) 1. DATABASE 소유 - Database를 생성하기 위해서는 SUPERUSER이거나 CREATEDB 권한을 가진 USER여야 한다. - SUPERUSER는 다른 USER가 만든 DATABASE를 소유할 수도 있지만 그 외 일반 USER들은 자신이 생성한 DATABASE만 소유할 수 있다. 2. DATABASE 조회 => psql -U postgres 접속후 영문 소문자 \l 입력하여 조회 postgres=# \l 데이터베이스 목록 이름 | 소유주 | 인코딩 | Collate | Ctype | 액세스 권한 -----------+----------+--------+-------------+-------------+----------------------- comdb | com | UTF8 | en_US.. 2021. 7. 16.
[PostgreSQL] Tablespace 생성 1. TABLESPACE - DB 내의 물리적인 부분으로 실제 데이터를 저장하는 공간이다. 2. TABLESPACE 생성 생성할 폴더를 만든다. mkdir postgre_db 소유권 변경 chown postgres postgre_db postgresql 접속 # psql -U postgres psql (13.3 (Debian 13.3-1.pgdg100+1)) 도움말을 보려면 "help"를 입력하십시오. postgres=# create tablespace invako_tbl owner invako location '/postgre_db'; CREATE TABLESPACE ■ CREATE TABLESPACE [tablespace_name]; ■ option (1) OWNER [user_name] - 입력하여.. 2021. 7. 16.
Postgresql 테이블스페이스 사용량 조회 -- tablespace 총량 select spcname, pg_size_pretty(pg_tablespace_size(spcname)) from pg_tablespace; -- table size (index 미포함) select pg_size_pretty(pg_relation_size('table')); -- index size select pg_size_pretty(pg_relation_size('idx1')); -- total size(data + index) select pg_size_pretty(pg_total_relation_size('table1')); -- DB size 단위적용 : pg_size_pretty() 2021. 7. 16.
사용자 생성 C:\Users\cbw>docker exec -it postgres /bin/bash root@3d939a692d63:/# ls bin boot dev docker-entrypoint-initdb.d docker-entrypoint.sh etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var root@3d939a692d63:/# pwd / root@3d939a692d63:/# psql -U postgres psql (13.2 (Debian 13.2-1.pgdg100+1)) Type "help" for help. postgres=# create user cbw password 'cbw' superuser; CREATE ROLE pos.. 2021. 5. 10.
728x90
반응형


"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."