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

时间:2016-10-06 10:00:59

标签: java leveldb

我尝试关闭数据库及其生成的所有已打开文件,但.sst文件仍处于打开状态。

  1. 什么是.sst个文件? (用于LevelDB)
  2. 关闭数据库后,为什么还能看到它们?
  3. 谁/什么关闭他们?
  4. 我想,经过几天的运行,我最终会得到org.iq80.leveldb.DBException: IO error: Too many open files例外!

2 个答案:

答案 0 :(得分:0)

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

您可以在Options中设置IO error: Too many open files,以便在打开数据库时避免ID

答案 1 :(得分:0)

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

<强> 2。关闭数据库后,为什么还能看到它们?
leveldb将文件存储在磁盘上,关闭数据库只意味着关闭句柄来操作它,而不是删除数据。就像你关闭mysql守护进程一样,你没有真正删除数据,你可以在重启时访问它。

第3。谁/什么关闭他们?
打开数据库实例并保存.sst文件的文件描述符的过程将关闭它们。

由于您可能关心标题中提出的问题,“levelDB:.sst文件仍然在关闭数据库后打开”,通常情况下,文件描述符将被关闭但不会关闭文件。如果它们仍然打开,请使用lsof查找打开它们的过程。