explain.depesz.com

PostgreSQL's explain analyze made readable

Result: fHMj

Settings
# exclusive inclusive rows x rows loops node
1. 0.066 53.826 ↑ 1.0 12 1

Nested Loop Left Join (cost=62.67..534.70 rows=12 width=157) (actual time=8.903..53.826 rows=12 loops=1)

  • Output: internal_volume.id, internal_volume.name, internal_volume.type, internal_volume.appliance_id, perfmetrics."timestamp", COALESCE(perfmetrics.avg_latency, '0'::real), COALESCE(perfmetrics.total_iops, '0'::real), COALESCE(perfmetrics.total_bandwidth, '0'::real), internal_volume.size, COALESCE(smv.logical_used, '0'::bigint), COALESCE(smv.thin_savings, '0'::real), COALESCE(smvf.unique_physical_used, '0'::bigint), COALESCE(smvf.shared_logical_used, '0'::bigint), COALESCE(smvf.snap_clone_logical_used, '0'::bigint), COALESCE(smvf.snapshot_savings, '0'::numeric)
  • internal_volume.dummy
2. 0.060 33.168 ↑ 1.0 12 1

Nested Loop Left Join (cost=62.42..354.33 rows=12 width=105) (actual time=6.067..33.168 rows=12 loops=1)

  • Output: internal_volume.id, internal_volume.name, internal_volume.type, internal_volume.appliance_id, internal_volume.size, internal_volume.datapath_family_id, perfmetrics."timestamp", perfmetrics.avg_latency, perfmetrics.total_iops, perfmetrics.total_bandwidth, smv.logical_used, smv.thin_savings
  • Inner Unique: true
3. 0.037 28.596 ↑ 1.0 12 1

Hash Left Join (cost=62.01..253.14 rows=12 width=93) (actual time=5.652..28.596 rows=12 loops=1)

  • Output: internal_volume.id, internal_volume.name, internal_volume.type, internal_volume.appliance_id, internal_volume.size, internal_volume.datapath_family_id, perfmetrics."timestamp", perfmetrics.avg_latency, perfmetrics.total_iops, perfmetrics.total_bandwidth
  • Hash Cond: (internal_volume.id = protection_data.volume_id)
4. 0.048 28.555 ↑ 1.0 12 1

Nested Loop Left Join (cost=47.73..238.81 rows=12 width=93) (actual time=5.637..28.555 rows=12 loops=1)

  • Output: internal_volume.id, internal_volume.name, internal_volume.type, internal_volume.appliance_id, internal_volume.size, internal_volume.datapath_family_id, perfmetrics."timestamp", perfmetrics.avg_latency, perfmetrics.total_iops, perfmetrics.total_bandwidth
5. 0.704 2.347 ↑ 1.0 12 1

Bitmap Heap Scan on internal.internal_volume (cost=47.48..87.96 rows=12 width=73) (actual time=1.655..2.347 rows=12 loops=1)

  • Output: internal_volume.id, internal_volume.wwn, internal_volume.name, internal_volume.description, internal_volume.type, internal_volume.appliance_id, internal_volume.is_read_only, internal_volume.state, internal_volume.size, internal_volume.platform_volume_id, internal_volume.import_metadata, internal_volume.creation_timestamp, internal_volume.protection_policy_id, internal_volume.performance_policy_id, internal_volume.migration_session_id, internal_volume.datapath_volume_id, internal_volume.is_replication_destination, internal_volume.datapath_family_id, internal_volume.storage_type, internal_volume.sector_size, internal_volume.is_internal, internal_volume.is_importing, internal_volume.node_affinity, internal_volume.platform_volume_guid, internal_volume.is_user_selected_placement, internal_volume.nsid, internal_volume.nguid, internal_volume.is_faulted,
  • Recheck Cond: (internal_volume.id = ANY ('{54870068-dbf7-49f2-ab83-6c489c6a61f8,c2700ccb-25a7-4199-8161-349a1032f57a,8ee5347f-a94c-40c4-be0a-e446bda7c6e3,6af34c01-bd71-4d39-bb5d-272bda21d1b1,f60906e6-4323-4e28-a5a0-4e098b001da4,e75deed4-6b69-4319-ac9f-d407d137c7f5,ed26b306-c7b2-4c86-96dc-d7a1a1ba0359,cecbe32d-f856-46c1-8a03-ef9b22f34210,a3269736-0e04-408c-9d3a-97f055135bf6,015f8dea-be69-4a36-ab1c-6fdac0057280,74649159-af0c-49c9-acf3-1566e4df3909,2f971096-ba81-4550-b025-018272557ceb}'::text[]))
  • Filter: ((NOT internal_volume.is_internal) AND (internal_volume.type <> 'Snapshot'::managementmodel.storage_resource_type) AND (internal_volume.storage_type = 'Block'::text))
  • Heap Blocks: exact=11
6. 1.643 1.643 ↑ 1.0 12 1

Bitmap Index Scan on internal_volume_pkey (cost=0.00..47.48 rows=12 width=0) (actual time=1.643..1.643 rows=12 loops=1)

  • Index Cond: (internal_volume.id = ANY ('{54870068-dbf7-49f2-ab83-6c489c6a61f8,c2700ccb-25a7-4199-8161-349a1032f57a,8ee5347f-a94c-40c4-be0a-e446bda7c6e3,6af34c01-bd71-4d39-bb5d-272bda21d1b1,f60906e6-4323-4e28-a5a0-4e098b001da4,e75deed4-6b69-4319-ac9f-d407d137c7f5,ed26b306-c7b2-4c86-96dc-d7a1a1ba0359,cecbe32d-f856-46c1-8a03-ef9b22f34210,a3269736-0e04-408c-9d3a-97f055135bf6,015f8dea-be69-4a36-ab1c-6fdac0057280,74649159-af0c-49c9-acf3-1566e4df3909,2f971096-ba81-4550-b025-018272557ceb}'::text[]))
7. 26.160 26.160 ↓ 0.0 0 12

Function Scan on metrics.get_latest_pmv_for_volume_from_local_dedupe perfmetrics (cost=0.25..12.75 rows=5 width=52) (actual time=2.180..2.180 rows=0 loops=12)

  • Output: perfmetrics.volume_id, perfmetrics."timestamp", perfmetrics.avg_latency, perfmetrics.total_iops, perfmetrics.total_bandwidth
  • Function Call: metrics.get_latest_pmv_for_volume_from_local_dedupe(internal_volume.id)
  • Filter: (perfmetrics.volume_id = internal_volume.id)
8. 0.001 0.004 ↓ 0.0 0 1

Hash (cost=11.90..11.90 rows=190 width=32) (actual time=0.004..0.004 rows=0 loops=1)

  • Output: protection_data.volume_id
  • Buckets: 1,024 Batches: 1 Memory Usage: 8kB
9. 0.003 0.003 ↓ 0.0 0 1

Seq Scan on internal.protection_data (cost=0.00..11.90 rows=190 width=32) (actual time=0.003..0.003 rows=0 loops=1)

  • Output: protection_data.volume_id
10. 4.512 4.512 ↑ 1.0 1 12

Index Scan using latest_space_metrics_by_volume_pkey on metrics.latest_space_metrics_by_volume smv (cost=0.41..8.43 rows=1 width=49) (actual time=0.376..0.376 rows=1 loops=12)

  • Output: smv.volume_id, smv.logical_used, smv.thin_savings
  • Index Cond: (smv.volume_id = internal_volume.id)
11. 20.592 20.592 ↓ 0.0 0 12

Function Scan on metrics.get_latest_smvf_for_volume_from_local_dedupe smvf (cost=0.25..15.25 rows=1 width=92) (actual time=1.716..1.716 rows=0 loops=12)

  • Output: smvf.appliance_id, smvf.datapath_snap_group_id, smvf.shared_logical_used, smvf.unique_physical_used, smvf.snapshot_savings, smvf.snap_clone_logical_used
  • Function Call: metrics.get_latest_smvf_for_volume_from_local_dedupe(internal_volume.id)
  • Filter: ((smvf.datapath_snap_group_id = internal_volume.datapath_family_id) AND ((smvf.appliance_id)::text = internal_volume.appliance_id))