본문 바로가기
728x90
반응형

전체보기418

[PostgreSQL] SQL 파일 실행 postgres 계정에서 실행합니다. [root@localhost ~]$ su - postgres 비밀번호 입력 : [postgres@localhost ~]$ [postgres@localhost ~]$ psql -U postgres -d postgres -a -f /var/lib/pgsql/11/database.sql psql -U [database_user] -d [database_name] -a -f [sql file 절대경로] * postgres 계정으로 실행하면 관리자 권한이 없어 파일이 검색되지 않거나 찾지 못하는 경우가 많으니 postgres가 소유권을 가진 폴더로 sql 파일을 이동시켜 놓은 후 pwd로 정확한 현재 경로 확인해서 psql 명령어 실행하는게 간편하고 빠릅니다. 출처: http.. 2021. 7. 16.
[PostgreSQL] 문자열 함수 (자르기, 붙히기, 치환 등) 문자열 함수 btrim : 문자열의 시작과 끝 양쪽에 지정된 문자들을 제거 char_length : 문자열의 길이를 반환 character_length : 지정된 문자열의 길이를 반환 || : 2개의 문자열을 합하여 반환 initcap : 문자열 중 첫번째 문자는 대문자로 변환하고 나머지는 소문자로 변환 length : 문자열의 길이를 반환 lower : 지정된 문자열을 모두 소문자로 변환 lpad : 지정된 문자열을 원하는 길이로 맞추는데, 이때 부족한 문자를 왼쪽에 채움 ltrim : 문자열의 왼쪽에서 지정된 모든 문자를 제거 position : 문자열에서 지정된 문자열이 존재하는 인덱스값을 반환 repeat : 문자열을 원하는 만큼 반복해서 반환 replace : 기존의 문자열을 구성하는 부분 문자.. 2021. 7. 16.
[PostgreSQL] 사용하지 않는 인덱스 조회 및 성능 개선 인덱스(Index) 혹은 색인은 테이블 설계시 많이 고민하는 부분이고 성능 향상에 많은 도움을 주고 있지만 프로그램의 설계 변경 혹은 기능 개선등 여러 상황에 따라 사용하지 않는 인덱스가 발생하게 됩니다. 여러 상황 때문에 현재는 사용하지 않는 인덱스를 찾아보기 위한 간략한 정리 내용입니다. 인덱스 구조 이해를 위한 예시 인덱스는 지정한 컬럼에 대한 매핑 정보를 가지고 있습니다. 사용하지 않는 인덱스를 찾아봐야되는 이유 보통 쿼리 튜닝을 위해 운영중인 데이터베이스에서 EXPLAIN 명령어를 많이 사용하고 필요시 인덱스 추가는 생기지만 삭제는 거의 없을거라 생각됩니다. 만약 그렇다면 극단적으로 생각했을때 오래된 프로그램 일 수록 추가된 인덱스는 많지만 삭제된 인덱스가 없다는건 불필요한 인덱스도 많을수 있다.. 2021. 7. 16.
[PostgreSQL] 암호화 함수 사용 (pgcrypto) 1. 확장 모듈 설치 create extension pgcrypto; enterprisedb 계정으로 해당 모듈을 설치할 스키마 선택 후 실행. 암호화 관련 함수 생성 2. Raw encryption functions convert_to/convert_from : 문자열 변환/복원 encode/decode : 16진수 인코딩/디코딩 encrypt/decrypt : 암호화/복호화 예제) -> ENC_KEY는 실제 사용할 암호화KEY로 대체해야 함. * 암호화 : utf8로 변환한 후, 암호화키로 'aes'알고리즘을 사용하여 암호화한 후, 그 값을 16진수(hex)로 encoding함 select encode(encrypt(convert_to('홍길동','utf8'),'ENC_KEY','aes'),'hex'.. 2021. 7. 16.
[PostgreSQL] 배열형 컬럼 다루기 PostgreSQL 배열형 컬럼 선언 - 데이터 타입 선언 시 ' [] '만 붙이면 배열형 컬럼이 됨 ● 배열형 컬럼 생성 CREATE TABLE member( id serial PRIMARY KEY, name varchar(20), age integer, hobby varchar(100)[] -- 배열형 컬럼 ); ● 배열형 컬럼에 데이터 추가하기 -- 배열형 데이터를 {} 안에 ","로 구분해서 입력한다. INSERT INTO member (name, age, hobby) VALUES('kim', 10, '{book, music}'); -- 데이터를 하나만 넣을 때는 위와 같이 쓴다. INSERT INTO member (name, age, hobby) VALUES('lee', 12, '{game}').. 2021. 7. 16.
[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.
[ 조은글 5188호 - 지금(now)과 여기(here) ] 합천 해인사 장경판전 주련(기둥에 연이어 걸어놓은 글판)에는 “원각도량하처(圓覺度量何處)”라는 글이 새겨져 있다. “깨달음의 도량 즉 행복한 세상은 어디인가?” 라는 뜻입니다. 그 질문에 대한 답은 맞은 편 기둥에 새겨져 있습니다. “현금생사즉시(現今生死卽時)” “당신의 생사가 있고 당신이 발 딛고 있는 지금 이곳이다.” 지금 살고있는 이 순간, 이곳에 충실하라는 뜻입니다. 삶의 모든 순간은 첫 순간이면서 마지막 순간이고, 유일한 순간입니다. 지금 이 순간은 영원할 수도 있지만 마지막이 될 수도 있는 순간입니다. 평생 일만 하고 사는 바보들이 놓치고 사는 것이 지금입니다. 매 순간을 생애의 마지막인 것처럼 사십시요. 과거에 연연하지 말고, 내일 일을 오늘 걱정하지 마십시요. 어제의 비로 오늘의 옷을 적시.. 2021. 7. 15.
[ 조은글 5187호 - 누군가를 믿는다는 것의 위대함 ] 미국에 사는 한국인 부부가 있다. 남자는 26살인데 운동선수다. 재능은 있지만, 아직 군대를 다녀오지 않은 상태이고, 팔꿈치 수술을 받는 등 안 좋은 일만 가득한 상황이다. 게다가 아이를 포함해 4식구이지만 월급이 100만 원 수준이라, 같은 팀의 세 선수가 함께 월세를 살 정도로 경제적으로도 힘들다. 결국 가족이 겪는 고통을 더는 볼 수 없었던 그는, 아내에게 이렇게 말한다. "한국에 돌아가자. 이젠 힘들 것 같아." 그러자 아내는 단호한 얼굴로 이렇게 응수한다. "나랑 애들 신경 쓰지 말고, 여기서 당신이 할 거 해. 당신이 처음 가졌던 꿈을 이루라고. 여기에 꿈을 이루려고 온 거잖아? 당신에게 방해된다면, 우리는 한국 가면 되니까 당신은 꿈을 포기하지 마!" 당시 아내는 건강도 안 좋은 상태였다. .. 2021. 7. 13.
[ 조은글 5186호 - 꼰대처럼 늙지 않는 ‘12345 법칙’ ] 어떤 마음으로 어떻게 행동해야 ‘어른’ 소리 들을까? “너의 젊음이 너의 노력으로 얻은 상이 아니듯, 내 늙음도 내 잘못으로 받은 벌이 아니다" 영화 은교에 등장해 유명해진 미국 시인 시어도어 루스케의 말처럼, 인간은 누구나 늙는다. 하지만 그렇다고 해서 모두 ‘성숙하게’ 늙는 것은 아니다. 마음 가는대로 거침없이 행동하고 자기 주장만 옳다고 큰소리치면 꼰대라고 손가락질 받기 십상이다. 따라서, 멋지게 늙는 법에도 요령이 필요하다. 창의경영연구소 조관일 대표는 자신의 채널 ‘조관일TV’에서 ‘매력있게 늙어가는 5가지 법칙’에 대해 이야기했다. 각 계명의 첫 음을 따 이름 붙인 ‘12345(일이삼사오) 법칙’은 다음과 같다. 1. 일부러 자주 웃어라! 저 같은 경우도 칩거하면서 하루 종일 연구만 하던 시절.. 2021. 7. 13.
[ 조은글 5185호 - 뻐꾸기가 둥지안에서 살지않는 이유 ] 여러 사람들을 이기고 마지막 문제에 도전하게 된 영구. 퀴즈쇼 진행자가 마지막 퀴즈를 냈다. "마지막 문제를 맞추게 되면 총 상금 1억원을 타게 됩니다. 하지만 문제를 맞추지 못하면 여태까지 이겼던 상금 5천만원은 자동적 으로 사라지게 됩니다. 마지막 퀴즈에 도전 하시겠습니까?" 옆에 있던 아는 사람들이 포기하고 5천만원만 챙기라고 권했다. 진행자도 다시 물었다. "도전 하시겠습니까?" 그러나 영구는 과감하게 도전 하겠다고 했다. 문제가 나왔다. "다음 새들 중에서 둥지에서 살지 않는 새는 무엇입니까?" 1) 참새 2) 제비 3)뻐꾸기 4)비둘기 진행자가 문제를 내고 난 후에 다시 말했다. "지금이라도 그만 두고 여태까지 상금을 챙기셔도 됩니다." 긴장된 순간...영구가 답을 맞추겠다고 했다. "맞추지 .. 2021. 7. 13.
[ 조은글 5184호 - 외상 장부 ] 중국 당나라에 ‘송청’이라는 명의가 있었습니다. 그가 지어주는 약으로 완치가 되거나, 병의 예후가 좋았기 때문에 그를 찾는 사람들은 날로 늘어만 갔습니다. 또한 그는 돈이 없는 병자가 오면 돈을 받지 않고, 외상 장부에 이름만 올리고 치료와 약을 지어 주었습니다. 그런데 외상 장부에 이름이 가득 차면 그냥 장부를 불에 태워버리곤 했습니다. 어느 날 한 사람이 물었습니다. “선생님은 왜 치료를 해주고 약을 지어주면서, 돈을 받으려는 노력은 하지 않는 것입니까? 거기에 장부까지 태우면 영영 돈을 받지 못하여 너무 큰 손해를 보는 것이 아닙니까?” 그러자 송청은 대답했습니다. “제가 40년간 외상 장부를 태웠지만, 단 한 번도 크게 손해를 본 적이 없습니다. 물론 약값을 주지 않는 사람도 있지만, 오히려 저에.. 2021. 7. 13.
[ 조은글 5183호 - 세상에서 가장 더러운 것 ] 한 사원에 고명한 수도사가 살고 있었다. 그런데 공교롭게도 그 사원에서 얼마 떨어지지 않은 거리에 매춘부의 집이 있었다. 사원은 성스러웠으나 매춘부의 집은 건달들이 쉬임없이 들락거렸다. 어느날 수도사는 매춘부를 불러다놓고 호되게 꾸짖었다. "그대는 밤낮으로 죄를 짓고 있다. 도대체 어떻게 그 죄의 대가를 받으려고 그러느냐." 가난한 매춘부는 눈물을 흘리며 참회하였다. 신에게 간절히 기도하며 용서를 빌었다. 그러나 무식하고 재주없는 이 여인은 다른 직업을 구할 수가 없었다. 사내들의 출입은 그치지 않았다. 수도사는 매춘부의 집으로 사내들이 들어갈 때마다 뜰에 돌을 하나씩 주워 모으기 시작했다. 날이 감에 따라 돌무더기가 커갔다. 하루는 수도사가 매춘부한테 돌무더기를 가리키며 질책했다. "여인아, 이 돌무더.. 2021. 7. 7.
728x90
반응형


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

loading