QUERY PLAN
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
GroupAggregate (cost=21267.11..21286.98 rows=461 width=31) (actual time=1.711..1.712 rows=1 loops=1)
Group Key: *
\-\> Sort (cost=21267.11..21268.91 rows=719 width=35) (actual time=1.564..1.591 rows=719 loops=1)
Sort Key: *
Sort Method: quicksort Memory: 69kB
\-\> Nested Loop (cost=70.03..21233.00 rows=719 width=35) (actual time=0.483..1.454 rows=719 loops=1)
\-\> Index Scan using * (cost=0.28..8.30 rows=1 width=27) (actual time=0.017..0.018 rows=1 loops=1)
Index Cond: *
\-\> Bitmap Heap Scan on measurements m (cost=69.75..21213.91 rows=719 width=32) (actual time=0.240..0.994 rows=719 loops=1)
Recheck Cond: *
Filter: *
Rows Removed by Filter: 5241
Heap Blocks: exact=50
\-\> Bitmap Index Scan on * (cost=0.00..69.57 rows=6018 width=0) (actual time=0.224..0.224 rows=5960 loops=1)
Index Cond: *
Planning Time: 0.697 ms
**Execution Time: 1.766 ms**
(17 rows)
QUERY PLAN
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
GroupAggregate (cost=21267.11..21286.98 rows=461 width=31) (actual time=0.897..0.898 rows=1 loops=1)
Group Key: *
\-\> Sort (cost=21267.11..21268.91 rows=719 width=35) (actual time=0.795..0.831 rows=719 loops=1)
Sort Key: *
Sort Method: quicksort Memory: 69kB
\-\> Nested Loop (cost=70.03..21233.00 rows=719 width=35) (actual time=0.178..0.718 rows=719 loops=1)
\-\> Index Scan using * (cost=0.28..8.30 rows=1 width=27) (actual time=0.004..0.005 rows=1 loops=1)
Index Cond: *
\-\> Bitmap Heap Scan on measurements m (cost=69.75..21213.91 rows=719 width=32) (actual time=0.081..0.457 rows=719 loops=1)
Recheck Cond: *
Filter: *
Rows Removed by Filter: 5241
Heap Blocks: exact=50
\-\> Bitmap Index Scan on * (cost=0.00..69.57 rows=6018 width=0) (actual time=0.073..0.073 rows=5960 loops=1)
Index Cond: *
Planning Time: 0.336 ms
**Execution Time: 0.929 ms**
(17 rows)
QUERY PLAN
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
GroupAggregate (cost=21267.11..21286.98 rows=461 width=31) (actual time=0.873..0.873 rows=1 loops=1)
Group Key: *
\-\> Sort (cost=21267.11..21268.91 rows=719 width=35) (actual time=0.794..0.813 rows=719 loops=1)
Sort Key: *
Sort Method: quicksort Memory: 69kB
\-\> Nested Loop (cost=70.03..21233.00 rows=719 width=35) (actual time=0.168..0.717 rows=719 loops=1)
\-\> Index Scan using * (cost=0.28..8.30 rows=1 width=27) (actual time=0.004..0.004 rows=1 loops=1)
Index Cond: *
\-\> Bitmap Heap Scan on measurements m (cost=69.75..21213.91 rows=719 width=32) (actual time=0.071..0.457 rows=719 loops=1)
Recheck Cond: *
Filter: *
Rows Removed by Filter: 5241
Heap Blocks: exact=50
\-\> Bitmap Index Scan on *
(cost=0.00..69.57 rows=6018 width=0) (actual time=0.063..0.063 rows=5960 loops=1)
Index Cond: *
Planning Time: 0.304 ms
**Execution Time: 0.903 ms**
(17 rows)
\---------------------------------------------------------------------------------------------------------------
Time (mean ± σ): **98.1 ms** ± 28.1 ms \[User: 30.7 ms, System: 11.1 ms\]Range (min … max): 75.6 ms … 129.5 ms 3 runs
\---------------------------------------------------------------------------------------------------------------
Estou usando o hyperfine para avaliar o desempenho da minha consulta no PostgreSQL. Usei --runs 3
a opção de executá-lo três vezes. Como você pode ver, o tempo de execução para todas as três vezes em que executo a consulta leva 1,766, 0,929 e 0,903 ms, respectivamente. Minha pergunta é: por que a média é = 98,1 ms? O que isso significa representa? Porque não faz sentido que o tempo de execução esteja entre 0,9 ms - 1,7 ms, enquanto a média deles é de 98,1 ms. Testei executar essa mesma consulta no Postico e demorou 0,903 ms. Só estou curioso para saber o que a média representa se não representa o tempo médio de execução.
Tenho a impressão de que o Hyperfine mede a chamada completa de ponta a ponta, incluindo obter acesso ao contêiner, iniciar o psql e executar a consulta. Se você deseja medir apenas a consulta,
pgbench
pode ser uma ferramenta melhor para você. Pode receber um arquivo como entrada, com suas consultas específicas. Consulte https://www.postgresql.org/docs/current/pgbench.html