Расхождение между Объясненным Анализом Фактической Сканированной Строки и Полной Строкой в ​​Таблице - PullRequest
0 голосов
/ 24 апреля 2019

Недавно мы столкнулись с проблемой производительности в кластере Production Aurora PG.Это ОБЪЯСНИТЕЛЬНЫЙ АНАЛИЗ запроса.

Большую часть времени тратится на

Bitmap Index Scan on job_stage  (cost=0.00..172.93 rows=9666 width=0) (actual time=238.410..238.410 rows=2019444 loops=1)
, где сканируется 2019444.Однако меня беспокоит то, что в этой таблице только 70 тыс. Строк.Автовакуум включен, но RDS недавно был перегружен из-за другой проблемы.Мы подозреваем, что автовакуум был позади.Если это так, объяснит ли это наше наблюдение, что отсканированная строка превышает фактическую строку в таблице?
Nested Loop  (cost=229.16..265.28 rows=1 width=464) (actual time=239.815..239.815 rows=0 loops=1)
  ->  Nested Loop  (cost=228.62..252.71 rows=1 width=540) (actual time=239.814..239.814 rows=0 loops=1)
        Join Filter: (job.scanner_uuid = scanner_resource_pool.resource_uuid)
        Rows Removed by Join Filter: 1
        ->  Index Scan using scanner_resource_pool_scanner_index on scanner_resource_pool  (cost=0.41..8.43 rows=1 width=115) (actual time=0.017..0.019 rows=1 loops=1)
              Index Cond: ((box_uuid = '5d8a7e0c-23ff-4853-bb6d-ffff6a38afa7'::text) AND (scanner_uuid = '9be9ac50-de05-4ddd-9545-ddddc484dce'::text))
        ->  Bitmap Heap Scan on job  (cost=228.22..244.23 rows=4 width=464) (actual time=239.790..239.791 rows=1 loops=1)
              Recheck Cond: ((box_uuid = '5d8a7e0c-23ff-4853-bb6d-ffff6a38afa7'::text) AND (stage = 'active'::text))
              Rows Removed by Index Recheck: 6
              Heap Blocks: exact=791
              ->  BitmapAnd  (cost=228.22..228.22 rows=4 width=0) (actual time=238.913..238.913 rows=0 loops=1)
                    ->  Bitmap Index Scan on job_box_status  (cost=0.00..55.04 rows=1398 width=0) (actual time=0.183..0.183 rows=899 loops=1)
                          Index Cond: (box_uuid = '5d8a7e0c-23ff-4853-bb6d-ffff6a38afa7'::text)
                    ->  Bitmap Index Scan on job_stage  (cost=0.00..172.93 rows=9666 width=0) (actual time=238.410..238.410 rows=2019444 loops=1)
                          Index Cond: (stage = 'active'::text)
  ->  Index Only Scan using uc_box_uuid on scanner  (cost=0.54..12.56 rows=1 width=87) (never executed)
        Index Cond: ((box_uuid = '5d8a7e0c-23ff-4853-bb6d-ffff6a38afa7'::text) AND (uuid = '9be9ac50-de05-4ddd-9545-ddddc484dce'::text))
        Heap Fetches: 0
Planning time: 1.274 ms
Execution time: 239.876 ms

1 Ответ

0 голосов
/ 31 мая 2019

Я нашел свой ответ, подтвердив с помощью AWS. Если автоочистка шла позади, результат EXPLAIN ANALYZE может показать это несоответствие.

...