Optimize rocksdb

This commit is contained in:
2025-10-26 01:31:57 +08:00
parent 9f6c81471e
commit da3acaaacb
6 changed files with 60 additions and 31 deletions

View File

@@ -1,5 +1,5 @@
use crate::constants::{APP_DB_DATA_DIR, DB_COLUMNS};
use rocksdb::{ColumnFamilyDescriptor, IteratorMode, OptimisticTransactionDB, Options};
use rocksdb::{ColumnFamilyDescriptor, IteratorMode, OptimisticTransactionDB, Options, ReadOptions};
use serde::{Serialize};
use serde::de::DeserializeOwned;
use crate::models::RocksColumn;
@@ -63,8 +63,10 @@ impl RocksDB {
where TColumn: RocksColumn + DeserializeOwned
{
let cf = self.db.cf_handle(TColumn::get_column_name().as_str()).unwrap();
let values = self.db.iterator_cf(&cf, IteratorMode::Start)
.filter_map(|res| res.ok())
let mut options = ReadOptions::default();
options.set_async_io(true);
let values = self.db.iterator_cf_opt(&cf, options, IteratorMode::Start)
.filter_map(Result::ok)
.map(|(k, v)|
(
serde_json::from_slice::<TColumn::Id>(&k).unwrap(),