널리 사용되는 도구는 SQL 명령 EXPLAIN ANALYZE
이며, 답변에 대한 자세한 내용은 더 많은 옵션이 있습니다. 그러면 플래너 추정치와 실제 실행 시간이 포함 된 쿼리 계획이 출력됩니다.
왜 캐시를 지우고 싶습니까? 일반적으로 사용 사례는 캐시가 채워져있는 것입니다. 여전히 그 길을 가고 싶다면 SO에 대한 관련 답변이 있습니다 .
캐시를 재설정 하지 않으면 서 여러 반복으로 테스트하는 간단한 두 가지 방법이 있습니다.
간단한 UDF
EXPLAIN ANALYZE
SELECT f_myfunc(g) FROM generate_series (1,1000) AS t(g);
또는 임의의 입력-예에서 0과 5000 사이의 임의의 숫자 :
EXPLAIN ANALYZE
SELECT f_myfunc((random()*5000)::int) FROM generate_series (1,1000) AS t(g);
또는 실제 생활 테이블 :
EXPLAIN ANALYZE
SELECT f_myfunc(my_column) FROM my_tbl; -- LIMIT n
더 복잡한 함수 / 쿼리
CREATE FUNCTION f_test(ct int, sql text) RETURNS void AS
$func$
DECLARE
i int;
BEGIN
FOR i IN 1 .. $1 LOOP
EXECUTE sql; -- not safe against SQLi!
END LOOP;
END
$func$ LANGUAGE plpgsql
요구:
EXPLAIN ANALYZE
SELECT f_test(100, $x$SELECT * from MADLIB.gp('mock3', '{x1, x2, x3}', '{y1}', 100,20, 3)$x$
조심 : 실제로 쿼리가 실행됩니다!
주의 : 공용으로 적합하지 않습니다. 가능한 SQL 주입.
필요한 경우 임의의 매개 변수를 사용할 수 있습니다. 의 USING
조항에 해당 될 수 EXECUTE
있습니다.
pgbench
; 사용자 지정 스크립트를 사용하여 원하는 것을 수행 할 수 있습니다. 래퍼 셸 스크립트를 사용하여 Pg를 중지했다가 다시 시작하고 OS 디스크 캐시를 삭제하면 필요한 대부분을 얻을 수 있습니다.