2016-10-06 6 views
1

Я попытался закрыть DB и все открытые файлы, созданные им, но файлы .sst по-прежнему открыты.levelDB: .sst файлы по-прежнему открыты после закрытия базы данных

  1. Что такое .sst? (для использования LevelDB)
  2. Почему я все еще вижу их после закрытия базы данных?
  3. Кто/что их закрывает?

Я думаю, что через несколько дней я получу org.iq80.leveldb.DBException: IO error: Too many open files исключение в конечном счете!

ответ

0

1. Что такое .sst-файлы? (для использования LevelDB)
.sst Предполагается хранить ваши данные на диске.

2. Почему я все еще вижу их после закрытия базы данных?
leveldb хранить файлы на диске, закрывать БД только означает закрыть дескриптор, чтобы управлять им, а не удалять данные. Подобно этому, когда вы отключили daemon mysql, вы действительно не удалили данные, вы можете получить к нему доступ при перезапуске.

3. Кто/что их закрывает?
Процесс, который открывает экземпляр db и удерживает дескриптор файла .sst, закроет их.

Как вы можете заботиться о проблеме, которую вы предложили в заголовке, «Файлы levelDB: .sst все еще открыты после закрытия базы данных», как правило, дескрипторы файлов будут закрыты, но не файл. Если они все еще открыты, используйте lsof, чтобы узнать, как их открыли.

0

Все sst-файлы будут закрыты после удаления обработчика DB. Но sst-файлы все еще находятся на вашем диске. Вы можете попробовать DestroyDB удалить все файлы db.

Вы можете установить max_open_files в Options, чтобы избежать IO error: Too many open files при открытии db.

+0

спасибо !! , но я не хочу удалять файлы leveldb. Я хочу снова открыть его. – user2302639