Database/DB (41) 썸네일형 리스트형 디비 개선 작업 + cluster 사건의 발단.DB CPU가 100%에서 내려오질 않는다. (심지어 락 걸린것도 아님)로그 테이블을 조회하는 쿼리였는데, 요 몇일 사용자가 늘어서 그런지 집계할때에 자원을 계속 소모해서 하루종일 알림이 울렸다.. 일단 쿼리 explain 실행 계획을 데이터를 살펴보았는데 특별히 나쁜 점은 없지만 인덱스를 잘못타고 있었고, 정렬이 필요한 쿼리에서 bitmap scan을 통해 읽은 다음 다시 재정렬하는 과정을 거치고 있었다.(메모리 낭비- work_mem를 잡아먹는 쿼리가 된다.) 일단 급한 CPU사용량은 쿼리 수정과 함께 인덱스를 추가해서 일단락되었지만, 앞으로도 데이터가 계속 쌓이는 로그 테이블이여서 bitmap csan을 seq scan으로 바꾸고 싶었다. -> Nested Loop (cost=22.. postgresql 한글 order by의 기준 select * from store order by store_nm; sql로 분명히 한글 정렬했는데, 이상하게 정렬이 되어버렸다. 보는 바와 같이 위쪽은 가나다순으로 잘 나오다가 자릿수가 더 많은 stirng에서 다시 내림차순으로 정렬이 되고 있었다. postgre에서는 정렬이 어떤 기준으로 되는걸까? PostgreSQL 시스템 카탈로그는 PostgreSQL의 관리 시스템이 사용하는 테이블에서 데이터베이스 및 테이블 등의 정보를 다음의 칼럼으로 관리한다. 위의 칼럼중 우리가 볼 칼럼은 datcollate이다. 다음의 쿼리를 실행하면 데이터베이스 마다 설정된 값을 볼수 있다. select datname, datdba, encoding, datcollate, datctype from pg_database;.. postgresql SQL Error [42P10]: ERROR: there is no unique or exclusion constraint matching the ON CONFLICT specification 문제점 다음과 같이 insert on conflict 구문일때 실행시 에러가 발생했다. INSERT INTO frame (id, chnl_id, frame_body_cntt, create_at, updated_at) VALUES ('A0016','A','오렌지', now(), now()) ON CONFLICT (id) DO nothing; 해결책 공식문서를 보자!! https://www.postgresql.org/docs/current/sql-insert.html INSERT INSERT INSERT — create new rows in a table Synopsis [ WITH [ RECURSIVE ] with_query [, ...] ] INSERT … www.postgresql.org on conf.. 파티셔닝 실습 - postgresql 1) 선언적 파티션 선언적 파티션 구성 실습은 postgres 10.X 이상에서만 가능하다. 9.* 버전의 경우 테이블 파티션 명령어가 없기 때문에 2) Partitioning Using Inheritance(하단 참조)를 사용해야 한다. select version(); 1. 파티션 테이블 생성 대형 아이스크림 회사를 위한 데이터베이스를 구축한다고 가정합니다. 이 회사는 매일 최고 기온과 각 지역의 아이스크림 판매량을 저장할 테이블을 다음과 같이 예정이다. 1 2 3 4 5 6 CREATE TABLE measurement ( city_id int not null, -- 도시 id logdate date not null, -- 날짜 peaktemp int, -- 최고 온도 unitsales int -- 판.. 파티션 개념 DB 운영 방식 한대의 DB 서버에서 운영한다. 이중화 : 한대의 서버만 운영하니까 불안해, DB 서버가 죽으면 서비스가 되지 않으니까 DB 서버를 두대로 만들자. 레플리카 : 서버 두대로도 부족한 거 같아. 한대가 죽으면, 한대로 운영하는 동안 백업을 할 수가 없어 레플리카는 기본적으로 서버 4대가 한 묶음이다. 파티션 : 하나의 테이블에 너무 많은 데이터가 있어서 느려졌어, 관리도 힘들어, 테이블을 나누지만 하나의 테이블처럼 사용하자 샤딩 : 하나의 디비에 너무 많은 데이터가 있어서 느려졌어, 파티션으론 한계가 있으니, 디비를 복사해서 하나의 디비처럼 사용하자 proxySQL : 서버 여러대를 하나의 서버처럼 사용하고 싶어 파티션 데이터를 별도의 테이블로 분리해서 저장하지만 사용자 입장에서는 여전히 .. 객체 지향 데이터베이스 (OODB / object-oriented Database) 객체지향 데이터베이스 객체 지향 데이터베이스는 객체 지향 패러다임을 사용하는 객체지향 프로그래밍에서 영향을 받아 생성되었다. 객체지향 프로그래밍과 마찬가지로 실세계의 객체를 DB로 표현하기 위해 만들어졌었다. 객체 표현을 관리하는 데이터베이스 기술, ODMG 2.0 표준으로 기술되어 있다. 객체 모델의 핵심 기능은 다음과 같습니다. 속성 및 관계 개체 속성 개체 작업 (동작) 및 예외 다중 상속 범위 및 키 개체 이름 지정 Atomic, structured and collection literals List, set, bag and array collection classes 동시성 제어 및 객체 잠금 객체 관계 데이터베이스를 위한 데이터 언어 표준으로 ISO에서 제시한 SQL3가 있다. 참고로 객체지향.. LeetCode sql 문제, 유저별 월별 집계 https://leetcode.com/problems/reformat-department-table/ Reformat Department Table - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 쉬운 문제인데, 푸는데 너무 오래 걸렸다. sql은 언제나 수행이 부족하다. 아래와 같이 테이블이 있을 때 Department table: +------+---------+-------+ | id | revenue | month | +------+---------+-.. postGIS 쿼리 튜닝 자체 서버에서 돌고 있던 postgreSQL을 aws의 RDS로 이관하는 작업을 하였다. RDS로 이관 후 CPU가 99%에서 내려오질 않는 현상을 발견했다. 해당 테이블은 데이터도 적을 뿐더러, 기존 자체 서버의 성능이 워낙 좋았던 탓에 누구도 쿼리를 손보지 않고 돌리고 있었던 것으로 판단하였다. (기존 서버에서는 cpu성능이 좋아서 30%을 넘지 않았다) 쿼리 변경전 RDS CPU 모니터링 상황 해당 쿼리는 GIS 관련 쿼리로 하나의 포인트 지점에서 가장 가까운 5곳에 해당하는 데이터를 가져오는 쿼리였다. 테이블 : wstn 테이블내 데이터 갯수 : 1567 공간칼럼이름 : loc 기존 쿼리는 ST_Distance_Sphere를 이용해서 작성되었었다. 1. ST_Distance_Sphere 두 개의 .. 이전 1 2 3 4 ··· 6 다음