pub struct MemoryReport {Show 19 fields
pub live_node_count: usize,
pub live_relationship_count: usize,
pub node_tombstone_count: usize,
pub relationship_tombstone_count: usize,
pub nodes_bytes: usize,
pub relationships_bytes: usize,
pub outgoing_bytes: usize,
pub incoming_bytes: usize,
pub label_index_bytes: usize,
pub type_index_bytes: usize,
pub property_index_bytes: usize,
pub sorted_index_bytes: usize,
pub text_index_bytes: usize,
pub point_index_bytes: usize,
pub fulltext_index_bytes: usize,
pub vector_index_bytes: usize,
pub index_catalog_bytes: usize,
pub constraint_catalog_bytes: usize,
pub property_index_keys: Vec<PropertyIndexKeyUsage>,
}Expand description
Aggregated retained-heap breakdown of an [InMemoryGraph].
All fields are in bytes. usize was chosen over u64 so call
sites can use cargo bench reports and pretty-print without casts;
on 32-bit hosts a graph that overflowed this would already have
failed earlier.
Fields§
§live_node_count: usize§live_relationship_count: usize§node_tombstone_count: usize§relationship_tombstone_count: usize§nodes_bytes: usizenodes: Vec<Option<Arc<NodeRecord>>> — slot vector plus the
Arc headers plus deep payload of each live record (labels,
properties — see property_value_heap_bytes).
relationships_bytes: usizerelationships: Vec<Option<Arc<RelationshipRecord>>>.
outgoing_bytes: usizeoutgoing: Vec<Vec<RelationshipId>> — outer Vec capacity plus
the sum of each inner Vec’s capacity in bytes.
incoming_bytes: usizeSame for incoming.
label_index_bytes: usizenodes_by_label: BTreeMap<String, ChunkedVec<NodeId>>.
type_index_bytes: usizerelationships_by_type: BTreeMap<String, ChunkedVec<RelationshipId>>.
property_index_bytes: usizeHash-bucket property registry (find_*_by_property).
sorted_index_bytes: usizeSorted-range property index (RANGE catalog entries).
text_index_bytes: usizeTrigram TEXT indexes.
point_index_bytes: usizeSpatial grid POINT indexes.
fulltext_index_bytes: usizeFULLTEXT inverted indexes.
vector_index_bytes: usizeVECTOR indexes (Flat and HNSW backends).
index_catalog_bytes: usize§constraint_catalog_bytes: usize§property_index_keys: Vec<PropertyIndexKeyUsage>Per-key breakdown of Self::property_index_bytes: one entry per
active hash property index (node and relationship keys), with
whether a declaration keeps it active. Implicit (declared == false) entries were built by an equality lookup on an undeclared
key; they are not listed by SHOW INDEXES, live until the process
exits, and are not rebuilt on restart (the next lookup builds them
again). Sorted by entity, then key.
Implementations§
Source§impl MemoryReport
impl MemoryReport
Sourcepub fn graph_core_bytes(&self) -> usize
pub fn graph_core_bytes(&self) -> usize
Bytes attributable to the core graph shape: slabs, adjacency, and the label/type indexes. This is the floor every workload pays regardless of which secondary indexes are installed.
Sourcepub fn secondary_index_bytes(&self) -> usize
pub fn secondary_index_bytes(&self) -> usize
Bytes attributable to secondary indexes — the amount that would be reclaimed by dropping every index.
Sourcepub fn implicit_property_index_keys(
&self,
) -> impl Iterator<Item = &PropertyIndexKeyUsage>
pub fn implicit_property_index_keys( &self, ) -> impl Iterator<Item = &PropertyIndexKeyUsage>
Active hash property index keys that no declaration covers.
Sourcepub fn implicit_property_index_bytes(&self) -> usize
pub fn implicit_property_index_bytes(&self) -> usize
Estimated bytes held by implicit (lookup-activated) hash property
indexes: the part of Self::property_index_bytes nothing declared.
pub fn catalog_bytes(&self) -> usize
pub fn total_bytes(&self) -> usize
Sourcepub fn bytes_per_live_node(&self) -> f64
pub fn bytes_per_live_node(&self) -> f64
Average retained bytes per live node, including its share of the slab tombstone overhead. Returns 0 when there are no nodes.