Yaygın olarak kullanılan araç EXPLAIN ANALYZE
, muhtemelen cevapta daha fazla ayrıntı için daha fazla seçenek içeren SQL komutudur . Bu, sorgu planını, planlayıcı tahminleri artı gerçek yürütme süreleriyle birlikte verir.
Neden önbelleği temizlemek istiyorsun? Genel olarak daha muhtemel kullanım durumu, önbelleğin doldurulmasıdır. Hala o rotaya gitmek istiyorsanız, burada SO ile ilgili bir cevap .
Değil önbellek sıfırlama, burada birçok yinelemeleriyle testine iki basit yolu vardır:
Basit UDF
EXPLAIN ANALYZE
SELECT f_myfunc(g) FROM generate_series (1,1000) AS t(g);
Veya rasgele girdiyle - örnekte 0 ile 5000 arasında rasgele sayılar:
EXPLAIN ANALYZE
SELECT f_myfunc((random()*5000)::int) FROM generate_series (1,1000) AS t(g);
Veya gerçek bir yaşam tablosu ile:
EXPLAIN ANALYZE
SELECT f_myfunc(my_column) FROM my_tbl; -- LIMIT n
Daha karmaşık fonksiyonlar / sorgular
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
Aramak:
EXPLAIN ANALYZE
SELECT f_test(100, $x$SELECT * from MADLIB.gp('mock3', '{x1, x2, x3}', '{y1}', 100,20, 3)$x$
Dikkatli : Sorgu aslında yürütülür!
Dikkatli : Halka açık kullanım için uygun değildir. Olası SQL enjeksiyonu.
Yine, gerekirse rastgele parametreleri kullanabilirsiniz. Muhtemelen USING
madde ile EXECUTE
.
pgbench
; ne istediğinizi yapmak için özel komut dosyaları ile çalıştırabilirsiniz. Pg'yi durdurup yeniden başlatmak ve işletim sistemi disk önbelleğini bırakmak için bir sarmalayıcı kabuk komut dosyasıyla ihtiyacınız olanın çoğuna sahipsiniz.