Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

提供碎片化率统计功能 #1665

Closed
chejinge opened this issue Jun 30, 2023 · 3 comments · Fixed by #1736
Closed

提供碎片化率统计功能 #1665

chejinge opened this issue Jun 30, 2023 · 3 comments · Fixed by #1736
Assignees

Comments

@chejinge
Copy link
Collaborator

因高碎片率会造成读效率大幅度下降,删除数据后空间不释放或者应用响应耗时增大

@yaoyinnan
Copy link
Contributor

From ChatGPT:

要评估 RocksDB 的碎片化率,可以使用以下方法之一:

利用 RocksDB 的工具和选项:RocksDB 提供了一些工具和选项,用于评估碎片化率。你可以使用 DB::GetIntProperty("rocksdb.cur-size-all-mem-tables") 来获取当前所有内存表的大小。较大的内存表大小可能表明存在较高的碎片化率。此外,你可以使用 DB::GetIntProperty("rocksdb.estimate-live-data-size") 来获取活跃数据的估计大小。如果这个值与存储空间的总大小相比较小,可能表示存在较高的碎片化。
观察 SST 文件的大小和数量:RocksDB 将数据存储在 SST 文件中。观察 SST 文件的大小和数量可以提供一些关于碎片化的线索。较小的文件和较大的文件数量可能暗示着碎片化问题。
使用 RocksDB 的统计信息:RocksDB 提供了一些统计信息,例如 DB::GetIntProperty("rocksdb.num-snapshots") 和 DB::GetIntProperty("rocksdb.estimate-table-readers-mem"),可以帮助评估碎片化率。较大的快照数量和表读取器内存占用可能与碎片化有关。
监控 I/O 停顿和性能指标:由于碎片化可能导致更多的磁盘访问和性能下降,监控 RocksDB 的 I/O 停顿次数(例如 io_stalls 监控项)和性能指标(例如读写速率)可能也可以提供一些关于碎片化程度的信息。
请注意,这些方法仅提供了一些指标和线索来评估碎片化率,并不能给出准确的度量。RocksDB 还提供了一些高级工具和选项,例如 DB::GetIntProperty("rocksdb.estimate-num-keys") 和 DB::GetIntProperty("rocksdb.estimate-pending-compaction-bytes"),可以提供更准确的碎片化率评估和存储统计信息。你可以根据具体需求和情况选择适合的方法进行评估。

@yaoyinnan
Copy link
Contributor

From ChatGPT:

estimate_pending_compaction_bytes 是 RocksDB 中的一个指标,用于估计待处理的压缩字节数。它表示在压缩操作中尚未处理的字节数。

当 RocksDB 执行压缩(Compaction)操作时,它会将数据从一个或多个层级(Levels)移动到更高的层级,并重新组织数据以减少存储碎片和提高读取性能。在压缩期间,旧的 SST 文件将被重新组织和重写,新的 SST 文件将被创建。

estimate_pending_compaction_bytes 指标反映了尚未处理的压缩字节数,也就是还没有进行压缩的数据量。这些数据可能处于压缩操作的等待队列中,或者由于其他原因尚未被处理。

通过监控和跟踪 estimate_pending_compaction_bytes 指标,可以了解 RocksDB 中待处理压缩数据的大小。如果这个值持续增长,可能表示压缩操作的处理速度不足,需要调整 RocksDB 的配置或增加系统资源以加快压缩速度。

请注意,estimate_pending_compaction_bytes 是一个估计值,可能不是精确的字节数。它提供了一个近似的指标,用于监控待处理的压缩数据量的趋势和规模。

yaoyinnan added a commit to yaoyinnan/pika that referenced this issue Jul 15, 2023
…tation rate

Add estimate_pending_compaction_bytes metric to analyze fragmentation rate.

Fixes: OpenAtomFoundation#1665

Signed-off-by: yaoyinnan <[email protected]>
@yaoyinnan yaoyinnan self-assigned this Jul 15, 2023
yaoyinnan added a commit to yaoyinnan/pika that referenced this issue Jul 15, 2023
…tation rate

Add estimate_pending_compaction_bytes metric to analyze fragmentation rate.

Fixes: OpenAtomFoundation#1665

Signed-off-by: yaoyinnan <[email protected]>
AlexStocks pushed a commit that referenced this issue Jul 17, 2023
…tation rate (#1736)

Add estimate_pending_compaction_bytes metric to analyze fragmentation rate.

Fixes: #1665

Signed-off-by: yaoyinnan <[email protected]>
@yaoyinnan
Copy link
Contributor

已完成,可以使用rocksdb的estimate_pending_compaction_bytes来判断是否有碎片

bigdaronlee163 pushed a commit to bigdaronlee163/pika that referenced this issue Jun 8, 2024
…tation rate (OpenAtomFoundation#1736)

Add estimate_pending_compaction_bytes metric to analyze fragmentation rate.

Fixes: OpenAtomFoundation#1665

Signed-off-by: yaoyinnan <[email protected]>
cheniujh pushed a commit to cheniujh/pika that referenced this issue Sep 24, 2024
…tation rate (OpenAtomFoundation#1736)

Add estimate_pending_compaction_bytes metric to analyze fragmentation rate.

Fixes: OpenAtomFoundation#1665

Signed-off-by: yaoyinnan <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants