use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct StoreMemory {
pub total_bytes: usize,
pub nodes_bytes: usize,
pub edges_bytes: usize,
pub node_properties_bytes: usize,
pub edge_properties_bytes: usize,
pub property_column_count: usize,
}
impl StoreMemory {
pub fn compute_total(&mut self) {
self.total_bytes = self.nodes_bytes
+ self.edges_bytes
+ self.node_properties_bytes
+ self.edge_properties_bytes;
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct IndexMemory {
pub total_bytes: usize,
pub forward_adjacency_bytes: usize,
pub backward_adjacency_bytes: usize,
pub label_index_bytes: usize,
pub node_labels_bytes: usize,
pub property_index_bytes: usize,
pub vector_indexes: Vec<NamedMemory>,
pub text_indexes: Vec<NamedMemory>,
}
impl IndexMemory {
pub fn compute_total(&mut self) {
self.total_bytes = self.forward_adjacency_bytes
+ self.backward_adjacency_bytes
+ self.label_index_bytes
+ self.node_labels_bytes
+ self.property_index_bytes
+ self.vector_indexes.iter().map(|v| v.bytes).sum::<usize>()
+ self.text_indexes.iter().map(|t| t.bytes).sum::<usize>();
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct NamedMemory {
pub name: String,
pub bytes: usize,
pub item_count: usize,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct MvccMemory {
pub total_bytes: usize,
pub node_version_chains_bytes: usize,
pub edge_version_chains_bytes: usize,
pub average_chain_depth: f64,
pub max_chain_depth: usize,
}
impl MvccMemory {
pub fn compute_total(&mut self) {
self.total_bytes = self.node_version_chains_bytes + self.edge_version_chains_bytes;
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct StringPoolMemory {
pub total_bytes: usize,
pub label_registry_bytes: usize,
pub edge_type_registry_bytes: usize,
pub label_count: usize,
pub edge_type_count: usize,
}
impl StringPoolMemory {
pub fn compute_total(&mut self) {
self.total_bytes = self.label_registry_bytes + self.edge_type_registry_bytes;
}
}