수색…


간단한 통계 : min (), max (), avg ()

테이블 열의 값에 대한 간단한 통계를 결정하기 위해 집계 함수를 사용할 수 있습니다.

individuals 테이블이 :

이름 나이
앨리 17
아만다 14
알라나 20

이 문장을 작성하여 최소값, 최대 값 및 평균값을 얻을 수 있습니다.

SELECT min(age), max(age), avg(age)
FROM individuals;

결과:

최소 최대 평균
14 20 17

string_agg (표현식, 구분 기호)

string_agg() 함수를 사용하여 구분 기호로 구분 된 문자열을 연결할 수 있습니다.

individuals 테이블이 :

이름 나이 국가
앨리 15 명 미국
아만다 14 미국
알라나 20 러시아 제국

SELECT ... GROUP BY 문을 써서 각 국가의 이름을 얻을 수 있습니다.

SELECT string_agg(name, ', ') AS names, country 
FROM individuals 
GROUP BY country;

string_agg() 는 집계 함수이기 때문에 GROUP BY 절을 사용해야합니다.

결과:

이름 국가
알리, 아만다 미국
알라나 러시아 제국

더 많은 PostgreSQL 집계 함수가 여기에 설명되어 있습니다.

regr_slope (Y, X) : (X, Y) 쌍에 의해 결정되는 최소 제곱 피트 선형 방정식의 기울기

regr_slope (Y, X)를 사용하는 방법을 설명하기 위해 실제 문제에 적용했습니다. Java에서 메모리를 올바르게 정리하지 않으면 쓰레기가 걸려서 메모리를 가득 채울 수 있습니다. 매 시간마다 다른 클래스의 메모리 사용률을 덤프하고 분석을 위해 포스트 그레스 데이터베이스에로드합니다.

모든 메모리 누수 후보자는 더 많은 시간이 지남에 따라 더 많은 메모리를 소비하는 경향이 있습니다. 이 추세를 플로팅하면 선이 위로 올라가고 왼쪽으로 향하는 것을 상상할 수 있습니다.

    ^
    |
s   |  Legend:
i   |  *  - data point
z   |  -- - trend
e   |
(   |
b   |                 *
y   |                     --
t   |                  --
e   |             * --    *
s   |           --
)   |       *--      *
    |     --    *
    |  -- *
   --------------------------------------->
                      time

힙 덤프 막대 그래프 데이터 (얼마나 많은 메모리를 소비하는지에 대한 클래스 매핑)가있는 테이블이 있다고 가정합니다.

CREATE TABLE heap_histogram (
    -- when the heap histogram was taken
    histwhen timestamp without time zone NOT NULL, 
    -- the object type bytes are referring to
    -- ex: java.util.String
    class character varying NOT NULL,
    -- the size in bytes used by the above class
    bytes integer NOT NULL
);

각 클래스의 기울기를 계산하려면 클래스별로 그룹화하십시오. HAVING 절> 0은 양의 기울기 (선이 위로 가고 왼쪽)가있는 후보 만 얻는 것을 보장합니다. 슬로프를 내림차순으로 정렬하여 맨 위에 가장 큰 메모리 증가율을 가진 클래스를 얻습니다.

-- epoch returns seconds
SELECT class, REGR_SLOPE(bytes,extract(epoch from histwhen)) as slope
    FROM public.heap_histogram
    GROUP BY class
    HAVING REGR_SLOPE(bytes,extract(epoch from histwhen)) > 0
    ORDER BY slope DESC ;

산출:

         class             |        slope         
---------------------------+----------------------
 java.util.ArrayList       |     71.7993806279174
 java.util.HashMap         |     49.0324576155785
 java.lang.String          |     31.7770770326123
 joe.schmoe.BusinessObject |     23.2036817108056
 java.lang.ThreadLocal     |     20.9013528767851

출력에서 우리는 java.util.ArrayList의 메모리 소비가 초당 71.799 바이트로 빠르게 증가하는 것을 볼 수 있으며 잠재적으로 메모리 누수의 일부입니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow