Bitcoin-Core

BitCoin Core 的 debug.log 中的這些記憶體配置代表什麼?

  • May 24, 2021

在BitCoin Core的debug.log文件中,記憶體配置描述如下。

Cache configuration:
 Using 2.0 MiB for block index database
 Using 8.0 MiB for chain state database
 Using 441.0 MiB for in-memory UTXO set (plus up to 286.1 MiB of unused mempool space)

這里分配給chainstate數據庫的8MB記憶體空間是乾什麼用的?它與記憶體中的 UTXO 集有什麼區別和聯繫?

區塊索引和鏈狀態數據庫是 LevelDB 數據庫。LevelDB 有自己的記憶體和記憶體管理。因此,為塊索引的 LevelDB 數據庫記憶體分配了 2 MiB,為鏈狀態的 LevelDB 數據庫記憶體分配了 8 MiB。

然而,Bitcoin Core 本身會進行額外的記憶體,特別是對於儲存在鏈狀態數據庫中的 UTXO 集。因此,Bitcoin Core 也為自己分配了 441 MiB 來管理 UTXO 集條目的記憶體。

不同之處在於,LevelDB 將組織其記憶體與 Bitcoin Core 的記憶體中 UTXO 集不同,因為 LevelDB 是一個數據庫系統。因此,它針對數據處理進行了優化,並具有適用於各種數據庫用途的策略。然而,Bitcoin Core 知道它將哪些數據放入數據庫,因此它可以更有效地記憶體這些數據。它在需要序列化並寫入數據庫之前記憶體數據。因為比特幣核心知道數據將如何被使用,它通過記憶體中的 UTXO 集記憶體可以針對實際案例進行優化。

引用自:https://bitcoin.stackexchange.com/questions/104902