levelDB:.sst 文件在关闭 DB 后仍然打开

levelDB: .sst files are still opened after closing DB

我试图关闭 DB 和它生成的所有打开的文件,但是 .sst 个文件仍然打开。

  1. 什么是 .sst 文件? (供 LevelDB 使用)
  2. 为什么我关闭数据库后仍然看到它们?
  3. Who/what 关闭它们?

我想几天后运行我最终会得到org.iq80.leveldb.DBException: IO error: Too many open files异常!

删除数据库处理程序后将关闭所有 sst 文件。 但是 sst 文件仍在您的磁盘上。您可以尝试 DestroyDB 删除所有数据库文件。

您可以在Options中设置max_open_files以避免打开数据库时出现IO error: Too many open files

1.什么是 .sst 文件? (供 LevelDB 使用)
.sst 应该将您的数据存储在磁盘上。

2。为什么我关闭数据库后仍然看到它们?
leveldb 将文件存储在磁盘上,关闭数据库只是关闭操作它的句柄,而不是删除数据。就像你关闭mysql daemon时,你并没有真正删除数据,重新启动时你可以访问它。

3。 Who/what 关闭它们?
打开数据库实例并保存 .sst 个文件的文件描述符的进程将关闭它们。

您可能关心您在标题中提出的问题,"levelDB: .sst files are still opened after closing DB",通常情况下,文件描述符会被关闭,但文件不会被关闭。如果它们仍然打开,请使用 lsof 找出打开它们的进程。