@@ -219,6 +219,13 @@ class _CStats(Structure):
219219 ("level_sizes" , POINTER (c_size_t )),
220220 ("level_num_sstables" , POINTER (c_int )),
221221 ("config" , POINTER (_CColumnFamilyConfig )),
222+ ("total_keys" , c_uint64 ),
223+ ("total_data_size" , c_uint64 ),
224+ ("avg_key_size" , c_double ),
225+ ("avg_value_size" , c_double ),
226+ ("level_key_counts" , POINTER (c_uint64 )),
227+ ("read_amp" , c_double ),
228+ ("hit_rate" , c_double ),
222229 ]
223230
224231
@@ -457,6 +464,13 @@ class Stats:
457464 memtable_size : int
458465 level_sizes : list [int ]
459466 level_num_sstables : list [int ]
467+ total_keys : int
468+ total_data_size : int
469+ avg_key_size : float
470+ avg_value_size : float
471+ level_key_counts : list [int ]
472+ read_amp : float
473+ hit_rate : float
460474 config : ColumnFamilyConfig | None = None
461475
462476
@@ -705,6 +719,7 @@ def get_stats(self) -> Stats:
705719
706720 level_sizes = []
707721 level_num_sstables = []
722+ level_key_counts = []
708723
709724 if c_stats .num_levels > 0 :
710725 if c_stats .level_sizes :
@@ -713,6 +728,9 @@ def get_stats(self) -> Stats:
713728 if c_stats .level_num_sstables :
714729 for i in range (c_stats .num_levels ):
715730 level_num_sstables .append (c_stats .level_num_sstables [i ])
731+ if c_stats .level_key_counts :
732+ for i in range (c_stats .num_levels ):
733+ level_key_counts .append (c_stats .level_key_counts [i ])
716734
717735 config = None
718736 if c_stats .config :
@@ -745,6 +763,13 @@ def get_stats(self) -> Stats:
745763 memtable_size = c_stats .memtable_size ,
746764 level_sizes = level_sizes ,
747765 level_num_sstables = level_num_sstables ,
766+ total_keys = c_stats .total_keys ,
767+ total_data_size = c_stats .total_data_size ,
768+ avg_key_size = c_stats .avg_key_size ,
769+ avg_value_size = c_stats .avg_value_size ,
770+ level_key_counts = level_key_counts ,
771+ read_amp = c_stats .read_amp ,
772+ hit_rate = c_stats .hit_rate ,
748773 config = config ,
749774 )
750775
0 commit comments