Công cụ được sử dụng rộng rãi là lệnh SQL EXPLAIN ANALYZE
, có thể có nhiều tùy chọn hơn để biết thêm chi tiết trong câu trả lời. Điều đó đưa ra kế hoạch truy vấn với các ước tính kế hoạch cộng với thời gian thực hiện thực tế.
Tại sao bạn muốn xóa bộ nhớ cache? Trường hợp sử dụng thường có nhiều khả năng là bộ đệm được điền. Nếu bạn vẫn muốn đi theo con đường đó, đây là câu trả lời liên quan về SO .
Không đặt lại bộ đệm, đây là hai cách đơn giản để kiểm tra với nhiều lần lặp:
UDF đơn giản
EXPLAIN ANALYZE
SELECT f_myfunc(g) FROM generate_series (1,1000) AS t(g);
Hoặc với đầu vào ngẫu nhiên - các số ngẫu nhiên trong khoảng từ 0 đến 5000 trong ví dụ:
EXPLAIN ANALYZE
SELECT f_myfunc((random()*5000)::int) FROM generate_series (1,1000) AS t(g);
Hoặc với một bảng thực tế cuộc sống:
EXPLAIN ANALYZE
SELECT f_myfunc(my_column) FROM my_tbl; -- LIMIT n
Các hàm / truy vấn phức tạp hơ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
Gọi điện:
EXPLAIN ANALYZE
SELECT f_test(100, $x$SELECT * from MADLIB.gp('mock3', '{x1, x2, x3}', '{y1}', 100,20, 3)$x$
Cẩn thận : Truy vấn được thực hiện!
Cẩn thận : Không phù hợp cho sử dụng công cộng. Có thể tiêm SQL.
Một lần nữa, bạn có thể sử dụng các tham số ngẫu nhiên nếu cần. Có thể với USING
mệnh đề của EXECUTE
.
pgbench
; bạn có thể chạy nó với các tập lệnh tùy chỉnh để thực hiện một số điều bạn muốn. Với một tập lệnh shell shell để dừng và khởi động lại PG và để xóa bộ đệm đĩa hệ điều hành, bạn có hầu hết những gì bạn cần.