안녕하세요. Postgresql을 잘 사용하고 있는 유저 입니다.
빅데이터쪽 연계만 하다가 이번에 Postgresql Query를 사용하려 하니 익숙하지가 않네요.
현재 사용자가 Query를 날리면 사용했던 쿼리의 데이터 사이즈를 알고 싶은 상황 입니다.
예를 들어 test_table의 사이즈가 1억건에 10GB이고
SELECT a, b, c, d FROM defaut.test_table WHERE a = '남자' ORDER BY b DESC Query를 수행했을 때
Query 결과가 7300만건이라고 하면, 위 query 결과의 사이즈를 측정한 postgresql query를 만들 수 있을까요?
저는최종적으로 아래와 같은 결과를 도출하고 싶은 상황 입니다.
디비명 테이블명 사용자명 IP 쿼리 시작 시간 쿼리 종료 시간 쿼리 수행 쿼리 사이즈 상태
default test_table gtuf 192.168.1.1 2018-11-01 17:33 2018-11-01 17:33 SELECT a, b, c, d FROM defaut.test_table WHERE a = '남자' ORDER BY b DESC 7000MB FINISHED
default test_table user2 192.168.20.1 2018-11-01 17:33 2018-11-01 17:33 SELECT a, b, c, d FROM defaut.test_table WHERE a = '여자' ORDER BY b DESC 3000MB RUNNING
현재 보고 있는 postgresql 테이블은 pg_stat_statements, pg_stat_activity 테이블 이며,
pg_stat_activity 테이블에서는 디비명, 테이블명, 사용자명, IP, query, 수행 시간 등 대부분의 정보를 포함하고 있고,
pg_stat_statements 테이블에서는 query, share_blks_hit, read 등 query 수행 시 작업한 량을 가지고 있는 것 같은데 현재 조합 및 계산을 생각하지 못하고 있는 상황이며,
두 테이블을 조인해서 가져오려고 했으나, pg_stat_statements 테이블에서는 사용자가 보낸 쿼리를 수행하기 위한 Step 별 query까지 가지고 있어 dbid와 userid로 조인 했을때 보기가 어려운 상황 입니다.
제가 지금까지 본 상황을 나열한 거라 이해하기 어려우실 수도 있으니 양해 부탁 드리며,
위와 같은 결과를 도출해내기 위한 조언을 해주시면 감사하겠습니다.
|