본문 바로가기

Database/Postgresql

(13)
PostgreSQL 15 출시 PostgreSQL 15가 출시되었다. 13/14버전을 사용해본적이 없는데 벌써 15버전이 출시가 되었다. 2022년 6월 30일 - PostgreSQL 15 Beta 2 릴리즈 눈에 띄는 기능만 정리하자면 1. MERGE SQL 명령어 도입 - https://www.postgresql.org/docs/15/sql-merge.html - MERGE 문과 비슷한 INSERT ON CONFLICT 문이 존재했지만 MERGE 문이 훨씬 직관적이여서 도입된 것 같다.(오라클의 힘인 것인가;;) 2. 백업/복구시 Zstandard 압축 유형 추가 3. JSON 기능 및 함수 추가 - https://www.postgresql.org/docs/15/functions-json.html#FUNCTIONS-SQLJSON-..
윈도우환경에서 Postgresql Command Line Tools(psql,pg_dump) 설치하기 개발PC에서 pg_dump로 Postgresql DB DDL 또는 데이터를 백업하거나 psql 로 접속해서 테이블 속성을 보고 싶을 경우가 생길것이다. 하지만 Postgresql Command Line Tools 설치파일이 따로 존재하지 않는다. Command Line Tools만 설치할 수 있는 방법은 Postgresql 서버 설치파일을 다운받고 컴포넌트 선택화면에서 Command Line Tools를 선택하면 된다. 설치환경 Widnow 10 Pro Postgresql Command Line Tools - 14.1 Postgresql Server - 13.1 https://www.enterprisedb.com/downloads/postgres-postgresql-downloads 접속하여 Window..
[Postgresql/Greenplum] Order by Collate/NULLS 를 이용하여 데이터 정렬기준 변경하기 DBMS 마이그레이션을 프로젝트를 수행하면 꼭 나오는 유형이 정렬기준이 다르게 적용되는 점이다. 정렬기준이 다르게 적용되면 쿼리나 어플리케이션의 버그처럼 보여지면서 변경된 DBMS의 신뢰도가 확 낮아진다는 점이다. (그러면 예전 DB는 잘됐어요. Greenplum 또는 Postgresql 못 쓰겠네 라는 얘기를 백만번쯤 듣게 될 것이다.) 예를 들면 1. MySQL,SqlServer DBMS 에서 Greenplum 으로 DBMS를 변경하여 테이블의 데이터가 같아도 영문데이터가 먼저 나와야 하는데 한글 데이터가 먼저 표시되는 경우 2. Greenplum/Postgresql DBMS에서 order by 쿼리를 실행한 데이터와 엑셀의 정렬 기능을 사용한 데이터를 비교하는데 순서가 맞지 않아 정렬을 다시 해야하..
[Postgresql/Greenplum] 테이블명 길이 63Byte 제한 Postgresql 테이블명 길이는 UTF-8 DB인 경우 63Byte 까지로 제한되어 있다.(영문/숫자 1Byte, 한글 3Byte) 확인버전 Postgreql 13.1 Greenplum 6.11(Postgresql 9.4) 테이블명만 제한되어 있는줄 알았으나 모든 오브젝트의 이름이 제한되어 있는 것을 공식사이트에서 확인할 수 있다. Postgresql 제한관련 정보 - https://www.postgresql.org/docs/13/limits.html 재미있는 사실은 재컴파일을 하면 길이제한 설정값을 조정할 수가 있는 것 같다. DB 캐릭터셋 확인 -- DB 캐릭터셋 확인 select datname , datctype from pg_database where datname = 'postgres' 문제..
postgresql/greenplum uptime을 to_char 함수로 보기편하게 변경하기 현재 서비스중인 postgresql/greenplum 을 현재 구동되었는지 확인할때 사용하는 개념이 uptime 이고 함수는 pg_postmaster_start_time() 를 이용하면 쉽게 확인할 수 있다. -- postgresql/greenplum start_time select pg_postmaster_start_time() -- postgresql/greenplum uptime select current_timestamp - pg_postmaster_start_time() as uptime 하지만 분초단위의 데이터가 표시되어 보기가 불편하다. to_char 함수를 이용하여 보기편하게 변경해보자. -- postgresql/greenplum uptime - to_char 를 이용 select to_c..
[Postgresql] general_series 함수를 이용한 더미데이터 만드는 방법 프로젝트를 수행하다 보면 특정 테이블에 대해서 기능/단위테스트 또는 성능측정/쿼리튜닝을 수행하는 경우가 발생한다. 개발자 또는 테스터가 일일히 테이터를 넣는 것은 한계가 있고 10만건, 100만건 이상의 대용량의 상황을 가정할 경우도 생기기 때문에 Postgresql DBMS에서 제공하는 general_series 함수를 이용하여 더미데이터, 테스트데이터를 만드는 방법을 추천한다. 실행환경 Postgresql 9.4 + Greenplum 6.11.x Postgresql 13 dbeaver 7.3.4 먼저 general_series(1, 10) 을 실행해서 어떻게 작동하는지 알아보자. select * from generate_series(1, 10) general_series 1, 10을 입력하면 1부터 ..
PGTune 을 이용하여 postgresql.conf 파라미터 설정하기 postgresql 구글링 중 postgresql 버전별로 postgresql.conf 권장 파라미터를 제공해 주는 사이트를 발견 https://pgtune.leopard.in.ua/ PGTune - calculate configuration for PostgreSQL based on the maximum performance for a given hardware configuration pgtune.leopard.in.ua Postgresql DB 버전, OS 유형, DB 유형, Memory, CPU 수, 최대 커넥션 수, 스토리지 유형을 선택하여 권장 파라미터 값을 확인할 수 있다. BareMetal 기준 - 웹어플리케이션 용도의 DB서버를 구성하는 기준으로 권장 파라미터 값을 확인해 보자. DB V..
Postgresql function 개발 및 예제 Postgresql pl/pgsql 을 이용하여 실제 프로젝트에서 쓰일 법한 function을 개발해 보자. ## 개발환경 Postgresql 9.4 pgAdmin 3 - 1.22.2 1. 사전준비 - CRUD를 수행할 테스트 테스트 테이블 생성 -- CRUD를 수행할 테스트 테이블 create table public.test_table( no integer not null primary key , title varchar(300) not null , create_date timestamp(0) not null , update_date timestamp(0) null ); -- 테스트 테이블 조회 select * from public.test_table; 2. INSERT Function 개발 테이블에 ..