DBA/Postgresql 61

PostgreSQL Type(JSON과 JSONB 타입)

※ PostgreSQL TypeTypeDescriptionSERIAL타 DBMS의 auto_increment 옵션과 동일한 기능을 수행한다.※ nextval() DEFAULT 옵션 설정으로 대체 가능.CREATE TABLE [테이블 명] (     [컬럼 명] SERIAL NOT NULL PRIMARY KEY,     [컬럼 명] json NOT NULL )JSON(B)JSON 타입 네이티브 지원, JSON 데이터 자체를 쿼리하고 조작할 수 있으며 NoSQL과 RDBMS의 혼합 사용시 유리함.nextval() ?PostgreSQL에서 시퀸스를 자동으로 생성시켜주는 함수(function)이다.해당 함수를 사용하기 위해서는 사전에 시퀸스를 먼저 생성해야 가능하다. CREATE SEQUENCE [시퀸스 명]C..

DBA/Postgresql 2024.05.03

PostgreSQL 테이블 생성 및 변경

# DATA TYPE 이름설명character varying(n), varchar(n)길이 제한 있는 가변 길이 문자열character(n), char(n)공백 채움 고정 길이 문자열text길이 제한 없는 가변 길이 문자열 # CREATE TABLE1. 자동 증가 컬럼 생성MySQL의 AUTO_INCREMENT 와 같이 자동증가 값을 사용하기 위해선 컬럼을 serial 또는 bigserial 로 생성하면 됨.CREATE TABLE TEST1 (SEQ SERIAL, NAME VARCHAR(20));CREATE TABLE TEST2 (SEQ BIGSERIAL, NAME VARCHAR(20));SERIAL : 4byte integerBIGSERIAL : 8byte integer★Unique constraint..

DBA/Postgresql 2024.05.03

PostgreSQL -psql 접속

PostgreSQL 접속하기 psql을 사용하여 PostgreSQL에 접속하는 방법은 psql -U [username] -d [database_name] -h [hostname] -p [port_number] 기본적으로 'postgres'로 설정되어 있다.database_name: 접속할 데이터베이스의 이름이다. hostname: PostgreSQL 서버의 호스트 이름이다. port_number: PostgreSQL 서버의 포트 번호이다. psql은 다양한 명령어를 지원하여 PostgreSQL 데이터베이스와 상호작용할 수 있다. 몇 가지 유용한 psql 명령어에 대해 알아보자.\l: 현재 서버에 있는 모든 데이터베이스 목록을 조회한다.\c database_name: 지정한 데이터베이스로 접속한다.\d: ..

DBA/Postgresql 2024.04.25

사업자번호 정합성 체크 FUNCTION

사업자등록번호는 10자리 (xxx-xx-xxxxx)로 구성됨. 일련번호코드 ( 3자리 )- 신규개업자에게 사용 가능한 번호 101-999를 순차적으로 부여합니다.처음 세자리는 자신의 관할 구청이 어딘지에 따라 다름.서울지방국세청(100)종로 101, 남대문 104, 마포 105, 용산 106, 영등포 107, 동작 108, 강서 109, 서대문 110, 구로 113, 반포 114, 양천 117, 금천 119, 삼성 120, 중부 201, 동대문 204, 성동 206, 성북 209, 도봉 210, 강남 211, 강동 212, 서초 214, 송파 215, 역삼 220중부지방국세청(200)인천 121, 북인천 122, 안양 123, 수원 124, 평택 125, 이천 126, 의정부 127,..

DBA/Postgresql 2024.04.24

Postgresql hash partition 생성 스크립트

Postgresql에서 해시 파티션으로 테이블 생성할 일이 빈번하게 일어나 해시파티션 생성하는 procedure를 생성했다.. CREATE OR REPLACE PROCEDURE dtsch.create_partition_hash(IN tbname character varying, IN psize integer)SECURITY INVOKERAS $procedure$beginfor i in 0.. (psize-1) loopexecute format('create table ptsch.pt_%s_%s partition of dtsch.%s for values with (MODULUS %s, REMAINDER %s)',tbname, i,tbname, psize, i); -- 루프를 돌면서 p..

DBA/Postgresql 2024.04.24

Postgresql 파티션 이동

Postgresql에서 파티션 테이블을 생성하면 Tool(dbeaver등 클라이언트 tool)에따라 다르지만 스키마에 파티션테이블이 모두 보이는 현상이 발생할 수 있다. 따라서 파티션테이블을 모아두는 스키마를 생성해 파티션 테이블은 이동해 두었다.. 파티션 테이블 조회 쿼리with recursive t (inhrelid, inhparent, depth)as ( select inhrelid, inhparent, 1 from pg_inherits pi union all select pi.inhrelid, pi.inhparent, depth + 1 from t, pg_inherits pi where ..

DBA/Postgresql 2024.04.24

Postgresql vacuum

베큠이란?베큠(Vacuum)은 PostgreSQL의 쓰레기 데이터를 정리하여 쾌적하게 청소하라는 명령인데, 쉽게 "디스크 조각 모음" PostgreSQL의 모든 정보는 Pg_Catelog에 쌓이고 있는데, 튜플에 대한 정보도 가지고 있으며 그 정보를 기반으로 쿼리 플랜(Query Plan)에도 활용됨, 따라서 주기적인 베큠 실행은 성능 향상을 가져옵니다.  WITH test AS ( SELECT n.nspname AS schema_name, c.relname AS table_name, pg_stat_get_live_tuples(c.oid) + pg_stat_get_dead_tuples(c.oid) as total_tuple, pg_stat_get_live_tupl..

DBA/Postgresql 2024.04.24