본문 바로가기

Database

(19)
DBeaver Heap memory 늘리기 Database client tool로 DBeaver를 많이 사용하고 있는데 용량큰 Script 실행을 하거나 여러 작업을 많이 할 경우 java heap space 부족 메세지를 종종 보게 된다. 이럴 경우에는 Tool 실행시 vmarg를 넘겨주면 실행시 heap memory를 정해준 size만큼 설정하게 할 수 있다. 실행시 인자는 아래와 같이 줄 수 있다. -vmargs -Xms4096m (구동시 확보되는 최소 메모리) -vmargs -Xmx8192m (최대 사용 메모리) 아래는 윈도우 바로가기 아이콘에서 실행 명령어에 최소 구동 메모리 4096m을 설정한 모습이다. 현재 할당된 Heap memory 를 확인하려면 DBeaver -> window -> Preferences -> Genaral 에서 ..
[Postgresql] Synology Docker Postgresql 설치하기 시놀로지 720+ 도커 상에서 Postgresql 을 설치해보고 간단하게 데이터베이스, 스키마, 테이블을 만들어본다. 우선 시놀로지 도커 -> Registry 로 들어가서 postgres 로 검색하고 아래 이미지를 다운로드 받는다. 다운로드를 실행하고 완료되면 도커 -> Image 항목에 다운로드 목록에 보이게 된다. 이미지를 선택한 후 Launch를 수행해서 Container 를 만들어 본다. Network설정은 기본 bridge로 선택된 것 확인하고 다음으로 진행한다. 일반 설정은 그대로 가고 하단 Advanced Settings으로 들어간다. 초기 Launch 시 사용할 root 계정을 아래와 같이 입력해준다. 로컬 네트웍에서 시놀로지 도커 컨테이너에 접속할 Port를 지정해준다. 최종 설정 Sum..
DBeaver 설치 및 DB 연결 DB 접속 Client 툴로 Oracle, Postgresql, MariaDB 등 현존하는 대부분의 DB 연결을 지원하는 DBeaver 툴을 설치해보고 DB 연결은 어떻게 설정하는지 확인해보고자 한다. 우선 공식 설치 파일은 아래 페이지로 가서 다운로드 받는다. https://dbeaver.io/download 원하는 플랫폼의 인스톨러를 다운로드 받고 설치한다. (기본 설정값으로 설치 진행. Next 계속 입력) Postgresql DB 연결 DBeaver 툴 설치 후 Tool 상에서 Postgresql DB 연결을 위해 jdbc 드라이버 설정을 해준다. 우선 Postgresql 용 jdbc 드라이버를 다운로드 받는다. https://jdbc.postgresql.org/download 앞서 설치한 DBe..
[Postgresql] Sql 쿼리 수행 시간 늘리기 Postgresql 에서 수행시간이 긴 쿼리를 실행하면 쿼리 수행시간을 초과했다는 메세지가 출력 될 때가 있다. Postgresql에 기본으로 설정된 쿼리 수행시간이 있는데 이 기준을 넘어서서 쿼리를 수행했기 때문이다. 설정값은 아래와 같이 Postgresql DB 쿼리를 수행하면 볼 수 있다. 아래는 pg_settings 테이블에서 statement로 시작하는 레코드를 검색한 결과이다. 결과는 기본 30초로 설정되어 있는것을 볼 수 있다. 설정된 Timeout값을 현재 연결된 세션에서 변경하고자 한다면 다음 명령어를 수행하면 된다. 아래는 10분으로 타임아웃값을 설정한 예시이다. 위에서 설정한대로 적용되었는지 확인하기 위해 다시한번 pg_settings값을 조회해 본다. 10분으로 타임아웃 값이 변경되..
[Postgresql] max_connection 늘리기, 현재 connection 확인 (windows) postgresql db 를 실행하다 보면 connection pool이 다 차서 애플리케이션에서 연결을 못한다는 메세지를 볼 때가 있다. 현재 설치되어 있는 postgresql db의 설정값들을 쿼리로 쉽게 알아볼 수 있다. 현재 DB 설정값 조회 Heidisql 등의 DB Client 툴을 실행 시키고 Postgresql db에 접속 한다. 아래 쿼리를 수행하면 현재 설정되어있는 DB system 설정을 볼 수 있다 SELECT * FROM pg_settings; 여러가지 설정 중에 max_connections 값이 최대 동시 접속수를 지정하는 값이다. 기본값은 100으로 설정되어 있음을 볼 수 있다. 현재 사용되는 connection 정보 조회 최대 동시 접속 값은 찾았으나 여러 어플리케이션 수행중..
[Mybatis] Mybatis interceptor 활용하기 Mybatis로 DB mapper를 수행하는데 interceptor를 등록하면 DB 쿼리 실행 전후로 등록한 interceptor를 수행해서 사전 작업을 할 수 있다. 예를 들어 조회 쿼리 수행시 Paging 처리를 일괄적으로 interceptor에서 할 수 도 있고 Mybatis 쿼리 인자로 세션 정보를 전역에서 설정해서 모든 쿼리마다 해당 세션 값을 넣을 필요 없이 만들 수도 있다. Mybatis interceptor 설정 방법 mybatis-config.xml 생성 아래와 같이 mybatis-config.xml 설정 파일을 생성한다. 기존에 이미 사용중이라면 plugins 밑에 interceptor class를 등록해준다. Interceptor Class 정의 Interceptor Class를 만들..
[Postgresql] RETURNING 활용 예제 Postgresql의 RETURNING 문을 사용하면 insert, delete, update 시 수행된 행을 return 받을 수 있고 이를 응용하여 여러 step을 하나의 쿼리로 수행해 볼 수 있다. 단일 Insert 예제 테스트 전 테이블 내용 CREATE TABLE users ( user_id serial PRIMARY KEY, NAME VARCHAR(20) ) CREATE TABLE users_backup ( user_id serial PRIMARY KEY, NAME VARCHAR(20) ) Insert returning 예제 WITH rows AS ( INSERT INTO users VALUES (10, '테스트') RETURNING user_id ) INSERT INTO users_backu..
[Postgresql] Upsert 구현 (insert ~ on conflict) DB 구현시 많이 쓰는 패턴중에 하나가 해당 row가 있으면 update, 없으면 insert를 하는 패턴일 것이다. Oracle의 경우는 merge ~ into 구문을 통해 한번의 명령으로 해당 로직을 구현할 수 있다. Postgres에서도 동일한 명령이 있지 않을까? 아래와 같이 insert ~ on conflict 구문을 활용하면 구현할 수 있다. 문법은 다음과 같다. INSERT INTO [TABLE] (COLUMN1, COLUMN2, ...) VALUES (VALUE1, VALUE2, ...) ON CONFLICT ([column_name / ON CONSTRAINT constraint_name/ WHERE predicate]) [DO NOTHING] [DO UPDATE SET column1 =..